【发布时间】:2014-11-23 12:22:03
【问题描述】:
问题
如何动态提供 javascript 文件?具体来说,脚本保留了它的大部分主体,但有一些变量是可变的(想象一下 HTML Jade 模板,但这是针对纯 javascript 的)。
场景
当用户或浏览器(一般为http GET)访问/file.js时传递参数api,例如/file.js?api=123456,我想输出纯 javascript,我可以将 123456 动态地放入我的代码中。 Content-Type 是application/javascript。
示例:
var api = #{req.query.api}; //Pseudo
//The rest of my javascripts template
...
从我的主 .js 文件中,我已经设置了路线:
app.get( '/file.js', function( req, res ) {
//Pseudo code that I would like to achieve
var name = req.query.name;
res.render( 'out_put_javascript_file_from_jade_file.jade', { name: name } );
});
所以当一个人访问/file.js时,脚本文件会根据URL中传入的参数api进行不同的渲染。我能想到的唯一可能的动态方式是使用 Jade,但它不允许纯 JavaScript 模板。我相信一定有其他解决方案。
请原谅我的解释。问题有点像这样:How to generate a pure JavaScript file with Jade
【问题讨论】:
-
嗯,动态生成JS有点危险?为什么需要这样的功能?您可以调用
my_common.js并在您的 JADE 模板中生成 inline JS。这个内联 JS 将是唯一改变的 JS。但是如果没有更多信息,很难给出建议:) -
我正在编写一个小的 API sn-p,但它需要从 javascript 文件中的数据库生成 API 密钥。使用 PHP 相当容易,但我有很多关于 NodeJS 的知识要学习。可以这样想象:用户访问
http://example.com/file.js?api=123,浏览器返回application/javascript,代码如下alert( 'Your API key is 123' );。任何方法都应该有效,但我有限的知识并没有提出任何足够聪明的方法。请指教。 -
Jade 是一个 HTML 模板引擎。你试图解释什么是没有意义的。为什么需要生成JS文件?您真的不想生成
alert()?那么告诉我们你想对生成的输出做什么?谁处理它/正在处理它? -
Jade 正是我想出的,因为我没有其他解决方案。我相信有更好的解决方案。
alert()只是伪代码。我希望在访问路线时这样做,例如/file.js?api=123,浏览器将输出纯javascript代码,其中一部分是动态生成的。伪:http.get/file.js?api=123将产生api = 123; do_something_with_that_api();或 http.getfile.js?api=456将产生api = 456; do_something_with_that_api();。
标签: javascript node.js templates express pug