Adonis China: 제 가 왜 AdonisJs 를 선 택 했 죠?

4641 단어
원본 주소:https://adonis-china.org/posts/2
머리말
Laravel 을 사용 한 지 오래 되 었 습 니 다. 각종 코드 생 성 도구, 각종 Eloquent 관련 작업, 각종 위 챗, 결제 플러그 인, 그리고 Larvel - admin 확장 과 함께 배경 을 쓰 는 것 이 정말 시원 합 니 다.하지만 PHP + Javascript 이 우아 하지 않다 는 생각 에 최근 AdonisJs - NodeJs 버 전의 Laravel 을 괴 롭 혔 다.
사실 오래전 에 도 MEAN 과 Sails 를 시 도 했 지만, Laravel 의 사상 이 뿌리 깊 어 관심 이 없 었 다.그리고 NodeJs 의 시장 은 원래 물고기 와 용이 뒤 섞 여 있 고 모든 프레임 에 자신의 사상 이 있 기 때문에 Laravel 의 Node 실현 을 찾 고 있 었 기 때문에 AdonisJs 와 떼 려 야 뗄 수 없 는 인연 을 맺 었 다.
자 바스 크 립 트 가 PHP 보다 우세 합 니 다.
PHP 에 비해 전체 스 택 개발 에 있어 서 NodeJs 는 천연 적 인 장점 이 있 습 니 다.
  • 모두 npm 로 확장 을 설치 하고 전단 프로 그래 밍 언어 와 통일 (쓸데없는 말)
  • 일부 라 이브 러 리 전후 단 은 모두 사용 할 수 있다 (예 를 들 어 axios, underscore)
  • 환경 이 더욱 간단 합 니 다. 새 기계 다음 NodeJs 는 타 오 바 오 미 러 를 설치 하면 됩 니 다. 다른 많은 명령 행 도 구 는 npm 로 설치 할 수 있 습 니 다
  • "천하 대세, 합 구 필 분, 분 구 필 합" 이 라 서 추세 발견 이 중요 하 다
  • PC 와 모 바 일 브 라 우 저 는 최초의 백화 제 에서 현재 웹 키 트 일가 만 의 크기
  • 모 바 일 앱 은 여러 장면 에서 혼합 모드 앱 에 의 해 통일 되 었 기 때문에 지금 은 H5 를 전혀 가지 고 있 지 않 은 앱 을 보기 어렵다
  • .
  • NW. js 의 몰락 과 Electron 의 발흥 으로 js 가 데스크 톱 에서 자 리 를 잡 았 다
  • 데스크 톱 엔 드 리 눅 스 마저 우 분투 에 의 해 거의 통일 되 었 다
  • 자 바스 크 립 트 는 서버, WEB 엔 드, 데스크 톱 엔 드, 앱 클 라 이언 트 를 할 수 있 지만 세계 최고의 PHP 는 힘 에 부친 다.

  • AdonisJs 의 강점
  • Laravel 과 완전히 일치 하 는 사고방식 은 논리 적 으로 나 코드 적 으로 모두 Laravel 에서 부 드 럽 게 이동 할 수 있다.이것 은 앞으로 의 확장, 플러그 인 등 주변 보완 에 매우 중요 합 니 다!
  • MEAN, Express, Koa 등 프레임 워 크 에 비해 AdonisJs 는 하나의 솔 루 션 으로 이것저것 긁 어 모 은 느낌 이 들 지 않 는 다.그리고 절차 가 뚜렷 하고 사고방식 이 규범화 되 어 소 규모 기업 급 개발 에 더욱 적합 하 다.
  • meter, sailsJs 등 다른 진정한 '스 택' 프레임 워 크 에 비해 AdonisJs 는 Vuejs 와 같은 점진 적 이다.자유도 가 높 고 입문 이 간단 하 며 기 존의 상황 에서 이전 비용 이 더 낮다.
  • 코드 생 성, ORM, 경로, JWT, WebSocket 이 모두 편리 하 다.

  • 시작 하 다
    설치 하 다.
    
    npm i -g adonis-cli
    adonis new blog --skip-install
    cd blog
    cnpm install
    npm run serve:dev
    

    이렇게 해서 당신 의 첫 번 째 adonisjs 프로젝트 가 시작 되 었 습 니 다. 브 라 우 저 를 방문 해 보 세 요.
    RMVC (경로 - 모델 - 보기 - 컨트롤 러)
    어, 이것 은 내 가 발명 한 단어 야.나 는 MVC 모드 에서 도 경로 가 중요 하 다 고 생각해 서 스스로 R 을 추가 했다.
    경로app/Http/routes.js 안의 길 은 Laravel 과 거의 같다.직접 논리 와 컨트롤 러 를 가리 키 는 방법 을 지원 합 니 다. 주의해 야 할 것 은 매개 변수의 주입 을 지원 하지 않 습 니 다.렌 더 링 보기 라면 개 를 추가 해 야 합 니 다 yield
    
    const Route = use('Route')
    
    Route.get('users/:id', function * (request, response) {
      const id = request.param('id')
      response.send(` ,         ID: ${id}`)
    })
    
    Route.group('version1', function () {
      Route.get('users', function * (request, response) {
        // ...
      })
    }).prefix('api/v1')
    
    Route
      .get('users/:id', 'UserController.show')
      .as('profile')
    
    Route.get('about', function * (request, response) {
      yield response.sendView('about')
    })
    
    

    컨트롤 러
    Laravel 과 유사 한 artisan 명령 ace 을 사용 할 수 있 습 니 다. windows 에서 사용 해 야 합 니 다 node ace
    ./ace make:controller Home
    #  
    ./ace make:controller User --resource
    

    UserController:
    const User = use('App/Model/User')
    
    class UsersController {
    
      * index (request, response) {
        const users = yield User.all()
        yield response.sendView('users', { users: users.toJSON() })
      }
    }
    

    아니면 Laravel 과 비슷 한 지 주의해 야 할 것 은 AdonisJs 에 PHP 를 모 의 하 는 use 방법 이 있 습 니 다. 각종 가방 과 모델 을 가 져 오 는 데 사 용 됩 니 다.Controller 의 방법 은 생 성기 방법 을 사용 해 야 합 니 다. 거의 모든 데이터 베 이 스 를 조회 할 때 use 를 사용 해 야 합 니 다. 위 에서 말 한 것 처럼 렌 더 링 보기 도 사용 해 야 합 니 다 yield.
    보기
    명령 생 성 보기:
    ./ace make:view welcome
    
    # create: resources/views/welcome.njk
    

    템 플 릿 문법 은 twig 와 유사 한 nunjuncks 를 사용 하 는데 Laravel 의 blade 와 도 비슷 합 니 다.
    {% if user.age %}
      You are {{ user.age }} years old.
    {% endif %}
    

    문법 이 뛰어나다.
    편집기 / IDE 에 nunjucks 템 플 릿 의 문법 하 이 라이트 플러그 인 을 설치 해 야 합 니 다. 편집기 에 nunjucks 템 플 릿 문법 하 이 라이트 플러그 인 이 없다 면 twig 템 플 릿 하 이 라이트 플러그 인 으로 대체 할 수 있 습 니 다.
    모형.
    모델 생 성
    ./ace make:model User
    
    #           ,-m  
    ./ace make:model User --migration
    

    생 성 된 모습:
    app/Model/User.js
    'use strict'
    
    const Lucid = use('Lucid')
    
    class User extends Lucid {
    }
    

    관건 은 관련 에 있다.
    class Book extends Lucid {
    
      chapters () {
        return this.hasMany('App/Model/Chapter')
      }
    
    }
    

    Laravel 을 배 웠 으 니 머리 없 이 시도 해 보 세 요.그러나 현재 다 중 yield 까지 만 지원 되 며, Laravel Eloquent 의 다 중 연결 은 지원 되 지 않 습 니 다.
    됐다.
    어서 가서 시험 해 보 세 요. 어떤 문제 가 있 으 면 바로 대답 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기