如何用nodejs执行js代码

JavaScript013

如何用nodejs执行js代码,第1张

nodejs就是js啊,两个是一种语言,只是运行的环境不同而已,nodejs是在服务器端运行,而js是在客户端浏览器上运行。不太懂你说的什么意思?

你的意思是不是希望让nodejs像浏览器一样模拟运行一个窗口,如果是这样你可以考虑用nodejs的phantom模块,我们一般用这个模块来模拟浏览器界面截图用。

如果你是想让nodejs加载另一个js文件,你可以用nodejs本身提供的require模块,加载文件。当你也可以自己写一个fs读取js文件,然后eval文件里的语句。

在终端上运行mysqltest.js,它运行是脚本。它跟浏览器运行是不同的执行环境。虽然在运行在V8引擎(假设你用Chrome)上,执行环境和可用的库是不同的。

Node.js中,require()是一个功能,它被添加执行环境。当你在终端运行JS文件,在执行文件环境是包含require()的。

require()不是内置浏览器的功能。是Node.js特定的功能,所以你试图在浏览器上运行你的脚本(JS文件)时,将会得到地Uncaught ReferenceError: require is not defined地错误。

一个网页的内容其实就是一段字符串,response.write()可以接受一个字符串作为参数,所以很明显只需要把一个网页的内容作为参数传递给response.write()即可。例如:

[javascript] view plain copy

<span style="white-space:pre">  </span>var http = require('http')

http.createServer(function(req, res){

var html = '<html>'

+'<head>'

+'<title>nodejs</title>'

+'</head>'

+'<body>'

+   'hello world! 1234'

+'</body>'

+'</html>'

res.writeHead(200,{'Content-Type' : 'text/html'})

res.write(html)

res.end()

}).listen(8888)

在浏览器地址栏输入127.0.0.1:8888查看结果,打开控制台,可以发现网页的类容已经全部包含在浏览器中。

一个网页一般会包含css样式文件和javascript脚本文件,再上一个示例中没有这两个文件。现在可以添加简单的css和javascript文件查看效果:

[javascript] view plain copy

<span style="white-space:pre">  </span>var http = require('http')

http.createServer(function(req, res){

var html = '<html>'

+'<head>'

+'<title>nodejs</title>'

+'<link rel="stylesheet" type="text/css" href="./bootstrap/css/bootstrap.min.css" />'

+'<script type="text/javascript" src="./bootstrap/js/bootstrap.min.js"></script>'

+'</head>'

+'<body>'

+   'hello world!hello world! 1234'

+'</body>'

+'</html>'

res.writeHead(200,{'Content-Type' : 'text/html'})

res.write(html)

res.end()

}).listen(8888)

会发现css文件和javascript文件都没有被正确下载。这是因为这段代码中规定的'Content-Type'都是'text/html'类型,而且所有的response内容都相同,当然就看不到想要的效果。

我们知道css样式和javascript脚本有多种不同的引入方法,css样式可以使用外联样式、内部样式和内联样式,javascript可以使用外联和内部两种,既然外联不能正确显示,那么可以尝试其他方法。通过测试可以发现css内部样式和内联样式都可以在网页上看到效果,javascript同样。

[javascript] view plain copy

<span style="white-space:pre">  </span>var http = require('http')

http.createServer(function(req, res){

var html = '<html>'

+'<head>'

+'<title>nodejs</title>'

+'<style type="text/css">'

+'body{color:red}'

+'</style>'

+'</head>'

+'<body>'

+   'hello world! 1234'

+'</body>'

+'</html>'

res.writeHead(200,{'Content-Type' : 'text/html'})

res.write(html)

res.end()

}).listen(8888)

可以看到浏览器中的文字显示为红色。

但是这两种方式都不是现代web开发所提倡的。现代web开发提倡css样式和javascript使用外联的方式,以方便管理和重用。css文件和javascript文件都是静态文件,我们可以尝试建立一个简单的静态文件服务,这样就可以正确的在网页中使用外联文件了。