1、搭建Node 简单的服务器
var http = require('http')
http.createServer(function (req,res) {
res.writeHead(200,{'Content-Type':'text/plain'}
res.end('hello world')
}).listen(1337,'127.0.0.1')
console.log("node 服务已启动")
2、node与Chrome构成的异同
3、Node是什么
在node中文网:nodejs.cn/我们可以发现node 的slogan
- Node 是一个运行环境(为JavaScript语言提供)
- Node 是基于事件驱动
- Node 是非阻塞I/O(I/O:Input/Output写入输出)
(1)异步I/O
在Node中,异步I/O也很常见。以读取文件为例,我们可以到它与前端Ajax用的方式是 非常相似
这个调用模型似乎在什么地方见过似曾相识,对,这与ajax的经典调用是一个模式!
Ajax经典异步调用
$.post('/url', {title: '入出Node.js'}, function (data) {
console.log('收响应');});
console.log('发Ajax结');
(2)事件与回调函数
Node创建一个Web服务,并监听 8080端。对于服务,我们绑定了request事,对于请求对象,我们绑定定了data和end事件
var http = require('http');
var querystring = require('querystring'); // 监听服务器的request事件
http.createServer(function (req, res) {
var postData = '';req.setEncoding('utf8');
// 监听请求的data事件
req.on('data', function (trunk) { postData += trunk;
});
// 监听请求的end事件
req.on('end', function () {
res.end(postData);
});
}).listen(8080);
console.log('服务器启动成功');
(3)单线程
①单线程优势:Node保持了JavaScript在浏览器中单线程的特点。而且在Node中,JavaScript与其余线程是无法共享任何状态的。单线程的最大优势是不用像多线程编程那样时刻考虑状态同步的问题。
②单线程的缺点:不能利用多核CPU,大量计算占用CPU会导致无法继续调用异步I/O,对代码的质量要求高。
(4)跨平台
Linux && Windows 都可以使用
Node => libuv =>(Linux / Windows)
5、Node的应用场景
每一个项目我们都要进行技术的选型,还得技术架构会提升很大的开发效率&& 生产效率。所以,Node适合什么样的场景?
(1)I/O密集型:处理I/O是Node最擅长的,再有异步调用的加持使得Node在处理I/O异常的高效。
(2)CPU密集型业务:Node基于Chrome V8引擎在进行运算时也能非常出色
(3)分布式应用:Node具备并行I/O能力,分布式数据查询时比其他语言更有优势,阿里数据平台及eBay都使用node做集群数据I/O。
福利点击github有《深入浅出的nodejs》电子版github.com/chaojiaheng…
别忘了给个star