初试 Node.js 开发
- 它利用 chrome V8 引擎来运行 JavaScript。不是解释执行,而是编译成服务器端代码,所以速度很快。
- 采用事件驱动、非阻塞 I/O 模型。什么事非阻塞模型?类似于浏览器端的 AJAX 调用,当语言处理挂起操作时并不等待,而是继续执行。当挂起操作完成时,发出一个事件,会有一个回调函数来继续处理。
browserling.com 是一个用 Node.js 实现的浏览器模拟器。
Node.js 是在服务器端运行的,它的 JavaScript 程序不能被浏览器直接解释:
var http = require('http');
这是加载 Node.js 的 http 模块,这个模块只存在于服务器端,浏览器不认这个。
Node.js 文件目录
Node.js 的目录中可能存在多个 .js 文件,但需要分清哪些是在服务器端运行的,哪些是在浏览器端运行的。
按 node.js 的约定,lib 目录是服务器端目录 (ember 中 app 目录是服务器目录),存放服务器端的 js 代码文件和其它服务器端文件;public 是客户端目录,保存运行在浏览器的 js 文件和其它文件如 html、css、png 等 (ember 中 dist 目录是客户端目录)。上述目录貌似可以配置。
package.json 是依赖定义文件,当运行下列命令时 npm 会自动解析这个json文件并安装依赖的包:
$ npm install
依赖包放在 node_modules
目录下,会被上述命令自动创建。
模块
模块可以发布到 npm 网上的存储空间,以便与其他人分享模块。
通过 exports 命令定义模块中对外暴露的函数或变量,没有 exports 的函数或变量都只能用于模块的私有命令空间中。
使用 require 命令引入模块。require 是同步命令,应在程序初始化时用,否则可能会引起阻塞。
AngularJS2
ng serve
启动的后台服务器默认使用 localhost:4200
。当 AngularJS 运行在 Windows 的 Linux 虚拟机中,想用 Windows 下的浏览器访问 AngularJS 服务器时,必须指定 Windows 能解析的域名,办法是:
# ng serve --open --host c7302.ambari.apache.org
这样启动的 Angular 服务就绑定 c7302.ambari.apache.org
主机的 4200 端口了。
Web 服务器
在当前目录下编辑一个 server.js
:
var http = require('http');
var fs = require('fs');
var url = require('url');
// 创建服务器
http.createServer( function (request, response) {
// 解析请求,包括文件名
var pathname = url.parse(request.url).pathname;
// 输出请求的文件名
console.log("Request for " + pathname + " received.");
// 从文件系统中读取请求的文件内容
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP 状态码: 404 : NOT FOUND
// Content Type: text/plain
response.writeHead(404, {'Content-Type': 'text/html'});
}else{
// HTTP 状态码: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/html'});
// 响应文件内容
response.write(data.toString());
}
// 发送响应数据
response.end();
});
}).listen(8080);
// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8080/');
再在当前目录下创建一个 index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
</body>
</html>
启动 Web 服务器:
$ node server.js
Server running at http://127.0.0.1:8080/
访问地址 http://127.0.0.1:8080/index.html
可以看到上述的 index.html 网页的内容。
进一步的测试:
$ mkdir temp && cp index.html temp
$ curl http://127.0.0.1:8080/temp/index.html
可以正常返回 temp 目录下 index.html 的内容。这说明用 server.js 搭建的 Web 服务器可以正常地支持目录结构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论