brunch(backbone.js) + Expressでナントカ

基本MVCはbackbone.jsで。node側はなるべくAPIに徹する構成にしたい。

とりあえず生成してみる。

$ express myapp  // Expressアプリ生成
$ cd myapp
$ npm link express jade  // 依存関係とか
$ cd ../
 
$ brunch new  // brunchアプリ生成

現状こんなディレクトリ構成。

brunch  // クライアントサイドアプリ
 - build
    - web  //*** ここではなく ***//
 - config.yaml
 - index.html
 - src
myapp  // Expressアプリ
 - app.js
 - node_modules
 - package.json
 - public  //*** こっちにビルドしたい ***//
 - routes
 - views

そこでCoffeeScriptのビルドパスをmyapp/publicに変更。

/*-- brunch/config.yaml --*/
buildPath:
  myapp/pubic
...

そしてコンパイル。

$ brunch build

さらにindexファイルを移動して、、、

$ mv brunch/index.html myapp/public/web/index.html

それにあわせてパスを修正

<!-- myapp/public/web/index.html -->
...
<link rel="stylesheet" href="/css/main.css" type="text/css" media="screen">
<script src="/js/app.js"></script>
...

/pubic/webのほうを静的に参照させるため、app.jsのstaticを修正。

/* -- myapp/app.js -- */;
...
//app.use(express.static(__dirname + '/pubic'));
app.use(express.static(__dirname + '/pubic/web'));
...
//app.get('/', routes.index);
app.get('/api', routes.index);
...

起動してみる。

$ node myapp/app.js

http://localhost:3000 -> brunchアプリを参照
http://localhost:3000/api -> Expressアプリを参照

よし。おk。