Adonis China: 제 가 왜 AdonisJs 를 선 택 했 죠?
머리말
Laravel 을 사용 한 지 오래 되 었 습 니 다. 각종 코드 생 성 도구, 각종 Eloquent 관련 작업, 각종 위 챗, 결제 플러그 인, 그리고 Larvel - admin 확장 과 함께 배경 을 쓰 는 것 이 정말 시원 합 니 다.하지만 PHP + Javascript 이 우아 하지 않다 는 생각 에 최근 AdonisJs - NodeJs 버 전의 Laravel 을 괴 롭 혔 다.
사실 오래전 에 도 MEAN 과 Sails 를 시 도 했 지만, Laravel 의 사상 이 뿌리 깊 어 관심 이 없 었 다.그리고 NodeJs 의 시장 은 원래 물고기 와 용이 뒤 섞 여 있 고 모든 프레임 에 자신의 사상 이 있 기 때문에 Laravel 의 Node 실현 을 찾 고 있 었 기 때문에 AdonisJs 와 떼 려 야 뗄 수 없 는 인연 을 맺 었 다.
자 바스 크 립 트 가 PHP 보다 우세 합 니 다.
PHP 에 비해 전체 스 택 개발 에 있어 서 NodeJs 는 천연 적 인 장점 이 있 습 니 다.
npm
로 확장 을 설치 하고 전단 프로 그래 밍 언어 와 통일 (쓸데없는 말) AdonisJs 의 강점
시작 하 다
설치 하 다.
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 의 다 중 연결 은 지원 되 지 않 습 니 다.됐다.
어서 가서 시험 해 보 세 요. 어떤 문제 가 있 으 면 바로 대답 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.