Laavel 레이크에 쓸 수 있는 node.js 프레임워크 "Adonis"소개

인터넷 서핑하면 재밌는 노드.js의 프레임워크를 찾았기 때문에 소개해 드릴게요.
그 이름은'아도니스'야.
유래가 깊다.js에 관심이 있지만 업무 중에 사용하지 않았습니다
그리고 js 자체가 못하는 의식이 있어서 망설였어요.
그때 나는 이쪽의 보도를 발견했다.
라벨 레이크의 노드.js의 프레임워크 "adonis.js"
http://co.bsnws.net/article/25
뜻밖에도만약 js가 라벨의 기술 방식으로 쓸 수 있다면...
평소 라벨을 이용한 개발이라 충격적이었다.
그리고 실제로 접촉한 곳은 기본적으로 라벨과 같은 느낌으로 썼고 프로그램을 간단하게 완성해서 감동적이었어요!
그래서 라벨과 비교하면서 소개한다.
다만, node.js와 js에 관해서는 문외한이기 때문에 약간 이상한 글을 쓴 부분이 있을 수 있습니다.
지적이 있으면 메시지를 남겨 주세요.
이번에 사용한 Adonis의 버전은 최신 버전의 2.0.9입니다.

설치하다.


npm에서 설치합니다.
npm install -g adonis-cli
설치가 완료되면 adonis 명령을 사용할 수 있습니다
adonis new プロジェクト名
프로젝트는 이렇게 완성되었다.
아주 간단합니다.

시작 후 브라우저에서 확인


프로젝트 루트에 들어간 후 npm start를 누르면 시작합니다.
초기 설정이면localhost:333을 통해 접근할 수 있습니다.
그리고 최초의 화면은 이런 느낌이었다.

「Everything has beauty, but not everyone sees it.」
이 글을 검색하면 상당히 잘 팔리기 때문에 비교적 유명한 말인가.
구글 번역
"모든 것이 아름답다. 하지만 누구나 알아차리는 것은 아니다."
그렇다고 들었습니다.

env 사용 가능


처음에 설정한 값은 이런 느낌입니다.
그리고 Dotenv를 찾아봤는데 다양한 언어를 사용할 수 있어요.몰라요.
.env
APP_PORT=3333
APP_HOST=0.0.0.0
SESSION_DRIVER=cookie
NODE_ENV=development
CACHE_VIEWS=true
APP_KEY=個別に設定されるキー

디렉토리 구조


공식 홈페이지에도 기재되어 있는데, 여기도 인용하여 게재할 것이다.
├── app/
│ ├── Commands/
│ ├── Http/
│ │ ├── Controllers/
│ │ ├── Middleware/
│ │ ├── routes.js
│ │ ├── kernel.js
│ ├── Model/
│ ├── Services/
├── bootstrap/
│ ├── app.js
│ ├── http.js
│ ├── kernel.js
│ ├── start.js
├── config/
├── migrations/
├── public/
├── providers/
├── resources/
│ ├── views
├── storage/
│── .env
│── ace
│── server.js
│── package.json
Laavel 5와 동일한 구성.

경로


app/Http/routes.js에 기술하다.
php가 js로 바뀌었을 뿐입니다.
app/Http/routes.js
'use strict'

/*
|--------------------------------------------------------------------------
| Routes
|--------------------------------------------------------------------------
|
| Routes helps you in defining http endpoints/urls which will be used
| by outside world to interact with your application. Adonis has a
| lean and rich router to support various options out of the box.
|
*/
const Route = use('Route')

Route.get('/', 'HomeController.index')

내용도 비슷해서 깜짝 놀랐어요.
그리고 중간부품과 where 조리개, 이름이 있는 코스 등은 라벨이 할 수 있는 일로 대체로 할 수 있다.

중간부품


이곳도 Laravel과 마찬가지로 전 세계와 이름이 있는 중간부품을 등록할 수 있다.
새로 제작된 중간부품은 app/Http/kernel입니다.js에 등록합니다.
또한 표준적인 전 세계에서 csrf의 중간부품이 등록된 곳도 마찬가지다.
다만 조금 다른 것은 이름이 샤일드라는 것이다.
app/Http/kernel.js
'use strict'

const Middleware = use('Middleware')

/*
|--------------------------------------------------------------------------
| Global Middleware
|--------------------------------------------------------------------------
|
| Global middleware are executed on every request and must be defined
| inside below array.
|
*/
const globalMiddleware = [
  'Adonis/Middleware/Cors',
  'Adonis/Middleware/BodyParser',
  'Adonis/Middleware/Shield',
  'Adonis/Middleware/Flash'
]

//省略

컨트롤러


app/Http/Controllers 아래에서 만듭니다.
설치 후 Home Controller가 샘플로 사용됩니다.js를 만들고 있습니다.
app/Http/HomeController.js
'use strict'

