AdonisJS — 2017年の最高のNodeJSフレームワーク

約6か月前、私はSailsJSの代替手段、つまりノード用のMVCフレームワークを探していました。残念ながら、Sailsはいくつかの点で非常に不愉快でした。POSTリクエストでは遅く、トランザクションなどの多くのPostgres機能をサポートせず、他のいくつかの機能が欠けていました(たとえば、ここで説明します)。しかし、最悪なのは、過去3年間に単一のメジャーアップデートがなかったことです。

そこで、nodeJSプロジェクトの移動先を探し始めました。 Koa.js(ただし、不足しているものが多かった)、Meteor.js(オールインワンソリューション、APIのみは必要ありません)、ループバック(あまりにも多くの魔法)などを試しました。

私がAdonisJSに出会うまで。正直に言うと、フレームワークにはgithubで2.5kのスタートがありますが、見つけるのは簡単ではありませんでした。しかし、すぐにそれが好きになりました。理由を説明しようと思います。

長所

1.背後のフォルダー構造とロジックを見ると、これは超人気のPHPフレームワークであるLaravelとほとんど同じです。また、Laravelには考え抜かれた構造があり、物事を明確に保つことができます。そのため、これまでに作業したことがあれば、アドニスをすばやく学ぶことができます。

2.そのORMは、PostgresやMySQLなどのSQLデータベースを念頭に置いて作成されています。効率的なSQLクエリを作成し、アクティブレコードのアイデアに基づいています。そのクエリビルダは簡単に習得でき、簡単なクエリをすばやく作成できます。例えば:

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

しかし、移行、トランザクション、結合、チャック、または完全に「ネイティブSQL言語」クエリなどのより複雑なものが必要な場合でも、すべて揃っていて使いやすいです。 MongoDBの愛好家については、アドニスもサポートしています。

3.便利な検証拡張機能があります。ルールを簡単に記述できます。例:

constルール= {
  ユーザー名: 'required | unique:users'、
  メール: 'required | email | unique:users'、
  パスワード:「必須|確認済み」、
  group: 'existsIn:Group'
}
const検証= yield Validator.validate(userData、User.rules)
if(validation.fails())throws Errors.Validation(validation)

これらのチェックは、同期または非同期の両方であり、データベースまたは必要なものにアクセスできます。また、非常に簡単に拡張できます。たとえば、データベースにレコードが存在するかどうかを確認するためのチェックを作成しました。

4.ボーナスです!個人的には、アドニスがジェネレーター関数を使用する方法が大好きです。例えば:

//古典的な別名スパゲッティウェイ
Users.all((err、users)=> {
  users.bicycles()。fetch((err、bicycles)=> {
    res.send({ユーザー、自転車})
  })
})
//約束の方法
ユーザー= null
Users.all()
.then(fetchedUsers => {
  users = fetchedUsers
  return users.bicycles()。fetch()
})
.then(bicycles => {
  res.send({ユーザー、自転車})
})
//ジェネレーターウェイ(別名AdonisJSウェイ)
//非同期関数が終了するまでコードの実行を一時停止します
const users = yields.all()
const bicycles = yields.bicycles()。fetch()
res.send({ユーザー、自転車})

コードがずっと明確になります!閉じられた関数や約束はもうありません。表のない単純なコードだけです。

短所

  1. デフォルトのテスト設定はありません。テストなしでコードを作成することは、非常に単純な開発方法です。 UPD:公式のテスト設定とチュートリアルは、次のAdonis 4.0で導入されます
  2. 多くの貢献者やユーザーがいないため、コアライブラリのバグをキャッチできる場合があります。それらのいくつかは非常に明白です:-)
  3. ドキュメントは優れていますが、コミュニティはまだ小さいです。 StackOverflowには多くの回答はなく、チュートリアルも多くありません(公式のチュートリアルを除く)

結論の代わりに

過去6か月間、AdonisJSを運用環境で使用しています。安定して高速です。私達はそれが大好き!

ES6、Postgresサポートおよび優れた構造を備えた最新のNode.jsフレームワークをお探しの場合は、Adonis.jsを確認してください

P. S.私の最新のプロジェクト— https://pingdisco.comは100%adonisjsで、無料の稼働時間監視ツールです。そこにアカウントを作成してみて(入力するフィールドは1つだけです)、どれだけ速くてスムーズかを確認してください。

P. P. S.そして、フレームワークに関して助けが必要な場合や問題がある場合は、遠慮なくCodementorにメッセージをください。また、アドニスの基本といくつかのクールなハックを紹介できるチュートリアルセッションも行います。