kiyo_hikoのブログ

メモ+日記?

node.js勉強(2)

とりあえず↓の3章読んだ。忘れないうちに要点だけメモル

現場で通用する力を身につける Node.jsの教科書

現場で通用する力を身につける Node.jsの教科書

クッキー

cookieをダイレクトに操作するなら↓でOK

npm install cookie

cookieモジュールが使える。これのparseメソッドcookieをパースして文字列だったものをオブジェクトに変える
「lasturl=/hoge」みたいなクッキーがあった場合、

var cook = require('cookie');
...
var cobj = cook.parse(req.headers.cookie);
console.log(cobj.lasturl);

みたいな風に使える。

逆に、serializeメソッドcookie.serialize(keyname, value, {someKey: someOptionValue})的な書き方で、cookieにセットする。

cookieモジュールは日本語をエンコード/デコードしてくれるので普段は意識して扱わなくてよくなる

Jade

> npm install jade

テンプレートエンジン。
htmlはキーワードとインデントで書いておき、それをjade.comple(file-content)でHTMLをレンダリングする関数を返す。
この関数に対して、レンダリング時に引数を渡せばコンテンツの内容は可変になる

doctype
  html
    head
      title サイトの標題
    body
      h1 ようこそ
      p テストサイトにようこそ

htmlのタグのほか、for、if、case~whenなど制御構文を記述できる

Jadeでより少ない手数で開発するには、ほかのjadeファイルをincludeするか、拡張する

この場合、たとえばincludeなどのサブフォルダーに部品jadeを切っておき、コンパイルするときにそのファイルパスに関する情報を渡す。レンダリングするときじゃない。

var jade = require('jade');
var f = jade.compile(index, {
  filename: "include",
  rootpath: __dirname
});
  • filenameにはincludeなどの相対パス
  • rootpathにはプロジェクトの?基底のパス。__dirnameはCWD

Jadeで開発を省力化するには - includeを使う

  • SSIみたく部分部品をテンプレートに取り込める。共通部品を書き込むのに使う感じか。

部品を取り込みたい場所にinclude命令を書く。引数は「include/jadeの拡張子なしでベース名」

Jadeで開発を省力化するには - 継承を使う

  • 継承とは、ページ全体の展望をドカッと書いておいて、個別部分だけに差分を用意することであるみたい。使いどころとしてはincludeよりさらに大粒なところになるんだろうか

個別部分はブロックとして宣言しておき、拡張されたjadeがblockをオーバーライドする。

base.jade

doctype
html
  head
  ...
  body
    block content

extended.jade

extends include/base
block content
  差分コンテントです