Sails.jsとMeteor-両方の利点は何ですか?[閉まっている]


81

私はNodejsとそのフレームワークについて多くのことを読んでいて、最近、最初の完全なjavascriptフロントエンド(Angularjsを使用)を終了しました。

次のペットプロジェクトは、次の2つのフレームワークのいずれかを使用したNodejsアドベンチャーになると決めました。

私は両方について読みましたが、それでもそれらの違いを完全に理解することはできず、なぜ私はどちらか一方を使用することを選択する必要があります。だから、あなたの最高のセールスマンの帽子をかぶって、フレームワークを選んで、それを私に売ってください。

ペットプロジェクトに必要な機能は次のとおりです。

  • ライブスコア
  • Redditのようなスレッド、リアルタイム
  • ウィキペディアのようなページ版
  • ユーザー/役割

1
このリンクを確認してください:vschart.com/compare/meteor-web-framework/vs/sails-js。それはあなたを助けるかもしれません!
tuchi35 2014年

回答:


137

Meteorについて話すことはできませんが、Sailsを作成したので、少し背景を説明することができます。

tldr; Sailsは、Webのすべての問題の万能薬ではありませんが、Node.jsは万能薬だと思います。Sailsの目標は、node.js上に構築された完全でスケーラブルなスタートアップおよびエンタープライズフレンドリーなアプリケーションを開発するための実用的なフレームワークを提供することです。Balderdashは、「すべてにNode.jsを使用できますか?」という質問から始めました。帆がその答えです。


新しいドキュメントから:

もちろん、SailsはWebフレームワークです。しかし、一歩後退してください。どういう意味ですか?「ウェブ」というときは、「フロントエンドウェブ」を意味することがあります。Web標準、HTML 5、CSS3などの概念を考えています。バックボーン、Angular、jQueryなどのフレームワーク。Sailsは「そのような」Webフレームワークではありません。SailsはAngularとBackboneでうまく機能しますが、これらのライブラリの代わりにSailsを使用することは決してありません。

一方、「Webフレームワーク」とは、「バックエンドWeb」を意味する場合があります。これは、REST、HTTP、WebSocketなどの概念を呼び起こします。Java、Ruby、Node.jsなどのテクノロジーに基づいて構築されています。「バックエンドWeb」フレームワークは、APIの構築、データベースとの対話、HTMLファイルの提供、数十万の同時ユーザーの処理などを行うのに役立ちます。Sailsは「そのような」Webフレームワークです。

数年前、私はすべてNode.jsを使用することを約束しました-それは一目ぼれでした。ExpressSocket.ioの上にSailsを構築しました。これは、それぞれのユースケースで最も確立されたノードモジュールであったためです。Sailsのリクエスト処理コードはExpressと互換性があり、Socket.ioが暗黙的にサポートされるという追加の利点があります。

Sailsは、Angular、Backbone、iOS / ObjC、Android / Javaでフロントエンドを構築するための戦略と互換性があるように設計されています。また、別のWebサービスや開発者コミュニティ。アプローチを変更したり(バックボーンからAngularに切り替えたり)、新しいフロントエンドを完全に構築したり(Windows Phoneネイティブアプリを構築したり)、Sailsアプリは引き続き機能します。すでにご存知かもしれませんが、このアプローチをサービス指向アーキテクチャーまたはSOAと呼ぶ人もいます(Joe McCannは、このテーマに関して優れたデッキを持っています)。

同じ方針に沿って、Sailsは、Webサーバーを構築するための他のよく知られた規則を維持しています。標準のMVC構造、クリーンなAPIを作成する機能、オープンで構成可能、拡張可能、さらには交換可能なコアモジュールです。つまり、Sailは、必要に応じて低レベルで、ユーザーのニーズに合わせてカスタマイズできます。

2013年には、フレームワークの人気が大幅に高まり、コンサルティングビジネスも成長しました。残りのコアメンテナと私は、バックエンド開発を可能な限り迅速かつ簡単にすることに焦点を広げました。フック(プラグイン)、テスト、ドキュメントなどのSailの関連する側面はすべて、コアチームと(拡大し続ける)Sailコミュニティ全体の両方の努力のおかげで、昨年から大きく進歩しました。私たちがまだ取り組んでいるロードマップ項目はたくさんありますが、今日のNodeで安定した保守可能なMVC開発を行うには、Sailsが最良の選択肢であると思います。チームの他のメンバーと私は、継続的なメンテナンスと機能開発に取り組んでいます。すべてのクライアントプロジェクトで使用しているため、どこにも行きません。

