![](/img/trans.png)
[英]How to Create DB in Node Js Express Jade JavaScript App
[英]Include Jade mixins via JavaScript in an Express app
在我的Express应用程序中,我有一个包含很多有用的Jade mixins的文件。 我想在多个项目中使用该文件,因此我计划创建一个NPM模块(由我们公司的私有注册表自行托管),该模块将在每个呈现的页面(或仅特定页面)中包含此mixins文件。
有没有办法从后端代码(可能使用Express)做到这一点? 还是我可以使用其他方法?
基本上,我只是不想最终在每个项目中都这样做:
layout.jade :
include ../../node_modules/my-custom-module/mixins
这将是丑陋的。
您需要使用Jade API手动编译文件/视图,并在编译之前将mixins文件附加到视图。
var jade = require('jade');
var yourJadeMixinStr = fs.readFileSync('..mixins', 'utf8');
app.use(function(req, res, next) {
var render = res.render;
res.render = function(view, options){
var yourJadeViewPath = '../views/' + view + '.jade';
var yourJadeViewStr = fs.readFileSync(yourJadeViewPath, 'utf8');
options = extend({}, options, res.locals);
options.filename = yourJadeViewPath;
var finalJadeViewStr = yourJadeMixinStr + yourJadeViewStr;
var html = jade.render(finalJadeViewStr, options);
res.send(html);
};
next();
});
options.filename
是视图中任何include
语句的相对路径所必需的。 它也似乎用于引擎盖下的缓存目的 。
如果您使用app.set('views', […])
传递多个目录以寻找视图,则需要考虑这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.