我不确定我在这里问正确的问题......所以请不要攻击我。
我正在为一种跟踪实现创建自己的异步回调库。用户必须在其网站上安装一段包含唯一帐号的代码。想想谷歌分析。
库调用到达我的节点服务器并传递查询参数中的帐户ID。
节点使用分析库进行响应,因此可以在用户的站点上调用各种跟踪功能。
我的问题是,如何根据查询参数修改流式传输回用户页面的静态跟踪库?例如,一旦从查询字符串中读取帐户ID,我会进行数据库查找,以查找库中特定于该用户的某些值,并希望适当地修改库中的特定函数。
我正在通过以下方式读取本地服务器上的静态文件: fs.createReadStream( “./ file.js”);
如何修改该文件以替换其他值?
或者我应该在启动时将文件读入内存中的对象,然后通过响应对象简单地写出修改后的数据?
答案 0 :(得分:0)
你可以简单地使用 eco 或 ejs 模板,但是为了得到一个想法或者如果你想自己做这个,我想你应该做一个模板基于您的file.js
,然后使用一组正则表达式使用corersponding数据编写代码的用户特定部分。
例如:
的 template.js 强> 的
var get_user = function () {
return "Hi %%USER_NAME%%"
}
然后req.send()` template.js 的内容取代了这样的内容:
var result = cached_template_data;
if (!result) {
fs.readFile("./template.js", function (err, data) {
result = cached_template_data = data;
if (!err) {
result = result.replace(/%%USER_NAME%%/g, user.name)
res.send(result);
} else {
// Big oops
res.send({error:true}, 500);
}
})
} else {
result = result.replace(/%%USER_NAME%%/g, user.name)
res.send(result);
}
<强>更新强>
尽可能考虑缓存......