Nodejs

386 views
267 views

Published on

社内勉強会資料

Published in: Internet
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
386
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Nodejs

  1. 1. node.js
  2. 2. • サーバーサイドJavaScript 非ブラウザJavaScript • Google V8 JavaScriptエンジン • 非同期IO • C10K問題クリア • 初登場 2009年 • 5月 • 豊富なモジュール 1
  3. 3. 2 Hello World $ node hello.js Webアプリケーション var http = require('http'); var server = http.createServer( function (request, response) { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.write('Hello World!!n'); response.end(); } ).listen(8124); $ node hello.js Hello World! スクリプト実行 console.log("Hello World!"); $ node > console.log("Hello World!"); Hello World! 対話環境 hello.js hello.js
  4. 4. nvm • 複数バージョンの node.js を切り分け • 拡張パッケージの中にはバージョン依存のものがある 3 $ git clone git://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh $ nvm install v0.10.28 $ nvm use v0.10.28 $ node –v v0.10.28 nvm インストール nvm上に特定バージョンのnode.jsをインストー ル インストールされた特定バージョンのnode.jsを 利用 $ nvm alias default v0.10.28 今後のデフォルトのバージョンを変更
  5. 5. npm • node package manager • モジュール管理 4 $ npm install utcconv $ npm install –g utcconv ターミナルからコマンド として実行できる。 $ npm install –g titanium $ titanium –v 3.2.0 グローバルインストー ル ローカルインストー ル 作業ディレクトリ配下の node_modulesに配置 アプリからRequireされて利 用. ├── hello.js ├── node_module │ └──express └── package.json
  6. 6. 5 $ npm init $ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sane defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (hello) version: (0.0.0) description: Hello World entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /Users/masu/Dropbox/node/hello/package.json: { "name": "hello", "version": "0.0.0", "description": "Hello World", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes) $ プロジェクトの初期設定を 対話式に行うコマンド 「package.json」を生成す るだけ 「package.json」は後から 自分で作成してもいい 「package.json」はなくも node.js は使える
  7. 7. 6 $ npm install { "name": "hello", "version": "0.0.0", "main": "index.js", "dependencies": { "express": "*" } } パッケージディレクトリ . ├── index.js └── package.json . ├── index.js ├── node_module │ └──express └── package.json package.json git clone . ├── index.js └── package.json $ npm install node_modules は構成管理対象から外すのが一般的 echo "node_modules/" >> .gitignore
  8. 8. 便利なモジュール 7 Unility UglifyJS jshint grunt yeoman underscore Altjs Coffee-script jade TypeScript DB node-mysql node-postgress redis node-mongodb-native test mocha nodeunit WebSocket ws Socket.io Web express restify sailsjs Debug node-dev node-inspector
  9. 9. npmモジュール作成 ① npm へアカウント登録 8 $ npm adduser Username: masum Password: Email: (this IS public) masa@masum.jp $ npm adduser ② アクセストークン生成 $ cat ~/.npmrc _auth = xxxxxxxxxxxxxx email = masa@masum.jp ~/.npmrc に token情報が書き込まれる
  10. 10. npmモジュール作成 9 var cli = module.exports; cli.run = function() { var utc = parseInt(process.argv[2]); var date = new Date(utc); console.log(date); } $ utcconv 1249968975000 Tue Aug 11 2009 14:36:15 GMT+0900 (JST) UTC変換するCLIを作成する lib/utcconv.js #!/usr/bin/env node 'use strict' var utcconv = require('../lib/utcconv'); utcconv.run(); bin/utcconv ③ プログラム作成 { "name": "utcconv", "version": "0.0.1", "description": "Convert UTC Format", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "masum", "license": "MIT", "preferGlobal": true, "bin": { "utcconv": "bin/utcconv" } } package.json 「npm init」の後にこれを追 加
  11. 11. npmモジュール作成 10 ~/.npmrc に token情報が書 き込まれる npm サイトで検索 $ npm publish npm http PUT https://registry.npmjs.org/utcconv npm http 201 https://registry.npmjs.org/utcconv + utcconv@0.0.1 ④ 公開
  12. 12. 採用例 • PayPal – PayPal社がバックエンドをJavaからJavaScriptへ移行 • 米Yahoo! – 米Yahoo!がJSフレームワーク「Mojito」と、Node.jsのホスティング環境「Manhattan」発表。 • 第64回NHK紅白歌合戦 – 生放送と連動して出演歌手や楽曲情報を表示するセカンドスクリーン機能を持ったスマート フォンアプリやWebブラウザー向けに、メッセージ配信プラットフォームを開発 • サイバーエージェント – ピグライフ • LInkedIn – パフォーマンスとスケーラビリティを理由として,同社のモバイル用バックエンドインフラを Ruby on Rails から Node.js にリプレース 11

×