1、代碼分析
var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('hello world'); console.log('hello world'); }); app.listen('8808');
require() 用於在當前模塊中加載和使用其他模塊;此方法是模塊的基礎,使用中大概有路徑的概念就行。PS:JS文件可以去掉".js"后綴
exports 表示模塊的導出對象,用於導出模塊的屬性和公共方法。
PS:一個模塊的代碼只會在模塊第一次被使用時執行,不會因require多次而被初始化多次。
express() 表示創建express應用程序。簡單幾行代碼其實就可以創建一個應用
app.listen() 就是在給定的主機和端口上監聽請求,這個和node中http模塊的http.createServer(function(){...}).listen()效果一致;
app.set(name, value)和app.get(name)就是你想的那樣,set()為設置 name 的值設為 value,get()為獲取設置項 name 的值。如俺app.js的圖片16行中的一句“app.set('port', process.env.PORT || 3000)”就是設置項目的port,在下面使用http.createServer時就可以使用app.get('port')來獲取,
了解app.engine()方法之前先看看express應用的安裝命令:“express -e nodejs-product”,其中的 -e 和 -J 我們一開始已經提到,表示ejs和jade模板。
如果想把模板后綴改成“.html”時就會用到app.engine方法,來重新設置模板文件的擴展名,比如想用ejs模板引擎來處理“.html”后綴的文件:app.engine('.html', require('ejs').__express);
app.engine(ext, callback) 注冊模板引擎的 callback 用來處理ext擴展名的文件。
PS:__express不用去care,其實就是ejs模塊的一個公共屬性,表示要渲染的文件擴展名。
app.use([path], function) 使用中間件 function,可選參數path默認為"/"。使用 app.use() “定義的”中間件的順序非常重要,它們將會順序執行,use的先后順序決定了中間件的優先級(經常有搞錯順序的時候);
最后介紹個很有用的express API:
app.render(view, [options], callback) 渲染 view, callback 用來處理返回的渲染后的字符串。