Node学习 -- 入门简介
来源:互联网 发布:c语言主函数参数 编辑:程序博客网 时间:2024/06/05 20:13
Node的特点
1、异步I/O
例如,在Node中读取文件,与前端的Ajax调用方式非常类似:
var fs = require('fs');fs.readFile('/path', function (err, file) { c onsole.log('读取文件完成')}); console.log('发起读取文件');
2、事件与回调函数
在JS中,函数是一等公民,回调函数无处不在。回调函数是Node中最好的接受异步调用返回数据的方式。
下面这个栗子,展示的是Ajax异步提交的服务器端处理过程。
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保持了单线程的特点。单线程最大的好处是不用像多线程那样处处在意状态同步的问题,没有死锁问题,也没有线程上下文交换所带来的性能上的开销。
但是,单线程也有弱点:
1. 无法利用多核CPU
2. 错误会引起整个应用退出,因此应用的健壮性值得考验
3. 大量计算占用CPU导致无法继续调用异步I/O
积极面对这些弱点,可以避免潜在的问题,使其得以更高效的利用。
对于第三条的解决方案:
HTML5定制了Web Workers的标准,它能够创建工作线程来进行计算,以解决JS大计算阻塞UI渲染的问题。工作线程为了不阻塞住线程,通过消息传递的方式来传递运行结果,这也使得工作线程不能访问到主线程的UI。
Node使用了与WebWorkers相同的思路来解决单线程中大计算量的问题:child_process
子进程的出现,意味着Node可以从容的应对单线程在健壮性和无法利用多核CPU方面的问题。通过将计算分发到各个子进程,可以将大量的计算分解掉,然后再通过进程之间的消息来传递结果,这可以很好的保持应用模型的简单和低依赖。通过Master-Worker的管理方式,也可以很好的管理各个工作进程,以达到更高的健壮性。
4、跨平台
Node的应用场景
1、I/O密集
2、CPU密集
3、和遗留的系统和平共处
4、分布式应用
阅读全文
0 0
- Node学习 -- 入门简介
- Node.js 入门简介
- Node.js入门简介
- Node.js 入门简介
- Node.js 入门简介
- node.js学习简介
- node.js入门学习
- node.js入门学习
- Node 入门学习
- Node.js 入门学习
- Node.js入门学习
- node.js---入门学习
- node.js学习一(node入门)
- Node.js简介——入门级别
- Node.js学习(1)----入门
- Node.js学习入门手册
- node学习笔记<入门级>
- node.js 入门学习介绍
- Java设计模式-命令模式
- 面试金典-猫狗问题
- [实用教程]CESOFT_Windows Server 2012 R2 或 2016无法安装.Net 3.5.1
- Address already in use: JVM_Bind<null>:8080,Tomcat启动报错
- bootstrap-treeview 前台使用
- Node学习 -- 入门简介
- python笔记-006-字典
- js 必包和面向对象设计
- 递归分类
- 怎么样在WEB上实现office在线编辑的功能
- LeetCode-algorithms 523. Continuous Subarray Sum
- 用高德地图API 通过详细地址获得经纬度
- [RK3288][Android6.0] WiFi之wpa_supplicant服务启动
- Oracle--存储过程