私はSailsを最高のWebフレームワークにすることに真剣に取り組んでいますが、Node.jsを犠牲にすることは決してありません。コアチームと私は、Nodeエコシステムの強化に執拗に取り組んでいます。つまり、NPMを採用し、既存のNodeテクノロジーやベストプラクティスを活用するなどです。それが理にかなっているだけでなく、Node.jsの開発者だからです。私たちのすべての努力の動機は、ノードに取って代わるのではなく、ノードをよりアクセスしやすくすることです。したがって、奇妙なパラレルユニバースで、Sailを他の言語に変換するか、Sailを完全に破棄してもノードを使用できるか、というファウストの選択が与えられた場合は、後者を選択します。


追加リソース:

FAQ | 帆101 | オリジナルのスクリーンキャスト| 寄稿ガイド| スタックオーバーフロー

Googleグループ| ロードマップ| IRC:Freenodeの#sailsjs | ビルドステータス


2
:ここでは、この質問に別の良い展望(最初の答え)に走ったlinkedin.com/groups/...
mikermcneil


@AaronShafovaloff頭を上げてくれてありがとう
mikermcneil

30

Meteorでいくつかのプロジェクトを構築しましたが、Sailsではまだ作業していません。ですから、私の意見は確かに偏っています。とにかく役立つことを願っています。

フロントエンドの構築

Meteorは、Blazeと呼ばれる独自のフロントエンドフレームワークを提供します。これは、次の0.8リリースに含まれる予定です。Meteorは、コレクションからビューへのデータのバインドを処理します。このため、ビューに更新を指示することを心配する必要はありません。更新するだけです。

一方、Sailsはバックエンドフレームワークのみを提供するため、独自のフロントエンドフレームワークを用意する必要があります。

ほとんどのNode.jsフレームワークとは異なり、Meteorは同期的です

Meteorはループで実行され、Node.jsパッケージを使用する場合は、Meteorで正しく動作することを確認するために追加の作業を行う必要があります。

Sailsは単純なMVCNode.jsフレームワークのように思われるので、調べてもそれほど驚くことはないはずです。

MeteorでMongoDBを使用する必要があります

はい、Meteorで他のデータベースを使用できますが、MongoDBとほぼ同じサポートはありません。Sailsの場合、いくつかのデータベースのORMがあるように見えます。

パフォーマンス

大規模なアプリケーションの場合、 Meteorはうまく機能しない可能性があります。この問題に取り組むために多くの作業が行われており、2014年末までにMeteorのスケーリングソリューションがあると期待できます。

安定

Meteorはまだ非常に新鮮で、まだ1.0に達していません。今後数回のリリースで、下位互換性を損なう変更が行われることを期待する必要があります。できるだけ早く使い始めた場合は、0.8-rc0ブランチの使用を検討することをお勧めします。そうは言っても、パイプラインの機能のいくつかは本当に素晴らしく、1.0バージョンを非常に魅力的にします。

最終的な考え?

Meteorは、その特異性のために好きです。Meteorのやり方を学ぶ必要がありますが、それを始めると、クールエイドを飲んだように感じます。データがビューにバインドされる方法のため、サーバーとクライアントの間の線は離れていません。Meteorは、アプリケーションアーキテクチャのパラダイムシフトを表しており、まだ試していない場合はお勧めします。

PSロードマップチェックアウトして、今後の予定を把握してください。


5
「meteorissynchronized」ステートメントを変更することをお勧めします。nodejsファイバーに慣れていない人に間違った印象を与える可能性があるためです。MeteorはNode.jsで実行されるため、イベント駆動型の非ブロッキングのメリットを引き続き享受できます。Meteorはノードファイバーを透過的に統合するため、サーバー側のコードを従来のコールバックに分割するのではなく、線形実行モデルで記述できます。これはnpm、meteorでパッケージを使用することに関しておそらく最良のリファレンスです:meteorhacks.com/complete-npm-integration-for-meteor.html
2014年

Alanningに感謝します、私はあなたのフィードバックをこの応答に組み込みます!
MSaforrian 2014年

8
おそらく1つの重要なことは、sails.jsはバックエンド専用であり、meteorはバックエンドと簡単に連携するためのフロントエンドjavascriptフレームワーク全体を提供しているということです。
マイケル

