{"id":4425,"date":"2015-11-18T22:48:18","date_gmt":"2015-11-18T14:48:18","guid":{"rendered":"https:\/\/sdeno.com\/?p=4425"},"modified":"2016-07-04T20:52:51","modified_gmt":"2016-07-04T12:52:51","slug":"nodejs%e7%ae%80%e5%8d%95%e6%90%ad%e5%bb%ba%e7%bd%91%e7%ab%99","status":"publish","type":"post","link":"https:\/\/sdeno.com\/?p=4425","title":{"rendered":"nodejs\u7b80\u5355\u642d\u5efa\u7f51\u7ad9(\u63a8\u8350)"},"content":{"rendered":"<p>nodejs www \u76ee\u5f55 express \u5b89\u88c5<\/p>\n<p>\u8981\u4f7f\u7528nodejs\u5199\u6211\u4eec\u7b2c\u4e00\u4e2a\u7a0b\u5e8f\u9700\u8981\u5b89\u88c5nodejs\u73af\u5883\u548cnpm\uff0c\u53ef\u4ee5\u67e5\u770b<a href=\"https:\/\/sdeno.com\/?p=4287\" target=\"_blank\">grunt\u5165\u95e8\u6559\u7a0b<\/a>\u91cc\u9762\u5c31\u6709\u4ecb\u7ecd\u5b89\u88c5nodejs\u73af\u5883\u548cnpm\u4ee5\u53cagrunt\u524d\u7aef\u96c6\u6210\u89e3\u51b3\u65b9\u6848\u5de5\u5177\u3002\u6b64\u6587\u7ae0\u63a8\u8350\u770b\u4e0d\u7136\u540e\u9762\u5bf9nodejs\u4e86\u89e3\u53ef\u80fd\u5403\u529b\u3002\u5176\u6b21\u4e5f\u770b\u4e0b<a href=\"https:\/\/sdeno.com\/?p=4421\" target=\"_blank\">nodejs npm install\u5168\u5c40\u5b89\u88c5\u548c\u672c\u5730\u5b89\u88c5\u7684\u533a\u522b<\/a>\u3002\u6700\u540e\u9009\u62e9\u6027\u770b\u4e0b<a href=\"https:\/\/sdeno.com\/?p=4417\" target=\"_blank\">\u7b80\u5355\u8bf4\u660eGoogle\u7814\u53d1\u7684V8 JavaScript\u5f15\u64ce<\/a>\u3002\u4e0a\u9762\u7684\u90fd\u770b\u4e86\u4f60\u4e5f\u5bf9nodejs\u6709\u70b9\u521d\u6b65\u5370\u8c61\u4e86\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u73b0\u5728\u6211\u4eec\u6765\u5efa\u7acb\u4e00\u4e2a\u7b80\u5355\u7684www\u7f51\u7ad9\u7ec4\u5408\u662fnodejs+express+ejs+mysql<\/p>\n<p>nodejs \u76f8\u5f53\u4e8e php<\/p>\n<p>express\u6846\u67b6 \u76f8\u5f53\u4e8e\u00a0thinkphp\u91cc\u9762\u6709\u81ea\u5df1\u5c01\u88c5\u597d\u7684\u5c5e\u6027\u548c\u65b9\u6cd5<\/p>\n<p>ejs\u6a21\u677f \u76f8\u5f53\u4e8e\u00a0bootstrap \u00a0 \uff08Jade\u6a21\u677f\u6bd4\u8f83\u597d\u4f46\u662f\u4ecb\u4e8e\u5b66\u4e60\u4f7f\u7528\u4f20\u7edf\u7c7b\u4f3chtml\u6a21\u677f\u5bb9\u6613\u5b66\u4e60\uff09<\/p>\n<p>&nbsp;<\/p>\n<p>1\uff0c\u5b89\u88c5express<\/p>\n<pre>npm install -g express-generator\r\n\u63a5\u7740\u6267\u884c\r\nnpm install express -gd  \/\/\u5168\u5c40\u5b89\u88c5\uff08npm install express\u5c40\u90e8\u5b89\u88c5\uff09\r\n\r\n-g\u4ee3\u8868\u5b89\u88c5\u5230NODE_PATH\u7684lib\u91cc\u9762\uff0c\u800c-d\u4ee3\u8868\u628a\u76f8\u4f9d\u6027\u5957\u4ef6\u4e5f\u4e00\u8d77\u5b89\u88c5\u3002\u5982\u679c\u6c92\u6709-g\u7684\u8bdd\u4f1a\u5b89\u88c5\u76ee\u524d\u6240\u5728\u7684\u76ee\u5f55(\u4f1a\u5efa\u7acb\u4e00\u4e2anode_modules\u7684\u6587\u4ef6\u5939)\u3002\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u67e5\u770b\u7248\u672c\u53f7\u662f\u5426\u5b89\u88c5\u6210\u529f<\/p>\n<pre>\u00a0express -V # \u68c0\u67e5express\u7684\u7248\u672c<\/pre>\n<p>&nbsp;<\/p>\n<p>2\uff0c\u5efa\u7acb\u5de5\u4f5c\u76ee\u5f55<\/p>\n<p>\u5efa\u7acb\u4e00\u4e2a\u76ee\u5f55\u4f5c\u4e3a\u81ea\u5df1\u7684www\u5de5\u4f5c\u76ee\u5f55<\/p>\n<pre>cd D:\\workspace\\javascript # \u8fdb\u5165\u5de5\u4f5c\u76ee\u5f55\r\n\r\n\r\n\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u4f7f\u7528express\u7684\u547d\u4ee4\uff0c\u6765\u521b\u5efa\u9879\u76ee\u4e86\u3002\r\nD:\\workspace\\javascript&gt;express -e nodejs-demo # \u521b\u5efa\u9879\u76ee\r\n\r\n\r\n\u8fdb\u5165\u9879\u76ee\u76ee\u5f55\uff0c\u4e0b\u8f7d\u4f9d\u8d56\u5e93\uff0c\u6784\u5efa\u9879\u76ee\u3002\r\nD:\\workspace\\javascript&gt;cd nodejs-demo &amp;&amp; npm install<\/pre>\n<p>\u4ee5\u4e0a\u6b65\u9aa4\u5b8c\u6210\u4e4b\u540e\u4f60\u8fdb\u5165\u5230\u5de5\u4f5c\u76ee\u5f55\u4f1a\u770b\u5230nodejs-demo\u76ee\u5f55\u751f\u6210\uff0c\u91cc\u9762\u6709\u5982\u4e0b\u56fe\uff1a<\/p>\n<a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/nodejswww.jpg\"><figure class=\"mdx-lazyload-container\" style=\"max-width:160px\"><div style=\"padding-top:139.375%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"160\" height=\"223\" class=\"alignnone size-full wp-image-4431 lazyload\" title=\"nodejswww\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/nodejswww.jpg\" alt=\"nodejswww\"><\/figure><\/a>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>3\uff0c\u5f00\u59cb\u542f\u52a8\u9879\u76ee<\/p>\n<pre> D:\\workspace\\javascript\\nodejs-demo&gt;npm start<\/pre>\n<a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/wwwok.jpg\"><figure class=\"mdx-lazyload-container\" style=\"max-width:550px\"><div style=\"padding-top:18.181818181818%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"550\" height=\"100\" class=\"alignnone size-full wp-image-4428 lazyload\" title=\"wwwok\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/wwwok.jpg\" alt=\"wwwok\" data-srcset=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/wwwok.jpg 550w, https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/wwwok-300x54.jpg 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\"><\/figure><\/a>\n<p>\u770b\u5230\u6b64\u56fe\u542f\u52a8\u9879\u76ee\u5c31\u6210\u529f\u4e86\uff0c\u8bb0\u4f4f\u4ee5\u540e\u6bcf\u6b21\u4fee\u6539app.js\u914d\u7f6e\u65f6\u5019\u90fd\u8981ctrl+c\u7ed3\u675f\u5728\u91cd\u65b0\u8f93\u5165npm start\u6765\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>4\uff0c\u9879\u76ee\u542f\u52a8\u6210\u529f\uff0c\u6253\u5f00\u6d4f\u89c8\u5668 http:\/\/localhost:3000\uff0c\u5c31\u53ef\u4ee5\u770b\u5230\u663e\u793a\u7684\u9875\u9762\u4e86\u3002<\/p>\n<a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/www1.jpg\"><figure class=\"mdx-lazyload-container\" style=\"max-width:364px\"><div style=\"padding-top:67.032967032967%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"364\" height=\"244\" class=\"alignnone size-full wp-image-4430 lazyload\" title=\"www1\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/www1.jpg\" alt=\"www1\" data-srcset=\"https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/www1.jpg 364w, https:\/\/sdeno.com\/wp-content\/uploads\/2015\/11\/www1-300x201.jpg 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\"><\/figure><\/a>\n<p>\u770b\u5230\u8fd9\u91cc\u5c31\u611f\u52a8\u4e86<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>5\uff0cejs\u5b89\u88c5<\/p>\n<p>\u4e3a\u4ec0\u4e48\u5b89\u88c5\u8fd9\u4e2a\uff1f\u5982\u679c\u4f60\u662f\u5199php\u6216\u8005asp\u5728\u6216\u8005\u662f\u89c1\u591ahtml\u4e86\uff0c\u5b83\u53ef\u4ee5\u5e2e\u4f60\u627e\u56de\u4e4b\u524d\u7684\u611f\u89c9\u3002<\/p>\n<p>\u53bb\u5230\u4e4b\u524d\u521b\u5efa\u597d\u7684\u5de5\u4f5c\uff08nodejs-demo\uff09\u76ee\u5f55\u4e0b\u5b89\u88c5<\/p>\n<pre>npm install ejs<\/pre>\n<p>\u4e00\u4e9bejs\u4ecb\u7ecd\uff1a<\/p>\n<p><a href=\"http:\/\/blog.csdn.net\/zhangxin09\/article\/details\/18409119\" target=\"_blank\">http:\/\/blog.csdn.net\/zhangxin09\/article\/details\/18409119<\/a><\/p>\n<p><a href=\"http:\/\/sunnyhl.iteye.com\/blog\/1985539\" target=\"_blank\">http:\/\/sunnyhl.iteye.com\/blog\/1985539<\/a><\/p>\n<p><a href=\"http:\/\/www.cnblogs.com\/xuanhun\/p\/3922847.html\" target=\"_blank\">http:\/\/www.cnblogs.com\/xuanhun\/p\/3922847.html<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>6\uff0c\u5b89\u88c5\u6210\u529f\u4e4b\u540e\u4fee\u6539app.js\uff0c\u4fee\u6539\u6210\u5982\u4e0b\uff1a<\/p>\n<pre>\/\/ view engine setup\r\napp.set('port',process.env.PORT || 3000);\r\napp.set('views', path.join(__dirname, 'views'));\r\napp.engine('.html',require('ejs').__express);\r\napp.set('view engine','html');\r\n\r\nvar ejs = require('ejs');\r\nejs.delimiter = '?';\r\napp.engine('ejs',ejs.renderFile);<\/pre>\n<p>&nbsp;<\/p>\n<p>7\uff0c\u521b\u5efa\u4e00\u4e2ahtml<\/p>\n<p>\u8fdb\u5165\u5230views\u76ee\u5f55\u521b\u5efa\u5982\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre>&lt;!doctype html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n  &lt;meta charset=\"utf-8\"&gt;\r\n  &lt;title&gt;&lt;?= title ?&gt;&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n  &lt;body&gt;\r\n     &lt;?= title ?&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>8\uff0c\u6dfb\u52a0\u5185\u5bb9<\/p>\n<p>\u8fdb\u5165\u5230routes\u76ee\u5f55\u4fee\u6539index.js<\/p>\n<pre>res.render('index', { title: '\u4ee3\u7801\u6d4b\u8bd5' });<\/pre>\n<p>&nbsp;<\/p>\n<p>9\uff0c\u91cd\u542f<\/p>\n<p>\u4f60\u4f1a\u53d1\u73b0\u6211\u4eec\u5728html\u91cc\u9762\u63d2\u5165\u7684&lt;?= title ?&gt; \u80fd\u89e3\u6790\u6210\u529f\u4e86<\/p>\n<p>&nbsp;<\/p>\n<p>10\uff0c\u7b80\u5355\u8ba4\u8bc6\u4e00\u4e0b<a href=\"https:\/\/sdeno.com\/?p=4433\" target=\"_blank\">Express\u6846\u67b6\u76ee\u5f55\u7ed3\u6784\u4ecb\u7ecd<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>11\uff0c\u5b89\u88c5supervisor<\/p>\n<p>\u6211\u4eec\u5728\u4fee\u6539\u7f51\u7ad9\u7684\u65f6\u5019\u90fd\u662f\u8fb9\u4fee\u6539\u8fb9\u5237\u65b0\u9875\u9762\u770b\u770b\u6548\u679c\uff0c\u7531\u4e8enodejs\u81ea\u8eab\u539f\u56e0\u6bcf\u6b21\u8981\u770b\u4fee\u6539\u7684\u6548\u679c\u603b\u8981\u624b\u52a8\u53bb\u7ed3\u675f\u8fdb\u7a0b\u5728npm start\u4e00\u6b21\u592a\u9ebb\u70e6\u4e86\u6240\u4ee5supervisor\u4e5f\u662f\u5fc5\u987b\u8981\u5b89\u88c5\u7684<\/p>\n<pre>npm install supervisor -g\r\n\r\n\u5b89\u88c5\u5b8c\u4e4b\u540e\u518d\u4e5f\u4e0d\u7528\u6bcf\u6b21npm start\u542f\u52a8\u4e86\u4ee5\u540e\u5c31\u4f7f\u7528\r\n\r\nsupervisor .\/bin\/www  \uff08\u7f51\u4e0a\u6559\u7a0b\u90fd\u662f \u5728\u540e\u9762\u52a0\u4e0aapp.js\u90a3\u662fexpress\u7684\u8001\u7248\u672c\u4e86\uff0c\u65b0\u7248\u672c\u628a\u542f\u52a8\u9879\u72ec\u7acb\u5230\u4e86bin\u76ee\u5f55\u4e0b\u7684www\u6587\u4ef6\u4e86\uff09<\/pre>\n<p>&nbsp;<\/p>\n<p>12\uff0cnode.js\u4e0emysql\u6570\u636e\u5e93\u7684\u4ea4\u4e92\u300a<a href=\"https:\/\/sdeno.com\/?p=4439\" target=\"_blank\">nodejs\u8fde\u63a5mysql<\/a>\u300b<\/p>\n<p>&nbsp;<\/p>\n<p>13\uff0c\u9875\u9762\u62c6\u5206<\/p>\n<p>header.ejs, \u4e3a\u9875\u9762\u7684\u5934\u90e8\u533a\u57df<br \/>\nindex.ejs, \u4e3a\u5185\u5bb9\u663e\u793a\u533a\u57df<br \/>\nfooter.ejs\uff0c\u4e3a\u9875\u9762\u5e95\u90e8\u533a\u57df<\/p>\n<p>&nbsp;<\/p>\n<p style=\"color: #4d4d4f;\">\u7f16\u8f91header.ejs\u3002<\/p>\n<pre style=\"color: #4d4d4f;\"><code>\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"zh-CN\"&gt;\r\n  &lt;head&gt;\r\n    &lt;title&gt;&lt;%= title %&gt;&lt;\/title&gt;\r\n    &lt;link rel=\"stylesheet\" href=\"http:\/\/cdn.bootcss.com\/bootstrap\/3.3.2\/css\/bootstrap.min.css\"&gt;\r\n    &lt;link rel='stylesheet' href='\/stylesheets\/style.css' \/&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n<\/code><\/pre>\n<p style=\"color: #4d4d4f;\">\u7f16\u8f91footer.ejs\u3002<\/p>\n<pre style=\"color: #4d4d4f;\"><code>\r\n    &lt;script src=\"http:\/\/cdn.bootcss.com\/jquery\/1.11.2\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n    &lt;script src=\"http:\/\/cdn.bootcss.com\/bootstrap\/3.3.2\/js\/bootstrap.min.js\"&gt;&lt;\/script&gt;\r\n    &lt;div style=\"border:1px solid red\"&gt;\r\n      &lt;%= foot %&gt;  \/\/<span style=\"color: #ff0000;\">\u989d\u5916\u63d2\u5165\u4e86\u4e00\u4e2a\u53d8\u91cf<\/span>\r\n    &lt;\/div&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/code><\/pre>\n<p style=\"color: #4d4d4f;\">\u7f16\u8f91index.ejs\u3002<\/p>\n<pre style=\"color: #4d4d4f;\"><code>\r\n&lt;% include header.ejs %&gt;\r\n\r\n&lt;div class=\"well jumbotron\"&gt;\r\n&lt;h1&gt;&lt;%= title %&gt;&lt;\/h1&gt;\r\n&lt;p&gt;This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.&lt;\/p&gt;\r\n&lt;p&gt;&lt;a class=\"btn btn-primary btn-lg\" href=\"#\" role=\"button\"&gt;Learn more&lt;\/a&gt;&lt;\/p&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;% include footer.ejs %&gt;<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u5728\u8def\u7531\u6587\u4ef6\u5939\u4e2d\u4fee\u6539index.js\u5982<\/p>\n<pre>res.render(\"index\",{\r\n     title:rows[2].liuyan_username,\r\n     <span style=\"color: #ff0000;\">foot<\/span>:'\u8fd9\u91cc\u662f\u5e95\u90e8'\r\n});<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>14\uff0c\u8c03\u8bd5\u5de5\u5177console.log()\u67e5\u770bnodejs\u63d0\u4f9b\u7684\u5bf9\u8c61\u91cc\u9762\u63d0\u4f9b\u4e86\u54ea\u4e9b\u5c5e\u6027\u548c\u65b9\u6cd5<\/p>\n<p>\u300a<a href=\"https:\/\/sdeno.com\/?p=4444\" target=\"_blank\">nodejs console.log \u8c03\u8bd5<\/a>\u300b<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>15\uff0cpost\u3001get\u63a5\u53d7\u548c\u8bf7\u6c42<\/p>\n<p>\u300a<a href=\"https:\/\/sdeno.com\/?p=4448\" target=\"_blank\">nodejs\u8868\u5355\u8bf7\u6c42\u548c\u63a5\u53d7<\/a>\u300b<\/p>\n<p>\u6587\u7ae0\u6765\u81ea\uff1a<a href=\"http:\/\/blog.fens.me\/nodejs-express4\/\" target=\"_blank\">http:\/\/blog.fens.me\/nodejs-express4\/<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>nodejs www \u76ee\u5f55 express \u5b89\u88c5 \u8981\u4f7f\u7528nodejs\u5199\u6211\u4eec\u7b2c\u4e00\u4e2a\u7a0b\u5e8f\u9700\u8981\u5b89\u88c5nodejs\u73af\u5883\u548c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,11],"tags":[],"class_list":["post-4425","post","type-post","status-publish","format-standard","hentry","category-nodejs","category-11"],"_links":{"self":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/4425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4425"}],"version-history":[{"count":0,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/4425\/revisions"}],"wp:attachment":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}