class HomeController{
    * index (request, response){
        const index = yield response.view('index')
        response.send(index)
    }
}
yield response.view("index")를 사용하여 템플릿을 지정합니다.
또 하나의 주의점은 점기법을 사용할 수 없다는 것이다.
디렉토리는 슬래시 구분자로 지정됩니다.

ace 명령


Laavel의 artisan 명령과 같습니다.
다만, 마이그레이션과 메이크의 연관성이 조금 있을 뿐이다.
명령 목록
Options
--help       Get help for all ace commands
--version    Get framework version

Available Commands
greet
 greet:user    I will greet a user

migration
 migration:make        Create a new migration file
 migration:run         Run latest migrations
 migration:rollback    Rollback migrations executed in last batch

make
 make:controller    Generate a new controller file by passing it's name
 make:model         Generate a new Database Model
 make:command       Generate a new ace command file by passing it's name
 make:middleware    Generate a new HTTP middleware

물론 자신의 지령을 만들어 로그인할 수도 있다.
user는 명령의 샘플이기 때문에 참고할 수 있다고 생각합니다.

Lucid ORM


Eloquent ORM과 마찬가지로 기본적으로 기술 방법은 Eloquent와 같습니다.
모형도ace 명령을 통해 제작할 수 있다.
모형과 관련된 책상 규격은 라벨 표준을 따른다
이름 은 복수 형식 이다
/id,create 열at,updated_다운로드 필요
그렇습니다.
이 밖에 소프트 액세서리도 지원한다.
규격에 따라 표를 만들면ace 명령으로 모형을 만들면 이동할 수 있다.
사용 방법은 간단하지만 간단하다.
다음 예(공식 문서 참조)
app/Http/Controllers/UserController.js
const User = use('App/Model/User')

class UserController{

  *index (request, response) {
    const users = yield User.all()
    response.json(users)
  }

}

옮기다


빌딩 조회는 knex입니다.js라는 프로그램 라이브러리를 사용한 것 같습니다.
./ace migration:make ファイル名 
를 참고하십시오.
이것도 Laravel과 같은 기술로 쓸 수 있다.
migrations/1455001855782_Users.js
'use strict'

const Schema = use('Schema')

class NewSchema extends Schema {

  up () {
    this.create('users', function (table) {
      table.increments('id')
      table.text('name')
      table.timestamps()
      table.timestamp('deleted_at')
    })
  }

  down () {
    this.drop('users')
  }

}

module.exports = NewSchema
그리고
./ace migration:run
중집행
./ace migration:rollback
취소할 수 있습니다.
유감스럽게도seed 기능은 아직 실현되지 않았다.

Collection


로데시라는 도서관 자물쇠예요.
로데시의 API 규격을 보니 라벨의 콜렉션보다 많은 일을 할 수 있을 것 같다.
Lucid로 얻은 값도 Laavel과 마찬가지로 Collection으로 되돌려줍니다.

템플릿 엔진


이것은 라벨과 다르다.
node.js 초보자이기 때문에 출처를 전혀 추적할 수 없고 Twittg 자체인지 Twittg의 기초인지 판단할 수 없지만 기술 방식은 Twittg이다.(공식 문서에 트위터 표시가 없음)
템플릿 조수도 있는 것 같아요.
예를 들어 csrf 영패는 다음과 같이 기술할 수 있다.
{{ csrfToken }}

스택 추적


소개할 만한 것은 아니지만 라벨4는 표준과 마찬가지로 필프/whoops를 사용한다.

공식 문서


http://adonisjs.com/docs/2.0/installation
여기 있습니다.처음 문서를 보았을 때 자기도 모르게 웃음이 나왔다.Laavel의 공식 문서와 색상을 제외하고는 스타일이 같습니다.
하지만 덕분에 내용을 쉽게 알 수 있습니다.
또 라벨이라는 개념을 적용했다는 점도 명확히 했다.

다른, 접촉한 소감 같은 거.


솔직히 node.Laavel Ric에 기술할 수 있는 js 버전의 Laavel이라고 할 수 있습니다.Laavel5를 만지는 사람은 나와 같다, node.js를 접촉한 적이 없는 사람도 빨리 적응할 수 있습니다.
또 평소 PHP만 건드리는 사람에게는 클라스가 조수와 함께 사용할 수 있는 의심use?쓸 만한 것도 많죠?
그리고 아도니스는 2015년경 완성된 새로운 틀일 것으로 보인다.
이 때문에 해외에서는 아직 인지도가 낮고 미실장 기능도 많아 상업적으로 도입하기 어려운 실정이다.하지만 개발이 성행하고 있는 것 같다. 이런 상황은 트리로와github에서 확인할 수 있다.
그나저나 일본에서는 전혀 인식이 안 돼서...
일본어 기사는 최초로 열거한 기사만 찾았다.
아도니스도 라벨처럼 조금씩 인지도를 넓혔으면 좋겠다.
이상은 앞으로 주목받을 프레임이다.
나는 약간의 개별적인 기능 소개를 하고 싶다.

좋은 웹페이지 즐겨찾기