<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=8" /><title>node.js Foundation</title><style type="text/css" id="wiz_todo_style_id" wiz_link_version="01.00.09">.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-todo-label { display: inline-block; padding-top: 7px; padding-bottom: 6px; line-height: 1.5;} .wiz-todo-label-checked { /*text-decoration: line-through;*/ color: #666;} .wiz-todo-label-unchecked {text-decoration: initial;} .wiz-todo-completed-info {padding-left: 44px; display: inline-block; } .wiz-todo-avatar { width:20px; height: 20px; vertical-align: -20%; margin-right:10px; border-radius: 2px;} .wiz-todo-account, .wiz-todo-dt { color: #666; }</style><link type="text/css" rel="stylesheet" id="wiz_code_highlight_link" href="node.js Foundation_files/wiz_code_highlight.css"></head><body><p><br/></p><p>events 事件有两种:</p><p>System Events C++ Core libuv </p><p>Custom Events JavaScript Core Event Emitter<br/></p><p><br/></p><p>一.The node event emitter</p><p><br/></p><p>1.创建 Emitter module </p><p><br/></p><p>新建 emitte.js文件</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{};</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="com">// 为事件注册监听器</span></code></p></li><li><p><code class="language-js"><span class="typ">Emitter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">on </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">type</span><span class="pun">,</span><span class="pln">listener</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]||[];</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">].</span><span class="pln">push</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">};</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="com">//发射,something happend, listener responed</span></code></p></li><li><p><code class="language-js"><span class="typ">Emitter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">emit </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">type</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">].</span><span class="pln">forEach</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> listener</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">module</span><span class="pun">.</span><span class="pln">exports </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">;</span></code></p></li></ol></pre><p>2.引入emitter 模块</p><p>创建app.js 文件</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'./emitter'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>二.node.js中的events模块</p><p>使用nodejs 中的emit </p><p><br/></p><p>将上述app.js 改为</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>但是以上使用string 注册事件的方式容易出错</p><p><br/></p><p>新建config.js文件</p><p>代码如下: </p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln">module</span><span class="pun">.</span><span class="pln">exports </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> events </span><span class="pun">:{</span></code></p></li><li><p><code class="language-js"><span class="pln"> GREET</span><span class="pun">:</span><span class="str">'greet'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> FILESAVED</span><span class="pun">:</span><span class="str">'filesaved'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li></ol></pre><p><br/></p><p>现在修改app.js文件如下:<br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> eventConfig </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'./config'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p>这样有利于代码的维护升级<br/></p><p><br/></p><p><br/></p><p>三. Object.create prototypes</p><p style="white-space: normal;"><br/></p><p style="white-space: normal;">使用Object.create 生成object 的原型</p><p style="white-space: normal;">创建 app.js ,代码如下: </p><p style="white-space: normal;"><br/></p><pre class="prettyprint linenums prettyprinted"><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> person </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> secondname</span><span class="pun">:</span><span class="str">''</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> greet</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">+</span><span class="str">' '</span><span class="pun">+</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> john </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="pln">person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">john</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'John'</span></code></p></li><li><p><code class="language-js"><span class="pln">john</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> jane </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="pln">person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">jane</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Jane'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">jane</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">john</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">jane</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">());</span></code></p></li></ol></pre><p><br style="white-space: normal;"/></p><p>四.Inheriting from event emitter</p><p><br/></p><p>创建 app.js,使用util模块中的 inherits 来继承原型</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> </span><span class="typ">EventEmitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> util </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'util'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Greeter</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">greeting </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Hello world!'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">util</span><span class="pun">.</span><span class="pln">inherits</span><span class="pun">(</span><span class="typ">Greeter</span><span class="pun">,</span><span class="typ">EventEmitter</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="typ">Greeter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">greet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello,this is '</span><span class="pun">+</span><span class="pln">data</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greeter </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Greeter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln">greeter</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello ,this is an events : '</span><span class="pun">+</span><span class="pln">data</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">greeter</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">(</span><span class="str">'Tony'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p style="white-space: normal;">五.ECMAScript 6</p><p style="white-space: normal;">literal strings</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> name </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Nike'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet </span><span class="pun">=</span><span class="pln"> </span><span class="pun">`</span><span class="typ">Hello</span><span class="pln"> $</span><span class="pun">{</span><span class="pln">name</span><span class="pun">}`;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">greet</span><span class="pun">);</span></code></p></li></ol></pre><p>call and apply</p><p>用于改变调用者 this</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> name</span><span class="pun">:</span><span class="str">'John Doe'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> greet</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">name</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">obj</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">.</span><span class="pln">call</span><span class="pun">({</span><span class="pln">name </span><span class="pun">:</span><span class="pln"> </span><span class="str">'Jane Doe'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln">obj</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">.</span><span class="pln">apply</span><span class="pun">({</span><span class="pln">name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Jane Doe'</span><span class="pun">});</span></code></p></li></ol></pre><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> util </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'util'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Person</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'John'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="typ">Person</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">greet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello '</span><span class="pun">+</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">+</span><span class="pln"> </span><span class="str">' '</span><span class="pun">+</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Policeman</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="typ">Person</span><span class="pun">.</span><span class="pln">call</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);//very important </span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">badgenumber </span><span class="pun">=</span><span class="pln"> </span><span class="str">'1234'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pln">util</span><span class="pun">.</span><span class="pln">inherits</span><span class="pun">(</span><span class="typ">Policeman</span><span class="pun">,</span><span class="typ">Person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> pol</span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Policeman</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln">pol</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">();</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>Javascript 同步的</p><p>Nodejs 异步的</p><p><br/></p><p>Event Driven No-Blocking I?O in V* javascript</p><p><img border="0" style="width: 619px; height: 299px;" src="node.js Foundation_files/35231e02-895c-433d-be9d-1089e8ca2388.png" /></p><p><br/></p><p>no-blocking : do other things without stopping your programing from running</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>Buffer</p><p><br/></p><p>the relationship between buffer and stream</p><p><img border="0" style="width: 624px; height: 320px;" src="node.js Foundation_files/0464b4eb-a0d5-41ae-a4f5-b9502088d82f.png" /></p><p><br/></p><p><br/></p><p><br/></p><p>缓冲区 Buffer的使用:</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> buf </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Buffer</span><span class="pun">(</span><span class="str">'Hello'</span><span class="pun">,</span><span class="str">'utf8'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toJSON</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]);</span></code></p></li><li><p><code class="language-js"><span class="pln">buf</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="str">'wo'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span><span class="pln"> </span><span class="com">//wollo, 会覆盖缓冲区</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>Files and fs </p><p><br/></p><p>ERROR_FIRST CALLBACK: </p><p>callbacks takes an error object as the first parameters;</p><p><br/></p><p>CHUNK:</p><p> A piece of data sent through a stream<br/></p><p>Data is split in 'chunks' and streamed</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFileSync</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,</span><span class="str">'utf8'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">greet</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet2 </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFile</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">data</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Done'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>things about createWriteStream createReadStream </p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code><code class="language-js"><span class="kwd">var</span><span class="pln"> readable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,{</span><span class="pln">encoding</span><span class="pun">:</span><span class="pln"> </span><span class="str">'utf8'</span><span class="pun">,</span><span class="pln">highWaterMark</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16</span><span class="pun">*</span><span class="lit">1024</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code><code class="language-js"><span class="kwd">var</span><span class="pln"> writable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/greatcopy.txt'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">readable</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'data'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">.</span><span class="pln">length</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> writable</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li></ol></pre><p><br/></p><p>pipe </p><p><img border="0" style="width: 686px; height: 422px;" src="node.js Foundation_files/16d74147-b7d7-48be-81b4-300f66f1f663.png" /></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> zlib </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'zlib'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> readable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pln"> </span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> writable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/greatcopy.txt'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> compressed </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/great.txt.gz'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> gzip </span><span class="pun">=</span><span class="pln"> zlib</span><span class="pun">.</span><span class="pln">createGzip</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> readable</span><span class="pun">.</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">writable</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> readable</span><span class="pun">.</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">gzip</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">compressed</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><img border="0" style="width: 722px; height: 418px;" src="node.js Foundation_files/f2f9ecb0-2732-4078-8cdd-21ec4496a08a.png" /></p><p><br/></p><p><br/></p><p><br/></p><p>HTTP_PARSER</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/plain'</span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="str">'Hello world\n'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p> 引入html 文件</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/html'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> html </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFileSync</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">html</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/html'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> html </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">res</span><span class="pun">)</span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>OutPut JSON</p><p>JSON.stringify(obj)</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'application/json'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="str">'John'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> lastname</span><span class="pun">:</span><span class="str">'Doe'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">};</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p>Routing: </p><p>mapping http requests to contents</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="kwd">if</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">url </span><span class="pun">===</span><span class="pln"> </span><span class="str">'/'</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">res</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="kwd">if</span><span class="pun">(</span><span class="pln">res</span><span class="pun">.</span><span class="pln">url </span><span class="pun">===</span><span class="pln"> </span><span class="str">'/api'</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'application/json'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="str">'John'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> lastname</span><span class="pun">:</span><span class="str">'Doe'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">};</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">404</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>使用 npm </p><p>进入文件夹</p><p>npm init ;</p><p>npm install moment</p><p><br/></p><p>发布文件后,删除node_modules后,</p><p>使用npm install</p><p><br/></p><p> --save 添加到package.json 文件中</p><p>npm install jasmine-node --save-dev 开发依赖模块</p><p><br/></p><p>npm install -g nodemon 全局安装</p><p><br/></p><p>npm update ,更新所有的dependencies</p><p><br/></p><p><br/></p><p>使用别人的代码</p><p><br/></p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">,</span><span class="pln">next</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Request Url: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">url</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> next</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><head><link href = assets/style.css type =text/css rel = stylesheet /></head><body><h1>Hello world</h1></body></html>'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><body><h1> Person: '</span><span class="pun">+</span><span class="pln">req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">+</span><span class="str">'</h1></body></html>'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/api'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><body><h1>Hello world</h1></body></html>'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'view engine'</span><span class="pun">,</span><span class="str">'ejs'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">,</span><span class="pln">next</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Request Url: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">url</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> next</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'person'</span><span class="pun">,{</span><span class="pln">ID</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="typ">QStr</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">query</span><span class="pun">.</span><span class="pln">qstr</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p>person.ejs:</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pun"><</span><span class="pln">html</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">link href </span><span class="pun">=</span><span class="str">'assets/styl.css'</span><span class="pln"> type </span><span class="pun">=</span><span class="pln"> </span><span class="str">"text/css"</span><span class="pln"> ref</span><span class="pun">=</span><span class="pln"> </span><span class="str">"stylesheeet"</span><span class="pln"> </span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">h1</span><span class="pun">></span><span class="typ">Peson</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><%=</span><span class="pln">ID </span><span class="pun">%></span><span class="pln"> </span><span class="pun"></</span><span class="pln">h1</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">h2</span><span class="pun">></span><span class="typ">Query</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><%=</span><span class="pln"> </span><span class="typ">QStr</span><span class="pln"> </span><span class="pun">%></span><span class="pln"> </span><span class="pun"></</span><span class="pln">h2</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pun"></</span><span class="pln">html</span><span class="pun">></span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>npm install body-parser</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> bodyParser </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'body-parser'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> urlencodedParser </span><span class="pun">=</span><span class="pln"> bodyParser</span><span class="pun">.</span><span class="pln">urlencoded</span><span class="pun">({</span><span class="pln">extended</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> jsonParser </span><span class="pun">=</span><span class="pln"> bodyParser</span><span class="pun">.</span><span class="pln">json</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'view engine'</span><span class="pun">,</span><span class="str">'ejs'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'index'</span><span class="pun">);</span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'person'</span><span class="pun">,{</span><span class="pln">ID</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="typ">QStr</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">query</span><span class="pun">.</span><span class="pln">qstr</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="str">'/person'</span><span class="pun">,</span><span class="pln">urlencodedParser</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'Thank You!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="str">'/personjson'</span><span class="pun">,</span><span class="pln">jsonParser</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'Thank you jsonParser'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p>index.ejs<br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pun"><</span><span class="pln">html</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">link href </span><span class="pun">=</span><span class="str">'/assets/styl.css'</span><span class="pln"> type </span><span class="pun">=</span><span class="pln"> </span><span class="str">"text/css"</span><span class="pln"> ref</span><span class="pun">=</span><span class="pln"> </span><span class="str">"stylesheeet"</span><span class="pln"> </span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">script src </span><span class="pun">=</span><span class="pln"> </span><span class="str">"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"</span><span class="pun">></</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">h1</span><span class="pun">></span><span class="typ">Hello</span><span class="pln"> </span><span class="typ">World</span><span class="pun">!</</span><span class="pln">h1</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">form method </span><span class="pun">=</span><span class="str">'POST'</span><span class="pln"> action</span><span class="pun">=</span><span class="str">"/person"</span><span class="pun">></span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="typ">First</span><span class="pln"> name</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"text"</span><span class="pln"> id </span><span class="pun">=</span><span class="str">"firstname"</span><span class="pln"> name </span><span class="pun">=</span><span class="str">"firstname"</span><span class="pun">/><</span><span class="pln">br</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="typ">Last</span><span class="pln"> name</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"text"</span><span class="pln"> id</span><span class="pun">=</span><span class="pln"> </span><span class="str">"lastname"</span><span class="pln"> name</span><span class="pun">=</span><span class="pln"> </span><span class="str">"lastname"</span><span class="pun">/><</span><span class="pln">br</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"submit"</span><span class="pln"> value </span><span class="pun">=</span><span class="str">"submit"</span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"></</span><span class="pln">form</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> $</span><span class="pun">.</span><span class="pln">ajax</span><span class="pun">({</span></code></p></li><li><p><code class="language-js"><span class="pln"> type</span><span class="pun">:</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> url</span><span class="pun">:</span><span class="pln"> </span><span class="str">"/personjson"</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> data</span><span class="pun">:</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">({</span><span class="pln">firstname</span><span class="pun">:</span><span class="pln"> </span><span class="str">"John"</span><span class="pun">,</span><span class="pln">lastname</span><span class="pun">:</span><span class="str">"Doe"</span><span class="pun">}),</span></code></p></li><li><p><code class="language-js"><span class="pln"> dataType</span><span class="pun">:</span><span class="pln"> </span><span class="str">'json'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> contentType</span><span class="pun">:</span><span class="pln"> </span><span class="str">'application/json'</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"></</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pun"></</span><span class="pln">html</span><span class="pun">></span></code></p></li></ol></pre><p><br/></p><p>mongoose<br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p></body></html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=8" /><title>node.js Foundation</title><style type="text/css" id="wiz_todo_style_id" wiz_link_version="01.00.09">.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-todo-label { display: inline-block; padding-top: 7px; padding-bottom: 6px; line-height: 1.5;} .wiz-todo-label-checked { /*text-decoration: line-through;*/ color: #666;} .wiz-todo-label-unchecked {text-decoration: initial;} .wiz-todo-completed-info {padding-left: 44px; display: inline-block; } .wiz-todo-avatar { width:20px; height: 20px; vertical-align: -20%; margin-right:10px; border-radius: 2px;} .wiz-todo-account, .wiz-todo-dt { color: #666; }</style><link type="text/css" rel="stylesheet" id="wiz_code_highlight_link" href="node.js Foundation_files/wiz_code_highlight.css"></head><body><p><br/></p><p>events 事件有两种:</p><p>System Events C++ Core libuv </p><p>Custom Events JavaScript Core Event Emitter<br/></p><p><br/></p><p>一.The node event emitter</p><p><br/></p><p>1.创建 Emitter module </p><p><br/></p><p>新建 emitte.js文件</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{};</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="com">// 为事件注册监听器</span></code></p></li><li><p><code class="language-js"><span class="typ">Emitter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">on </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">type</span><span class="pun">,</span><span class="pln">listener</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]||[];</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">].</span><span class="pln">push</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">};</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="com">//发射,something happend, listener responed</span></code></p></li><li><p><code class="language-js"><span class="typ">Emitter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">emit </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">type</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">]){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">events</span><span class="pun">[</span><span class="pln">type</span><span class="pun">].</span><span class="pln">forEach</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> listener</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">module</span><span class="pun">.</span><span class="pln">exports </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">;</span></code></p></li></ol></pre><p>2.引入emitter 模块</p><p>创建app.js 文件</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'./emitter'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>二.node.js中的events模块</p><p>使用nodejs 中的emit </p><p><br/></p><p>将上述app.js 改为</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>但是以上使用string 注册事件的方式容易出错</p><p><br/></p><p>新建config.js文件</p><p>代码如下: </p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln">module</span><span class="pun">.</span><span class="pln">exports </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> events </span><span class="pun">:{</span></code></p></li><li><p><code class="language-js"><span class="pln"> GREET</span><span class="pun">:</span><span class="str">'greet'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> FILESAVED</span><span class="pun">:</span><span class="str">'filesaved'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li></ol></pre><p><br/></p><p>现在修改app.js文件如下:<br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> eventConfig </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'./config'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> emtr </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Emitter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Somewhere,some said hello.'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="com">//注册事件以及监听器</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'A greet occured!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">emtr</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="pln">eventConfig</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p>这样有利于代码的维护升级<br/></p><p><br/></p><p><br/></p><p>三. Object.create prototypes</p><p style="white-space: normal;"><br/></p><p style="white-space: normal;">使用Object.create 生成object 的原型</p><p style="white-space: normal;">创建 app.js ,代码如下: </p><p style="white-space: normal;"><br/></p><pre class="prettyprint linenums prettyprinted"><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> person </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> secondname</span><span class="pun">:</span><span class="str">''</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> greet</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">+</span><span class="str">' '</span><span class="pun">+</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> john </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="pln">person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">john</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'John'</span></code></p></li><li><p><code class="language-js"><span class="pln">john</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> jane </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="pln">person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">jane</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Jane'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">jane</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">john</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">jane</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">());</span></code></p></li></ol></pre><p><br style="white-space: normal;"/></p><p>四.Inheriting from event emitter</p><p><br/></p><p>创建 app.js,使用util模块中的 inherits 来继承原型</p><p>代码如下</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> </span><span class="typ">EventEmitter</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'events'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> util </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'util'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Greeter</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">greeting </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Hello world!'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">util</span><span class="pun">.</span><span class="pln">inherits</span><span class="pun">(</span><span class="typ">Greeter</span><span class="pun">,</span><span class="typ">EventEmitter</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="typ">Greeter</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">greet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello,this is '</span><span class="pun">+</span><span class="pln">data</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="pln">data</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greeter </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Greeter</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln">greeter</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'greet'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello ,this is an events : '</span><span class="pun">+</span><span class="pln">data</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">greeter</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">(</span><span class="str">'Tony'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p style="white-space: normal;">五.ECMAScript 6</p><p style="white-space: normal;">literal strings</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> name </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Nike'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet </span><span class="pun">=</span><span class="pln"> </span><span class="pun">`</span><span class="typ">Hello</span><span class="pln"> $</span><span class="pun">{</span><span class="pln">name</span><span class="pun">}`;</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">greet</span><span class="pun">);</span></code></p></li></ol></pre><p>call and apply</p><p>用于改变调用者 this</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> name</span><span class="pun">:</span><span class="str">'John Doe'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> greet</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">name</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">}</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">obj</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">.</span><span class="pln">call</span><span class="pun">({</span><span class="pln">name </span><span class="pun">:</span><span class="pln"> </span><span class="str">'Jane Doe'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln">obj</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">.</span><span class="pln">apply</span><span class="pun">({</span><span class="pln">name</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Jane Doe'</span><span class="pun">});</span></code></p></li></ol></pre><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> util </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'util'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Person</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'John'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname </span><span class="pun">=</span><span class="pln"> </span><span class="str">'Doe'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="typ">Person</span><span class="pun">.</span><span class="pln">prototype</span><span class="pun">.</span><span class="pln">greet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Hello '</span><span class="pun">+</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">firstname </span><span class="pun">+</span><span class="pln"> </span><span class="str">' '</span><span class="pun">+</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">function</span><span class="pln"> </span><span class="typ">Policeman</span><span class="pun">(){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="typ">Person</span><span class="pun">.</span><span class="pln">call</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);//very important </span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">this</span><span class="pun">.</span><span class="pln">badgenumber </span><span class="pun">=</span><span class="pln"> </span><span class="str">'1234'</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pln">util</span><span class="pun">.</span><span class="pln">inherits</span><span class="pun">(</span><span class="typ">Policeman</span><span class="pun">,</span><span class="typ">Person</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> pol</span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Policeman</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln">pol</span><span class="pun">.</span><span class="pln">greet</span><span class="pun">();</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>Javascript 同步的</p><p>Nodejs 异步的</p><p><br/></p><p>Event Driven No-Blocking I?O in V* javascript</p><p><img border="0" style="width: 619px; height: 299px;" src="node.js Foundation_files/35231e02-895c-433d-be9d-1089e8ca2388.png" /></p><p><br/></p><p>no-blocking : do other things without stopping your programing from running</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>Buffer</p><p><br/></p><p>the relationship between buffer and stream</p><p><img border="0" style="width: 624px; height: 320px;" src="node.js Foundation_files/0464b4eb-a0d5-41ae-a4f5-b9502088d82f.png" /></p><p><br/></p><p><br/></p><p><br/></p><p>缓冲区 Buffer的使用:</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> buf </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Buffer</span><span class="pun">(</span><span class="str">'Hello'</span><span class="pun">,</span><span class="str">'utf8'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toJSON</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]);</span></code></p></li><li><p><code class="language-js"><span class="pln">buf</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="str">'wo'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">buf</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span><span class="pln"> </span><span class="com">//wollo, 会覆盖缓冲区</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>Files and fs </p><p><br/></p><p>ERROR_FIRST CALLBACK: </p><p>callbacks takes an error object as the first parameters;</p><p><br/></p><p>CHUNK:</p><p> A piece of data sent through a stream<br/></p><p>Data is split in 'chunks' and streamed</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFileSync</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,</span><span class="str">'utf8'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">greet</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> greet2 </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFile</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">,</span><span class="pln">data</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">data</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln">console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Done'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>things about createWriteStream createReadStream </p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code><code class="language-js"><span class="kwd">var</span><span class="pln"> readable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pun">,{</span><span class="pln">encoding</span><span class="pun">:</span><span class="pln"> </span><span class="str">'utf8'</span><span class="pun">,</span><span class="pln">highWaterMark</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16</span><span class="pun">*</span><span class="lit">1024</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code><code class="language-js"><span class="kwd">var</span><span class="pln"> writable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/greatcopy.txt'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">readable</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'data'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">.</span><span class="pln">length</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> writable</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">chunk</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li></ol></pre><p><br/></p><p>pipe </p><p><img border="0" style="width: 686px; height: 422px;" src="node.js Foundation_files/16d74147-b7d7-48be-81b4-300f66f1f663.png" /></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> zlib </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'zlib'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> readable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/greet.txt'</span><span class="pln"> </span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> writable </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/greatcopy.txt'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> compressed </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createWriteStream</span><span class="pun">(</span><span class="pln">__dirname </span><span class="pun">+</span><span class="pln"> </span><span class="str">'/great.txt.gz'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> gzip </span><span class="pun">=</span><span class="pln"> zlib</span><span class="pun">.</span><span class="pln">createGzip</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> readable</span><span class="pun">.</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">writable</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> readable</span><span class="pun">.</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">gzip</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">compressed</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><img border="0" style="width: 722px; height: 418px;" src="node.js Foundation_files/f2f9ecb0-2732-4078-8cdd-21ec4496a08a.png" /></p><p><br/></p><p><br/></p><p><br/></p><p>HTTP_PARSER</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/plain'</span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="str">'Hello world\n'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p> 引入html 文件</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/html'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> html </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">readFileSync</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">);</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">html</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'text/html'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> html </span><span class="pun">=</span><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">res</span><span class="pun">)</span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>OutPut JSON</p><p>JSON.stringify(obj)</p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'application/json'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="str">'John'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> lastname</span><span class="pun">:</span><span class="str">'Doe'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">};</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p>Routing: </p><p>mapping http requests to contents</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> http </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'http'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> fs </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'fs'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln">http</span><span class="pun">.</span><span class="pln">createServer</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="kwd">if</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">url </span><span class="pun">===</span><span class="pln"> </span><span class="str">'/'</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> fs</span><span class="pun">.</span><span class="pln">createReadStream</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/index.html'</span><span class="pun">).</span><span class="pln">pipe</span><span class="pun">(</span><span class="pln">res</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="kwd">if</span><span class="pun">(</span><span class="pln">res</span><span class="pun">.</span><span class="pln">url </span><span class="pun">===</span><span class="pln"> </span><span class="str">'/api'</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,{</span><span class="str">'Content-Type'</span><span class="pun">:</span><span class="str">'application/json'</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="kwd">var</span><span class="pln"> obj </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></p></li><li><p><code class="language-js"><span class="pln"> firstname</span><span class="pun">:</span><span class="str">'John'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> lastname</span><span class="pun">:</span><span class="str">'Doe'</span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun">};</span><span class="pln"></span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">(</span><span class="pln">JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">}</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">writeHead</span><span class="pun">(</span><span class="lit">404</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">end</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pun">}).</span><span class="pln">listen</span><span class="pun">(</span><span class="lit">1337</span><span class="pun">,</span><span class="str">'127.0.0.1'</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><p><br/></p><p>使用 npm </p><p>进入文件夹</p><p>npm init ;</p><p>npm install moment</p><p><br/></p><p>发布文件后,删除node_modules后,</p><p>使用npm install</p><p><br/></p><p> --save 添加到package.json 文件中</p><p>npm install jasmine-node --save-dev 开发依赖模块</p><p><br/></p><p>npm install -g nodemon 全局安装</p><p><br/></p><p>npm update ,更新所有的dependencies</p><p><br/></p><p><br/></p><p>使用别人的代码</p><p><br/></p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">,</span><span class="pln">next</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Request Url: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">url</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> next</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><head><link href = assets/style.css type =text/css rel = stylesheet /></head><body><h1>Hello world</h1></body></html>'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">});</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><body><h1> Person: '</span><span class="pun">+</span><span class="pln">req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">+</span><span class="str">'</h1></body></html>'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/api'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'<html><body><h1>Hello world</h1></body></html>'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'view engine'</span><span class="pun">,</span><span class="str">'ejs'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">,</span><span class="pln">next</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'Request Url: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">url</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> next</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'person'</span><span class="pun">,{</span><span class="pln">ID</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="typ">QStr</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">query</span><span class="pun">.</span><span class="pln">qstr</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p>person.ejs:</p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pun"><</span><span class="pln">html</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">link href </span><span class="pun">=</span><span class="str">'assets/styl.css'</span><span class="pln"> type </span><span class="pun">=</span><span class="pln"> </span><span class="str">"text/css"</span><span class="pln"> ref</span><span class="pun">=</span><span class="pln"> </span><span class="str">"stylesheeet"</span><span class="pln"> </span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">h1</span><span class="pun">></span><span class="typ">Peson</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><%=</span><span class="pln">ID </span><span class="pun">%></span><span class="pln"> </span><span class="pun"></</span><span class="pln">h1</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">h2</span><span class="pun">></span><span class="typ">Query</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Value</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><%=</span><span class="pln"> </span><span class="typ">QStr</span><span class="pln"> </span><span class="pun">%></span><span class="pln"> </span><span class="pun"></</span><span class="pln">h2</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pun"></</span><span class="pln">html</span><span class="pun">></span></code></p></li></ol></pre><p><br/></p><p><br/></p><p>npm install body-parser</p><p><br/></p><p><br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> express </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'express'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> bodyParser </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">'body-parser'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> app </span><span class="pun">=</span><span class="pln"> express</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> urlencodedParser </span><span class="pun">=</span><span class="pln"> bodyParser</span><span class="pun">.</span><span class="pln">urlencoded</span><span class="pun">({</span><span class="pln">extended</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> jsonParser </span><span class="pun">=</span><span class="pln"> bodyParser</span><span class="pun">.</span><span class="pln">json</span><span class="pun">();</span></code></p></li><li><p><code class="language-js"><span class="kwd">var</span><span class="pln"> port </span><span class="pun">=</span><span class="pln"> process</span><span class="pun">.</span><span class="pln">env</span><span class="pun">.</span><span class="pln">PORT </span><span class="pun">||</span><span class="pln"> </span><span class="lit">3000</span><span class="pun">;</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">use</span><span class="pun">(</span><span class="str">'/assets'</span><span class="pun">,</span><span class="pln">express</span><span class="pun">.</span><span class="kwd">static</span><span class="pun">(</span><span class="pln">__dirname</span><span class="pun">+</span><span class="str">'/public'</span><span class="pun">));</span></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">'view engine'</span><span class="pun">,</span><span class="str">'ejs'</span><span class="pun">)</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'index'</span><span class="pun">);</span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">'/person/:id'</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">render</span><span class="pun">(</span><span class="str">'person'</span><span class="pun">,{</span><span class="pln">ID</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">params</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="typ">QStr</span><span class="pun">:</span><span class="pln"> req</span><span class="pun">.</span><span class="pln">query</span><span class="pun">.</span><span class="pln">qstr</span><span class="pun">});</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="str">'/person'</span><span class="pun">,</span><span class="pln">urlencodedParser</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'Thank You!'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="str">'/personjson'</span><span class="pun">,</span><span class="pln">jsonParser</span><span class="pun">,</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">req</span><span class="pun">,</span><span class="pln">res</span><span class="pun">){</span></code></p></li><li><p><code class="language-js"><span class="pln"> res</span><span class="pun">.</span><span class="pln">send</span><span class="pun">(</span><span class="str">'Thank you jsonParser'</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">firstname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">req</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">lastname</span><span class="pun">);</span></code></p></li><li><p><code class="language-js"><span class="pun">})</span></code></p></li><li><p><code class="language-js"></code></p></li><li><p><code class="language-js"><span class="pln">app</span><span class="pun">.</span><span class="pln">listen</span><span class="pun">(</span><span class="pln">port</span><span class="pun">);</span></code></p></li></ol></pre><p><br/></p><p>index.ejs<br/></p><pre class="prettyprint linenums prettyprinted" style=""><ol class="linenums list-paddingleft-2"><li><p><code class="language-js"><span class="pun"><</span><span class="pln">html</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">link href </span><span class="pun">=</span><span class="str">'/assets/styl.css'</span><span class="pln"> type </span><span class="pun">=</span><span class="pln"> </span><span class="str">"text/css"</span><span class="pln"> ref</span><span class="pun">=</span><span class="pln"> </span><span class="str">"stylesheeet"</span><span class="pln"> </span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">script src </span><span class="pun">=</span><span class="pln"> </span><span class="str">"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"</span><span class="pun">></</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">head</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">h1</span><span class="pun">></span><span class="typ">Hello</span><span class="pln"> </span><span class="typ">World</span><span class="pun">!</</span><span class="pln">h1</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">form method </span><span class="pun">=</span><span class="str">'POST'</span><span class="pln"> action</span><span class="pun">=</span><span class="str">"/person"</span><span class="pun">></span><span class="pln"> </span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="typ">First</span><span class="pln"> name</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"text"</span><span class="pln"> id </span><span class="pun">=</span><span class="str">"firstname"</span><span class="pln"> name </span><span class="pun">=</span><span class="str">"firstname"</span><span class="pun">/><</span><span class="pln">br</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="typ">Last</span><span class="pln"> name</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"text"</span><span class="pln"> id</span><span class="pun">=</span><span class="pln"> </span><span class="str">"lastname"</span><span class="pln"> name</span><span class="pun">=</span><span class="pln"> </span><span class="str">"lastname"</span><span class="pun">/><</span><span class="pln">br</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"><</span><span class="pln">input type </span><span class="pun">=</span><span class="str">"submit"</span><span class="pln"> value </span><span class="pun">=</span><span class="str">"submit"</span><span class="pun">/></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"></</span><span class="pln">form</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"><</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"> $</span><span class="pun">.</span><span class="pln">ajax</span><span class="pun">({</span></code></p></li><li><p><code class="language-js"><span class="pln"> type</span><span class="pun">:</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> url</span><span class="pun">:</span><span class="pln"> </span><span class="str">"/personjson"</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> data</span><span class="pun">:</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">({</span><span class="pln">firstname</span><span class="pun">:</span><span class="pln"> </span><span class="str">"John"</span><span class="pun">,</span><span class="pln">lastname</span><span class="pun">:</span><span class="str">"Doe"</span><span class="pun">}),</span></code></p></li><li><p><code class="language-js"><span class="pln"> dataType</span><span class="pun">:</span><span class="pln"> </span><span class="str">'json'</span><span class="pun">,</span></code></p></li><li><p><code class="language-js"><span class="pln"> contentType</span><span class="pun">:</span><span class="pln"> </span><span class="str">'application/json'</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun">})</span></code></p></li><li><p><code class="language-js"><span class="pln"> </span><span class="pun"></</span><span class="pln">script</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pln"></span><span class="pun"></</span><span class="pln">body</span><span class="pun">></span></code></p></li><li><p><code class="language-js"><span class="pun"></</span><span class="pln">html</span><span class="pun">></span></code></p></li></ol></pre><p><br/></p><p>mongoose<br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p></body></html>