问题
如何动态地提供javascript文件?具体来说,脚本维护它的大部分主体,但有一些变量可变(想象一下HTML Jade模板,但这是纯粹的javascript).
脚本
当用户或浏览器(一般是http GET)访问/file.js
传递参数时api
,例如/file.js?api=123456
,我想输出纯粹的javascript,我可以把它123456
放在我的代码里面,动态地.内容类型是application/javascript
.
样品:
var api = #{req.query.api}; //Pseudo
//The rest of my javascripts template
...
Run Code Online (Sandbox Code Playgroud)
从我的主.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 } );
});
Run Code Online (Sandbox Code Playgroud)
因此,当一个人访问时/file.js
,脚本文件将根据api
URL中传递的参数进行不同的呈现.我能想到的唯一可能的动态方式是使用Jade,但它不允许使用纯javascript模板.我相信必须有其他解决方案.
请原谅我的解释.问题有点像这样:如何使用Jade生成纯JavaScript文件
题:
有没有办法在每个session/http请求中创建一个变量存储?该变量必须是全局可访问的,并且每个HTTP请求/连接/会话不同,并且不需要从一个函数传递给另一个函数.
例如(仅用于说明):
setVariableThatCanBeAccessedByThisHTTPRequestOnly( 'a string data' );
Run Code Online (Sandbox Code Playgroud)
任何事都应该有效,但我宁愿远离将它从功能转移到功能.
//I'm trying to get rid of passing req parameter to all custom functions.
//I'd like to store it in a variable somehow, that it can be accessed globally, but only within that session/request.
exports.functionName = function( req, res ) {
customFunctionThatRequiresReq( req );
};
Run Code Online (Sandbox Code Playgroud)
原始问题
我最近一直在玩node.js,对它的GLOBAL范围有点关注.假设我们有一个server.js文件:
username = ""; //Global scope
Run Code Online (Sandbox Code Playgroud)
然后,当建立连接并且服务器收到请求时,它将执行以下操作:
username = selectUsernameWithConditions(); //This will return a username
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果有两台不同的计算机将请求发送到服务器,那么值是否username
会独立地不同?我的意思是,username
处理第一个请求的时间与处理username
第二个请求的时间不同,或者它们只是一个变量并且将被覆盖?
如果它们被覆盖,那么存储数据并使它们仅在该请求和/或会话中可以全局访问的最佳方式是什么?例如,以下代码:
username = selectUsernameWithConditions(); …
Run Code Online (Sandbox Code Playgroud) 我正在写一个简单的Helloworld示例,可以在互联网上随处可见:
[nodejs.php] [位置:localhost/nodejs.php]
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var http = require('http');
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World\n");
}).listen(8000);
console.log("Server running at http://127.0.0.1:8000/");
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
代码非常简单易懂.但是,当我尝试运行代码时,出现以下错误:
Uncaught ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)
我理解这条消息意味着require()
我的页面中没有任何功能.当然没有.我再次浏览Google并尝试了不同的教程,以确定我是否需要nodejs.js
在网页中嵌入任何类型的文件,但所有教程似乎都没有提到这一点,我尝试进入Nodejs文件夹.我发现很多文件一样edit.js
,adduser.js
,bin.js
...,我正式卡.我一遍又一遍地看看Nodejs究竟是什么,为什么这个例子不起作用,但Google没有太多的支持.到目前为止,据我所知:
如果我错了,请纠正我,我真的很感激.我需要有更多关于这个主题的知识,而那里的资源并不多.
我的问题是:
谢谢大家,
蒂姆.