それを提起してくれてありがとう、@ Michael。Sails.jsとMeteorは実際には競合しません-Sails.jsはNode.jsのバックエンドフレームワークであり、Django、Rails、Expressなどの代わりに使用できますが、Meteorはその方法についての新しい考え方です。リアクティブなアプリを上から下に構築する-これは本当にクールだと思います:)
mikermcneil 2015

レビューから4年以上経ちましたので、コメントを更新していただけませんか?私は確かに流星1.7を変える新しいゲームに関して意見を求めます。
Shyam18年

19

私は帆についてしか意見を述べることができません。私は非常に経験豊富なJavascript開発者であり、90年代からJavascript上に構築された組み込みセットトップボックスアプリケーションを構築してきました。

非常にうまく機能したこと -開始は素晴らしく、公開された資料に非常にサポートされていると感じました-学習曲線は非常に短く、帆の後ろには健全なコミュニティがあります-最初の学習の後、すばやく創造するのは非常に簡単です

改善できる点 -複雑なデータ構造は実装が難しい-クリーンな参照資料がないため、Passport.jsの統合は苦痛でした

推奨事項 -Ponziコーダーには素晴らしいチュートリアルがあり、それは私が始めるのに本当に役立ちましたhttps://www.youtube.com/user/ponzicoder- エクスプレスとウォーターラインについてもっと知ることは、より複雑なデータの課題を試みるときに役立ちます

全体的に私は帆をお勧めします。


1
こんにちはサイモン、パスポートと帆を統合する方法を教えてください。私は同じ問題で立ち往生しています。どこかにブログを書いたり、参考資料はありますか?
Mitermayer Reis 2014

2
こんにちはMitermayer、申し訳ありませんが、私のブログはずっと前に怠慢で亡くなりました。パスポートを機能させたのは、2つのことをすれば問題ないように見えることに気づいたことです。1あらゆる場所のデフォルトのフィールド名(電子メールとパスワード)2 reqオブジェクトをコールバックにpassport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) },
渡し

1
わぁ、ありがとう。私は何日も地元の戦略に問題を抱えています。これはそれ自身のスタックオーバーフローポストに値する
light24bulbs 2014

1
Passport.jsの統合には確かにより多くのドキュメント資料が必要であり、それを十分に強調することはできませんでした。特に、Facebook / googleログインとローカル認証を組み合わせた、サーバーレンダリングが行われていないREST APIユースケース(Angular JSクライアントなど)の場合。
アロンアミール

1
Passport.jsの統合が難しく、文書化が不十分であることに賛成
pim

9

私は現在Meteorを使用しており、Sails.jsは使用していません。

Meteorは非常に快適に使用でき、リアルタイムWebアプリに最適だと思います。ユーザー/ロールに関しては、統合されたアカウントパッケージを確認し、Atmosphereでコミュニティが提供するロール/パーミッションパッケージを検索することもできます。

最終的には、両方のテクノロジーを使用して小さなプロジェクトを試して、どちらが良いかを確認することをお勧めします。


Sail.jsに、モデルレベルでのMeteorのレイテンシー補正と同様に、クライアント側でレイテンシー補正のバリエーションがあるかどうかを知っていますか?
imslavko 2014年

Sail.jsについては知らないが、あなたはおそらく自分が使用して、それを含めることができsharejs.org libが。少なくともそれがlibの目標のようです。
2014年

1
@ alanning-いいえ、sharejsはレイテンシー補正を行いません。Sharejsは操作上の変換を行います。レイテンシー補正とは、Meteorがローカルのminimongoを更新し、リモート更新が成功すると想定して、ユーザーが続行できるようにすることです。
gomad 2014年

1
@gomadは、sharejsがそのままではレイテンシー補正を提供しないということは正しいです。私はそうは言わなかった。むしろ、「sharejs.orgを使用して自分で含めることができる」と私は言いました。LCはOT上に構築されています。
2014年

ただ追加されたメモ。流星はとても使いやすいと思います。少し学習曲線がありますが、それ以外のフレームワークは、Rubyへのレールを記述する方法と非常に似ています。私の現在の唯一の不満は現時点です。セルフホストを希望する場合は、ノード0.10.40に依存します。流星はかなり大きな基盤を持っているので、ノードを使ったキャッチアップゲームは流星にとって少し不公平だと思います。
Jimmy MG Lim 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.