小编cuz*_*AZN的帖子

使用nodejs提供动态javascript文件

问题

如何动态地提供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,脚本文件将根据apiURL中传递的参数进行不同的呈现.我能想到的唯一可能的动态方式是使用Jade,但它不允许使用纯javascript模板.我相信必须有其他解决方案.

请原谅我的解释.问题有点像这样:如何使用Jade生成纯JavaScript文件

javascript templates node.js express pug

10
推荐指数
1
解决办法
7134
查看次数

每个HTTP /会话请求的GLOBAL数据?

题:

有没有办法在每个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)

javascript global request node.js express

5
推荐指数
1
解决办法
2485
查看次数

Helloworld示例不起作用 - 我是否需要嵌入NodeJS?

我正在写一个简单的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没有太多的支持.到目前为止,据我所知:

  • nodejs是一个javascript工具包,它是事件驱动的非阻塞I/O.
  • nodejs允许用户使用javascript访问后端编码
  • nodejs解析V8 Google Chrome javascript引擎
  • nodejs可以创建并发服务器应用程序
  • 在我的假设中,nodeJS是一个框架(很可能是错误的),它连接服务器和客户端以允许后端访问

如果我错了,请纠正我,我真的很感激.我需要有更多关于这个主题的知识,而那里的资源并不多.

我的问题是:

  1. 如果NodeJS是一个javascript库,我怎么能将它嵌入我的网站?localhost与在线托管有什么不同吗?
  2. 我经常看到有人在处理listen(8000),关于什么是端口?我应该选择哪个端口?
  3. Socket.io和NodeJS是一样的,如何安装它(我知道Socket.io在Nodejs上运行)?NodeJS的Socket.io和jQuery的抽象jQuery一样吗?为了将来参考,当我想在NodeJS中使用另一个库时,有哪些标准协议可以做到?

谢谢大家,

蒂姆.

javascript node.js

3
推荐指数
1
解决办法
3079
查看次数

标签 统计

javascript ×3

node.js ×3

express ×2

global ×1

pug ×1

request ×1

templates ×1