私はNodejsとそのフレームワークをよく読んでおり、最近(Angularjsを使用して)最初の完全なJavaScriptフロントエンドを完成させました。
私の次のペットプロジェクトは、次の2つのフレームワークのいずれかを使用したNodejsアドベンチャーになることを決めました。
私は両方について読みましたが、それらの違いを理解することはまだできません。だからあなたの最高のセールスマンの帽子をかぶって、フレームワークを選んで、それを私に売ってください。
ペットプロジェクトに必要な機能は次のとおりです。
Meteorについて話すことはできませんが、Sailを作成したので、Sailについて少し背景を説明するのに役立ちます。
tldr;SailsはWebのすべての問題の万能薬ではありませんが、Node.jsは万能だと思います。 Sailsの目標は、node.js上に構築された、完全でスケーラブルなスタートアップおよびエンタープライズフレンドリーなアプリケーションを開発するための実用的なフレームワークを提供することです。私は Balderdash を「すべてにNode.jsを使用できますか?」という質問で始めました。帆が答えです。
新しいドキュメント から:
もちろん、SailsはWebフレームワークです。しかし、一歩下がってください。どういう意味ですか? 「ウェブ」というときは、「フロントエンドウェブ」を意味する場合があります。 Web標準、HTML 5、CSS 3などの概念を考えます。 Backbone、Angular、jQueryなどのフレームワーク。 Sailsは「その種の」Webフレームワークではありません。 SailsはAngularおよびBackboneでうまく機能しますが、これらのライブラリの代わりにSailsを使用することはありません。
一方、「Webフレームワーク」について話すとき、「バックエンドWeb」を意味することがあります。これは、REST、HTTP、またはWebSocketsなどの概念を呼び起こします。また、Java、Ruby、Node.jsなどのテクノロジーに基づいて構築されています。 「バックエンドWeb」フレームワークは、APIの構築、データベースとのやり取り、HTMLファイルの提供、数十万人の同時ユーザーの処理などを支援します。 Sailsは「その種の」Webフレームワークです。
数年前、私はすべてにNode.jsを使用することを約束しました- それは一目ぼれでした 。セイルを Express および Socket.io の上に構築しました。これらはそれぞれの用途で最も確立されたNodeモジュールであったためです。ケース。 Sailsのリクエスト処理コードはExpress互換であり、Socket.ioの暗黙的なサポートという追加の利点があります。
Sailsは、Angular、Backbone、iOS/ObjC、Android/Javaでフロントエンドを構築するための戦略と互換性があるように設計されています。または、別のWebサービスまたは開発者コミュニティ。アプローチを変更する(例:BackboneからAngularに切り替える)か、新しいフロントエンドを完全に作成する(例:Windows Phoneネイティブアプリを作成する)場合でも、Sailsアプリは引き続き機能します。すでにご存じかもしれませんが、このアプローチをサービス指向アーキテクチャと呼ぶ人もいます。またはSOA( Joe McCann はこのテーマについて素晴らしいデッキを持っています。)
同じ行に沿って、SailsはWebサーバーを構築するための他のよく知られた規則を維持します-標準のMVC構造、クリーンなAPIを作成する機能、およびオープンで構成可能、拡張可能、さらには交換可能なコアモジュールです。これは、Sailsをユーザーのニーズに合わせてカスタマイズできることを意味します。
2013年、このフレームワークの人気は飛躍的に向上し、コンサルティング事業が成長しました。残りのコアメンテナーと私は、バックエンド開発を可能な限り迅速かつ簡単にすることに焦点を広げました。フック(プラグイン)、テスト、ドキュメントなどのSailsの関連する側面はすべて、コアチームと(拡大し続ける)Sailsコミュニティ全体の努力のおかげで、昨年一年間で大きく進歩しました。私たちがまだ取り組んでいるロードマップ項目はたくさんありますが、Sailsが今日のNodeでの安定した、メンテナンス可能なMVC開発のための最良の選択肢だと思います。チームの他のメンバーと私は継続的なメンテナンスと機能の開発に取り組んでおり、すべてのクライアントプロジェクトに使用しているため、どこにも行きません。
私は、Sailsを最高のWebフレームワークにすることに全力を尽くしていますが、Node.jsを犠牲にすることはありません。コアチームと私はNodeエコシステムの強化にひたむきに取り組んでいます。つまり、NPMを採用し、既存のNodeテクノロジーとベストプラクティスなどを活用することを意味します。私たちはNode.js開発者だからです。私たちのすべての努力の動機は、Nodeをよりアクセスしやすくすることであり、それに取って代わることではありません。そのため、奇妙な並列世界で、Sailsを他の言語に変換するか、Sailsを完全に捨ててNodeを使用できるかを選択するファウストの選択肢が与えられた場合、後者を選択します。
追加リソース:
FAQ | Sails 101 | オリジナルのスクリーンキャスト | 投稿ガイド | Stackoverflow
Meteorを使用していくつかのプロジェクトを作成しましたが、Sailsにはまだ取り組んでいません。だから、私の意見は確かに偏っており、うまくいけばとにかく役に立つでしょう。
フロントエンドの構築
Meteorは、今後の0.8リリースに含まれるBlazeと呼ばれる独自のフロントエンドフレームワークを提供します。 Meteorは、コレクションからビューへのデータのバインドを処理します。このため、更新するようにビューに伝えることを心配する必要はありません。
一方、Sailsはバックエンドフレームワークのみを提供するため、独自のフロントエンドフレームワークを用意する必要があります。
ほとんどのNode.jsフレームワークとは異なり、Meteorは同期的です
Meteorはループで実行されます。Node.jsパッケージを使用する場合は、Meteorで適切に動作することを確認するために 追加の作業 を実行する必要があります。
Sailsは単純なMVC Node.jsフレームワークであるように見えるため、調べても驚くべきことはないはずです。
MeteorでMongoDBを使用する必要があります
はい、Meteorで他のデータベースを使用できますが、MongoDBと同じサポートはほとんどありません。一方、Sailでは、いくつかのデータベースのORMがあるように見えます。
パフォーマンス
大規模アプリケーションの場合、Meteor パフォーマンスが低下する可能性があります 。この問題に取り組むために多くの作業が行われており、2014年末までに、Meteorのスケーリングソリューションが期待されています。
安定性
Meteorはまだ非常に新しく、まだ1.0に達していない。後方互換性を損なう次のリリースでいくつかの変更が行われることを期待する必要があります。 ASAPをすぐに使い始める場合は、0.8-rc0ブランチの使用を検討してください。そうは言っても、パイプラインの機能のいくつかは本当に優れており、1.0バージョンは非常に魅力的です。
最終的な考えは?
Meteorはその特異性のために好きです。流星のやり方を学ぶ必要がありますが、いったんそれを始めると、クールエイドを飲んだように感じます。データがビューにバインドされる方法のため、サーバーとクライアントの間の線は遠くありません。 Meteorはアプリケーションアーキテクチャのパラダイムシフトを表しており、まだ試していない場合はお勧めします。
PS ロードマップをご覧ください 今後の予定を把握してください。
帆についてのみ意見を述べることができます。私は非常に経験豊富なJavascript開発者であり、90年代からJavascript上に構築された組み込みのセットトップボックスアプリケーションを構築しています。
本当にうまくいったもの-始めたのは素晴らしく、出版された資料に非常に支持されていると感じました-学習曲線は非常に短く、健康的です帆の背後にあるコミュニティ-最初の学習の後、すぐに創造的になることは非常に簡単です
改善できるもの-複雑なデータ構造を実装するのは難しい-きれいな参考資料がないため、Passport.jsの統合は苦痛だった
推奨事項-Ponziコーダーには素晴らしいチュートリアルがあり、私が本当に役立つのを助けました https://www.youtube.com/user/ponzicoder -より複雑なデータチャレンジを試みる場合、エクスプレスとウォーターラインについて詳しく知ることが役立ちます
全体的に帆をお勧めします。
現在、Meteorを使用していますが、Sails.jsは使用していません。
Meteorは非常に快適に使用でき、リアルタイムWebアプリに最適な選択肢になると思います。ユーザー/ロールについては、統合された Accounts パッケージをチェックアウトし、 Atmosphere でコミュニティが提供するロール/権限パッケージを検索することもできます。
最終的には、両方のテクノロジーを使用した小規模なプロジェクトを試して、どちらが良いかを確認することをお勧めします。