先週、私はCMSシステムを構築することでSailsフレームワークと接触し、ORMの概念のいくつかを学びました。今週、私たちはバックグラウンドデータの相互作用に深く入り始め、20のフレームワークのデータ構造が帆(ノードやカテゴリなど)で設計されていることがわかりました。私の先輩は素晴らしいと言わざるを得ません。しかし、複雑さも増加しています。 DTreeプロジェクトでの私のタスクは、Sailsを使用してビジネスプロセスやデータベースと対話することです。今週は次回は帆を使用することです。
帆の紹介
SailsはRuby on Railsのようなものであり、Web開発をシンプルにするフレームワークでもあります。この期間中に私が知っている限り、Express&socket.ioのいくつかのAPIを完全に継承し、統合されたデータベース相互作用にWaterline(ORM)を使用して、CRUD操作を直接修正せずに異なるデータベース環境で完了することができます。フロントエンドのデータをバックボーンフレームワークと同期し、ポリシーミドルウェアを使用して、独自の設計図の相互作用を安全に検証します。フロントエンドとバックエンドに単一のコードを使用せずに、RESTFULL APIを介して相互作用できます。
Socket.io&Express
フロントエンドは、これらの2つのことを時間内に学習しました。1つはWebCock通信であり、もう1つはHTTPリクエストを処理することです。 Sailsは再設計されていませんが、これらの2つのツールを使用してこれらの機能を直接処理するため、学習コストが大幅に削減されます。 Socket.ioはメッセージをトリガーし、メッセージをリッスンし、サーバーとクライアントの両方で操作を実行します。
コードコピーは次のとおりです。
`
//サーバー側
io.sockets.on( "connection"、function(sock){
sock.emit( "remormmessage"、{a: "c"});
});
//顧客サービス
sock.on( "remormmessage"、function(json){...});
`
Expressの関数は、app.get( '/login'、function(req、res){});などのルーティング操作にあります。
Sails Blueprints&Backbone
Web開発では、CRUDは、HTTPのGet/Postやデータベースの選択/挿入など、同様のタイプの操作です。 Sailsの青写真APIとJSのバックボーンフレームワークは両方とも統一されたクラスの関数(FindOneなど)を使用しているため、プログラムがモデルと対応するコントローラーを確立するときに内部ロジックが既に確立されています。たとえば、一般的に使用されるユーザーモデルは、ユーザーのデータを合格および保存するために、Sailsにコントローラーを構築しました。注意する必要があるのは、ファイル名の仕様とビジネスプロセスだけです。また、元の方法をオーバーライド(過負荷)したい場合は問題ありません。構成フォルダーのルートにアクションとコントローラーを設定した後、必要な機能を対応するコントローラーに追加できます。
喫水線
Sails依存パッケージのAPIは、create()、findOne()、update()などのデータベースと対話するために使用されます。前述のように、これらのメソッドを直接均一に呼び出すために、さまざまなデータベースツールを心配する必要はありません。たとえば、データを入力するとき
コードコピーは次のとおりです。
`
users.create({username:username、password:password})。exec(function(error、user){
if(error){
res.send(500、{error: "db error"});
} それ以外 {
req.session.user = user;
res.send(user);
}
`
デフォルトシステムは、ローカルファイルシステムにデータを保存することです。 mysqlまたはmongodbを選択する必要がある場合。構成ファイルで変更し、データベースアダプターを選択してデータと対話するだけです。
ポリシー
コントローラーのミドルウェアに適用され、HTTPリクエストが発行される前に実行されます。アイデンティティ制御を実現できます。たとえば、ログインした場合にのみ次のアクションを実行できます。
コードコピーは次のとおりです。
`
if(req.session.user){
var action = req.options.action;
if(action == "create"){
req.body.userid = req.session.user.id;
req.body.username = req.session.user.username;
}
次();
}それ以外{
res.send( "ログインする必要があります"、403);
}
`
次
帆は正常に開始されましたが、それでもこれにもっと一生懸命働く必要があります。強固な基盤を築くことによってのみ、特定のニーズを達成できます。したがって、学習を続け、帆を深く学ぶためのより多くのルーチンを見つけ、このフレームワークの制限も知る必要があります。