我是Node.js的新手,我正在將一個簡單的站點遷移到Node.js,主要是作爲一種學習體驗。Node.js中間件是不是
在我所有的網站中,我喜歡在「sitemeta」對象中保留網站上最相關的信息。這是從Redis每個請求中查詢的,如果失敗的話(它只會在sitemeta得到更新後纔會執行,然後從MySQL讀取它並將其保存在redis中,以便下次請求再次從redis獲取它,因爲redis比MySQL快得多)。
因此,在PHP中,我只需在settings.php文件中添加sitemeta的調用,我總是將其包含在每個文件的頂部,這樣像home_url或site_mode(sitemeta對象的一部分)的信息始終存在。
但是,現在在Node.js中,我想知道是否真的是要走的路,或者是否有更好的方法在每個控制器文件的頂部實際發生這種情況而不是像中間件那樣發生路由器文件,真的)。
//in index.js
var express = require('express');
var router = express.Router();
var site = require('./../lib/sitemeta');
...
//using it for something.
var siteMeta = site.meta();
res.render('index', { title: siteMeta.title });
或者,可我甚至在app.js實例化的sitemeta所以,它的查詢只有一次(當節點app.js開始),除非它需要更新,如果是刷新可不知何故惹?
謝謝。
這可能是一個很好的例子,你可以使用['app.locals'](http://expressjs.com/4x/api.html#app.locals)。 –
所以基本上,你是說從app.js中調用它,然後通過app.locals傳遞它,對嗎? – Adergaard