我是一名PHP开发人员,最近使用了带有express的节点JS。
我感到困惑的一件事是你如何告诉你的快递服务器是否应该在服务器上执行javascript文件或者发送到浏览器以在客户端执行。
在PHP中,这不是问题,因为每个文件类型(php,pearl,jpg,js)都有一个运行它的专用位置(服务器或客户端)。对于编写其他语言(如Java和C#
)的HTTP应用程序也是如此考虑此示例代码
var express = require('express'); var app = express();
app.get('/ some_page',function(req,res) {res.send('hello world'); });
app.listen(3000);
没有涉及JS,所以'hello world'被发送到浏览器并由浏览器呈现。
但如果代码是
那该怎么办?var express = require('express'); var app = express();
app.get('/',function(req,res){res.send('console.log('hello) 世界')'); });
app.listen(3000);
这次我们有JS函数console.log() 那么node.js如何知道是否应该运行此代码或将其发送到浏览器。
答案 0 :(得分:4)
这是app.get('/', function(req, res){
和}
标记
res.send('console.log("hello world!")')
将在客户页面上打印console.log("hello world!")
res.send('<html><body><script>console.log("hello world!");</script></body></html>')
将在客户端的控制台中打印hello world!
res.send('hello world!');
console.log("hello world!");
将在客户端页面和服务器控制台上打印hello world!
。
所以基本上你发送到客户端的所有内容都将在客户端完成,你不发送给客户端的代码将在服务器端完成
修改强>
像Ankur Rana一样说你也可以发送Html文件res.sendFile('index.html');
在与此文件相同的目录中,我们有一个名为index.html的文件:
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="myId">console.log("hello world!")</div>
<script>
//regular js here
$("#myId").html("Hello World!");
</script>
</body>
</html>
答案 1 :(得分:1)
您正在使用express
,因此您应该使用static
中间件明确指定客户端Javascript代码。
在下面的示例中,您可以定义public
目录来存储它。
// GET /style.css etc
app.use(express.static(__dirname + '/public'));
其他所有内容都将在服务器端执行。
有关中间件的更多信息:http://expressjs.com/en/guide/using-middleware.html
答案 2 :(得分:0)
将javascript代码放在HTML文件的脚本标记中并使用它发送 res.sendFile(&#39; pathToFile.html&#39)