0

我不确定我在这里问的是正确的问题......所以请不要攻击我。

我正在为一种跟踪实现创建自己的异步回调库。用户必须在他们的网站上安装一段代码,其中包含一个唯一的帐号。想想谷歌分析。

库调用到达我的节点服务器并在查询参数中传递帐户 ID。

Node 使用分析库进行响应,因此可以在用户站点上调用各种跟踪功能。

我的问题是,如何修改基于查询参数流回用户页面的静态跟踪库?例如,一旦从查询字符串中读取帐户 ID,我就会进行数据库查找以在库中查找特定于该用户的一些值,并希望适当地修改我的库中的特定函数。

我正在从本地服务器读取静态文件: fs.createReadStream("./file.js");

如何修改该文件以将其中的某些值替换为其他值?

或者我应该在启动时将文件读入内存对象,然后通过响应对象简单地写出修改后的数据?

4

1 回答 1

0

您可以为此简单地使用ecoejs模板,但只是为了有一个想法,或者如果您更喜欢自己制作,我认为您应该根据您的模板制作一个模板file.js,然后使用相应的数据编写用户特定的代码部分使用一组正则表达式。

例如:

模板.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);
}

更新

顺便说一句,尽可能考虑缓存...

于 2012-04-11T01:10:28.693 回答