尝试使用JavaScript框架Meteor
我尝试挑战使用基于Node.js的框架Meteor的教程。
-
- Ubuntu 16.04 でチャレンジ。
- コードサンプルはファイル名をクリックして、diffを見ながらやったほうがよさげ。コードの削除がdiffのほうでしか見られません。
「流星」的特点
-
- サーバサイド・クライアントサイド両方込みのNode.jsなフレームワーク。
サーバ・クライアント両サイドでのコード共有が簡単。互いの {server,client}/main.js からimportするだけ。
meteor コマンドで依存性追加とか起動とかデプロイとか全部賄う系。
Hot code push
ようするにライブリロード+ホットコードデプロイ。
エディタで更新したら、即画面に反映。(WebSocketで更新もらってるっぽい。)
特に自分でブラウザをリロードしたり、サーバを再起動させたりするほとんど必要なさそう。
データストアはMongoDB。
一边打开编辑器一边查看屏幕,就可以随意地进行原型设计,逐步进行开发。
Meteorで作られたものといえば、代表的なものに RocketChat があります。個人的にも使ってますが、なかなか出来がよく、アプリの設定を変えると即画面に反映されたり、アプリをアップデートしてもクライアントの画面を明示的にリフレッシュしないままクライアント側のアップデートが完了するのが驚きですね。
虽然我在启动meteor,但在另一个终端无法连接到MongoDB。
-
- meteorは起動時にローカルでMongoDBを立ち上げますが、meteor mongoで繋がらん。
-
- たぶんmeteorのバグ。 ps ax | grep -P ‘^\s*(\d+).+mongod .+–port (\d+) –dbpath (.+(?:\/|\\)db)’ 相当の検索をして、そこで取れたポートやDBパスをプロジェクトのものと比較するようだが、それの比較に失敗していると思う。
-
- 自前でMongoDBクライアントインストールしてつなぎましょう。
sudo apt install -y mongodb-clients してから、 mongo localhost:$(cat .meteor/local/db/METEOR-PORT)/meteor
ポートは多くの場合、3001だと思います。 .meteor/local/db/METEOR-PORT に書いてあります。(普通にこっちに繋いでくれりゃいいのに…)
印象
-
- Webアプリをプロトタイピングしながら高速に作りたい人向け。
ライブリローディング。
MongoDBがスキーマレス。
ログイン用のUIと仕組みとか最初から用意されてる。
おそらくミッションクリティカルなシステムには向いてないと思う。
Meteorから外れた使い方をしたい場合には向いてなさそう。
↓いつ画面にリロードかかってもいいような書き方を強制されている気がする。
Template.task.events({
'foo'() {
//
},
'bar'() {
//
},
});
-
- スタック、コードの置き方がまとめられていて応用しやすい。まさにフレームワーク!
-
- MongoDBの高性能さをうまく利用したリアクティブな使い方をしている。(MongoDBの中の値を変更 → 画面に即反映とか。)
- テンプレート用ミニ言語が嫌いなんですが、どうにかなりませんか?
<ul>
{{#each tasks}}
{{> task}}
{{/each}}
</ul>
由于可能要开发一个很糟糕的内部系统,所以可能会尝试使用Meteor来挑战一下。
请引用下列参考:
-
- フルスタックJSフレームワークMeteorのメリット&デメリット
- 体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説