【譯】Express.js 4.x 新功能

更多的例子和完整的API文檔,請參見Express 4.x 的文檔。你可能對這篇文章也有興趣 從3.x 遷移到 4.x版html

移除了捆綁的中間件

Express 中再也不捆綁 Connect 提供的中間件(或者說顯示在 「express」 模塊中)。你要使用的任何中間件應額外安裝並在你的應用的 package.json 中列出。這方便了中間件的功能修復和快速更新,同時避免影響 express 的核心功能。git

參見中間件模塊,這張列表完整的列出了舊的 connect 中間件。github

Router 的改進

express 如今提供了一個更好的「 Router 」功能以及路由 API ,來解決重複性的路由命名狀況,而且更容易將路由分解到多個文件,方便項目組織和管理。express

再也不須要 app.use(app.router)

全部的路由功能都將按照它們出現的順序被添加。你 不用 再使用app.use(app.router)。這解決了 Express 最多見的問題。json

換句話說,混合的app.use()app[VERB]()確切地 按照它們的調用順序工做。c#

app.get('/', home);
app.use('/public', require('st')(process.cwd()));
app.get('/users', users.list);
app.post('/users', users.create);

app.route(path)

取代了本來的app.get()app.post()等方式(但這些依然可使用),提供了一個新的route()功能,它會返回一個可被使用的Route實例。而後,你能夠在這個實例中調用全部的 HTTP 動做,甚至能夠添加具體的中間件到這個路由中。api

app.route('/users')
.get(function(req, res, next) {})
.post(function(req, res, next) {})

route()須要一個path路徑參數,這個參數和你建立一個路由時傳遞給.get()或者.post()的參數相同。app

此外,返回的路由有一個.all()方法,若是你想添加中間件到這個路由中,或處理全部的動做,這會頗有幫助。post

Router(路由)

另外一項新增功能是 express 的Router的公共API。一個Router就像是一個小型的 express 應用。它不包含任何 view 或者 setting,可是確實提供了典型的路由API(.use.get.param.route)。ui

應用和路由也能夠經過.use()方法使用其它路由,這容許你經過多個文件來創建路由,以更好地組織你的應用。

想象一下,在你的項目的一個例子routes/people.js

var people = express.Router();

people.use(function(req, res, next) {
});

people.get('/', function(req, res, next) {
});

module.exports.people = people;

您能夠將其安裝在/people路徑下,這樣的話,向/people/*的任何請求都將被髮送到 people 路由。

app.use('/people', require('./routes/people').people);

更多的例子參見路由器文檔

相關文章
相關標籤/搜索