はじめに
少し前にこんな記事を書いた。
これを受けて、何か新しい言語を、ちゃんとコア部分を理解して習得するプロセスを経験しよう、と思っていたところ、最近node.jsってよくきくなぁ、なんやろと調べるとサーバサイドjava script
java scriptは何か異常に苦手意識があって、シェアから考えても絶対知っておいたほうがいいと思うんですが、フロント側の実装に手がでないままでした。
ただ自分が多少馴染みのあるサーバサイドであればjava scriptに馴染みながら実装できるのではないか、と思って手を出しました。
本
はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
- 作者: 松島浩道
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/03/15
- メディア: 大型本
- クリック: 15回
- この商品を含むブログ (5件) を見る
JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2015/08/31
- メディア: 単行本
- この商品を含むブログ (2件) を見る
気づいたら2冊手に取っててウケる。思い立ったその日の帰りに本屋で買って帰りました。 元々買おうとしていたのは入門用のはじめてのnode.jsでしたが、本屋で見かけて、クローラーは今後絶対何を開発するでも必要だと思ったので、ついでにやったれ!と思って買いました。
環境構築
パッケージ持ってきて一発です。v5.5.0を選びました。
MacBook-Air:~ take$ node -v
v5.5.0
hello,world
公式サイトから。
const http = require('http'); const hostname = '127.0.0.1'; const port = 8000; http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(port, hostname, () =>{ console.log('Server running at http://${hostname}:${port}/'); });
実行する。
MacBook-Air:node take$ node hello_world.js Server running at http://${hostname}:${port}/
(変数展開されんのかい)
ちなみにhello world部分を
res.end('Hello World'+ req.url);
として、http://localhost:8080/hoge とアクセスすると
と表示された。
ちなみにdebugを指定するとdebugモードで動く。覚えておいたほうが良さそう。 nでステップ実行ができるし、面白いのがこのファイルだけじゃなくて内部moduleまで追いかけてるのは勉強になりそうだなあ。
MacBook-Air:node take$ node debug hello_world.js < Debugger listening on port 5858 connecting to 127.0.0.1:5858 ... ok break in hello_world.js:1 > 1 const http = require('http'); 2 const hostname = '127.0.0.1'; 3 const port = 8000; debug> n break in hello_world.js:2 1 const http = require('http'); > 2 const hostname = '127.0.0.1'; 3 const port = 8000; 4 debug> n break in hello_world.js:3 1 const http = require('http'); 2 const hostname = '127.0.0.1'; > 3 const port = 8000; 4 5 http.createServer((req, res) => { debug> n break in hello_world.js:5 3 const port = 8000; 4 > 5 http.createServer((req, res) => { 6 res.writeHead(200, {'Content-Type': 'text/plain'}); 7 res.end('Hello World'+ req.url); debug> n break in hello_world.js:13 11 12 >13 }); debug> n break in module.js:414 412 if (depth === 0) stat.cache = new Map(); 413 const result = compiledWrapper.apply(this.exports, args); >414 if (depth === 0) stat.cache = null; 415 return result; 416 }; debug> n break in module.js:414 412 if (depth === 0) stat.cache = new Map(); 413 const result = compiledWrapper.apply(this.exports, args); >414 if (depth === 0) stat.cache = null; 415 return result; 416 };
終わりに
今日はここまで。プロセスやスレッドの挙動、apacheとの違いを一気に理解するチャンスなので、RestAPIパズルの記事で知ったWebを支える技術を買ったのでこれを読んで違いをまとめたい。
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- 作者: 山本陽平
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 4,320回
- この商品を含むブログ (182件) を見る
余談
2/5に投稿予約したつもりが投稿されてなくてここで連続記録途切れてます。笑う。