RailwayJSのセットアップ
※すでにnpmやmongodbの設定は済んでいるものとする。
nodejsのサンプルがみんなオレオレコードばっかりで、どういうデザインパターンがいいのか悩んでいたら、Rails風のMVCを提供するフレームワークを見つけました。
一つがRailwayJSで、もう一つがTower.js。後者のほうが後発で機能は多い印象だけど、その分リソースが圧倒的に少なかったし、
実際にインスコしていじってみても、クライアント側のMVCとサーバ側のMVCの関連性がさっぱり。
それに、nodejsでフルスタックをアピールするのって、なんか玄人からは馬鹿にされそう笑
RailwayJSは標準テンプレートがejsで基本的にコードは.jsなので、カスタマイズが必要です。
今回の構成は
◯Viewテンプレート Jade
◯モデルのドライバ mongoose
◯記述言語 coffeescript
です。
テスティングフレームワークにJasmineを使いたかったんだけど、これはまた今度ということで。
npm install railway -g railway init blog --coffee && cd blog #=>coffeeで作成する npm install -l coffee server #=>起動することを確認。
次に標準テンプレートをjadeにする
◯config/environment.coffee
app.configure -> cwd = process.cwd() app.set 'view engine', 'jade' #=>ここを変更 app.set 'view options', complexNames: true app.enable 'coffee'
◯npmfile.coffee
require 'ejs-ext' require 'jugglingdb' require 'seedjs' require 'jade-ext' #=>追加
◯package.json
, "dependencies": { "ejs": "*" , "ejs-ext": "*" , "jade": "*" #=>追加 , "jade-ext": "*" #=>追加 , "express": "~2.x"
で、次にscaffold。
railway g scaffold post title content --coffee
#=>coffeescriptでgenerateする
これで確認すると、ヘッダーが少し出力が異なっていると思います。
その点は、initした際にできるapp/views/layouts/application_layout.ejsがjadeになっていないためです。
記述をapp/views/layouts/posts_layout.jadeに移すとよいでしょう。