AdonisJS — 2017 년 최고의 NodeJS 프레임 워크

약 6 개월 전에 노드 용 MVC 프레임 워크 인 SailsJS의 대안을 찾고있었습니다. 불행하게도 Sails는 POST 요청이 느리고 트랜잭션과 같은 많은 Postgres 기능을 지원하지 않았으며 몇 가지 다른 기능이 부족했습니다 (예 : 여기에 설명되어 있음). 그러나 최악의 사실은 지난 3 년 동안 단일 업데이트를받지 못했다는 것입니다.

그래서 nodeJS 프로젝트로 이동할 무언가를 찾기 시작했습니다. 우리는 Koa.js (그러나 너무 많은 것들이 부족했습니다), Meteor.js (실제로 올인원 솔루션이 필요하지 않고 API 만 필요), 루프백 (너무 많은 마법) 등을 시도했습니다.

내가 AdonisJS에 걸려 때까지. 솔직히 말해서, 프레임 워크가 github에서 2.5k 시작하더라도 찾기가 쉽지 않았습니다. 그러나 나는 즉시 그것을 좋아했습니다. 이유를 설명하려고 노력하겠습니다.

찬성

1. 폴더 구조와 논리를 살펴보면 매우 인기있는 PHP 프레임 워크 인 Laravel과 거의 동일합니다. 그리고 라 라벨은 좋은 구조로되어있어 명확하게 유지할 수 있습니다. 당신이 그것으로 일한 적이 있다면, 당신은 정말 빨리 Adonis를 배울 것입니다.

2. ORM은 Postgres 또는 MySQL과 같은 SQL 데이터베이스를 염두에두고 작성되었습니다. 효율적인 SQL 쿼리를 생성하며 활성 레코드 아이디어를 기반으로합니다. 쿼리 작성기는 배우기 쉽고 간단한 쿼리를 빠르게 작성할 수 있습니다. 예를 들면 다음과 같습니다.

const bicycles = yield Bicycle.query (). whereIn ( 'locationId', locationIds) .with ( 'locks'). orderBy ( 'label', 'asc'). fetch ()

그러나 마이그레이션, 트랜잭션, 조인, 척 또는 완전히 "네이티브 SQL 언어"쿼리와 같은보다 복잡한 작업이 필요한 경우에도 모두 사용하기 쉽습니다. MongoDB 애호가는 adonis도이를 지원합니다.

3. 편리한 검증 확장 기능이 있습니다. 다음과 같은 규칙을 쉽게 작성할 수 있습니다.

const 규칙 = {
  username : '필수 | 독특한 : 사용자',
  이메일 : '필수 | 이메일 | 독특한 : 사용자',
  비밀번호 : '필수 | 확인',
  그룹 : 'existsIn : Group'
}
const 유효성 검사 = yield Validator.validate (userData, User.rules)
(validation.fails ())가 새로운 Errors.Validation (validation)을 던지는 경우

이러한 검사는 동기식이든 비동기식이든 데이터베이스에 액세스하거나 필요한 모든 것을 수행 할 수 있습니다. 예를 들어 데이터베이스에 레코드가 있는지 확인하기위한 검사를 작성하는 등 매우 쉽게 확장 할 수 있습니다.

4. 그냥 보너스! 개인적으로 Adonis가 생성기 기능을 사용하고 활용하는 방법을 좋아합니다. 예를 들면 다음과 같습니다.

// 클래식 일명 스파게티 방식
Users.all ((err, users) => {
  users.bicycles (). fetch ((err, bicycles) => {
    res.send ({사용자, 자전거})
  })
})
// 약속의 길
사용자를 허용 = null
Users.all ()
.then (fetchedUsers => {
  사용자 = 가져온 사용자
  반환 users.bicycles (). fetch ()
})
.then (자전거 => {
  res.send ({사용자, 자전거})
})
// 제너레이터 방식 (일명 AdonisJS 방식)
// 비동기 함수가 완료 될 때까지 항복이 코드 실행을 일시 중지합니다
const users = yield Users.all ()
const bicycles = 수익률 users.bicycles (). fetch ()
res.send ({사용자, 자전거})

코드가 훨씬 명확 해집니다! 더 이상 동봉 된 기능이나 약속이 없으며, 표가없는 간단한 코드 만 있습니다.

단점

  1. 기본 테스트 설정이 없습니다. 테스트없이 코드를 작성하는 것은 매우 순진한 방법입니다. Upd : 공식 테스트 설정 및 튜토리얼은 다음 Adonis 4.0에서 소개됩니다.
  2. 기고자와 사용자가 많지 않기 때문에 때때로 핵심 라이브러리에서 버그를 잡을 수 있습니다. 그들 중 일부는 분명하다 :-)
  3. 문서는 훌륭하지만 커뮤니티는 여전히 작습니다. StackOverflow에 대한 답변이 많지 않고 튜토리얼이 많지 않습니다 (공식 튜토리얼 제외)

결론 대신

우리는 지난 6 개월 동안 AdonisJS를 프로덕션 환경에서 사용하고 있습니다. 안정적이고 빠릅니다. 우리는 그것을 좋아합니다!

ES6, Postgres 지원 및 우수한 구조를 갖춘 최신 Node.js 프레임 워크를 찾고 있다면 Adonis.js를 확인하십시오.

추신 : 내 최신 프로젝트 — https://pingdisco.com은 100 % adonisjs이며 무료 가동 시간 모니터링 도구입니다. 거기에 계정을 만들어보십시오 (하나의 필드 만 작성하면됩니다) 얼마나 빠르고 매끄럽게 보입니까?

P. P. S. 프레임 워크에 도움이 필요하거나 문제가있는 경우 언제든지 주저하지 말고 Codementor에 메시지를 보내십시오. 또한 Adonis의 기본 사항과 몇 가지 멋진 핵을 보여줄 수있는 자습서 세션도 제공합니다.