Sails.jsとは
Node.jsのMVCウェブアプリケーションフレームワーク
名前からも予想できる通り、Ruby on Railsチックな操作ができるフレームワークになっている
公式サイト http://sailsjs.org/
インストール
npmからインストールする
$ npm -g install sails
アプリケーションの作成
下記コマンドでアプリケーションのテンプレートが作られる この辺はrailsとまったく一緒
$ sails new sailstest
ディレクトリ構成はこんな感じ
sailstest ├── Gruntfile.js ├── README.md ├── api │ ├── adapters │ ├── controllers │ ├── models │ ├── policies │ │ └── authenticated.js │ └── services ├── app.js ├── assets │ ├── favicon.ico │ ├── images │ ├── js │ │ ├── app.js │ │ ├── sails.io.js │ │ └── socket.io.js │ ├── robots.txt │ └── styles ├── config │ ├── 404.js │ ├── 500.js │ ├── adapters.js │ ├── bootstrap.js │ ├── controllers.js │ ├── cors.js │ ├── csrf.js │ ├── i18n.js │ ├── local.js │ ├── locales │ │ ├── _README.md │ │ ├── en.json │ │ └── es.json │ ├── log.js │ ├── policies.js │ ├── routes.js │ ├── session.js │ ├── sockets.js │ └── views.js ├── node_modules │ ├── ejs │ ├── grunt │ ├── optimist │ └── sails-disk ├── package.json └── views ├── 404.ejs ├── 500.ejs ├── home │ └── index.ejs └── layout.ejs
この状態で下記コマンドを実行すると起動(いつものようにnode app.jsでもよい)
デフォルトではポート1337で起動するらしい
$ sails lift info: info: info: Sails.js <| info: v0.9.4 |\ info: /|.\ info: / || \ info: ,' |' \ info: .-'.-==|/_--' info: `--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in `/Users/keisuke/work/sailstest` info: To see your app, visit http://localhost:1337 info: To shut down Sails, press <CTRL> + C at any time. debug: -------------------------------------------------------- debug: :: Tue Sep 17 2013 23:09:12 GMT+0900 (JST) debug: debug: Environment : development debug: Port : 1337 debug: --------------------------------------------------------
ブラウザで開くと初期画面が表示される
sailsにはこれもまたrailsと同じくジェネレーターが付属している
初期ページの通り下記コマンドを実行してみる
$ sails generate foo info: Generating model and controller for foo...
ブラウザで/fooにアクセスしてみる
まだなにも入れていないので空リストが帰ってきてるが、データを入れてみる
実はSailsではジェネレーターでモデルを作成すると自動でREST APIが作成される
下記のようにブラウザで実行してみると、こんな結果が帰ってくる
先ほどの/fooにアクセスしてみると、追加したjohnが追加されている
こんな感じで更新もできる
削除も同様
ACLをつけることもできて、このREST APIの実行も制御できるらしい 素晴らしい
ところで、前回RESTについて書籍を学んだ記事を書いたが、
これ、ぜんぜんRESTじゃないじゃん
そもそもメソッドが全部GETだし、URLにメソッド名が来るのもどうなん? って思ったけど、これはCRUDショートカットってやつで、 ちゃんと/fooにPOST、GET、/foo/:idにPUT、DELETEできるらしい。おみそれしやした
他にもコントローラーのひな形を自動で作ったりできてかなり便利くさい
expressで1から書くのも軽量でいいけど、よくあるMVCのアプリ書くならこっちのほうが早いかも