gpt4 book ai didi

email - 在 http res 上下文之外劫持 expressjs View 引擎

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:10 26 4
gpt4 key购买 nike

我正在构建一个主要使用 socket io 的小型应用程序,但是使用了一些来自 expressjs 的东西。

socket io piece的一个功能是当某个事件发生时发送邮件。我在 node_mailer 上运行良好。

我遇到的问题是我想使用快速 View 引擎来呈现来自模板文件的电子邮件。 render 方法似乎明确附加到 res 对象原型(prototype)。

我所做的感觉很脏:

// setup express server
var render;
app.get('/', function (req, res) {
if (typeof render == 'undefined') render = res.render;
res.end('Welcome to app');
});

// socket io code
socket.on('event', function (data) {
var email_content;
render('template', {}, function (err, result) { email_content = result; });
});

是否有更好的方法可以在 http 请求的上下文之外访问 expressjs 的组件,或者有更好的方法来解决这个问题?我尝试对导出的 express.view.compile 函数进行调用,但两者都不起作用,而且看起来很糟糕

最佳答案

这里是您寻找的信息的来源:

https://github.com/Ravelsoft/node-jinjs/wiki

以模板作为模块要让 Node 加载您的模板,就好像它们是模块一样,您首先必须注册您的模块扩展:

require("jinjs").registerExtension(".tpl");

如果你希望你的文件在提交给 jinjs 之前进行转换,你可以传递一个回调;

var pwilang = require("pwilang");
require("jinjs").registerExtension(".pwx", function (txt) {
return pwilang.parse(txt);
});

您现在可以将此写给用户 Jin:

var my_template = require("./mytemplate");
var context = { foo: "foo", bar: "bar" };
var result = my_template.render(context);

因为您要让 Jin 加入 express(而不是让 express 与 Jin 合作),这是您的最佳选择。 res 变量仅在路由回调中可用。

关于email - 在 http res 上下文之外劫持 expressjs View 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com