Node 体验 事件驱动、非阻塞式 I/O
https://github.com/nswbmw/N-blog/blob/master/book/2.1%20require.md
全局对象和浏览器中的window类似
1.console.log(__dirname)// 输出当前工作目录
2.setTimeout(f,ms)、setInterval(f,ms)
【Callback】 函数
function callFunction(fun, name) {
fun(name)
}
callFunction(function(name) {
console.log(name + ' Bye')
}, 'jane')
【模块】 exports = module.exports = {...}
然后可以 require("./modulename")
【事件】对应核心库 events
使用另外一个核心库 util.inherits(SubType,events.Emitter)
SubType就有绑定事件的能力 SubType.on('someEvent',callback(someargs))
SubType也有发射的能力 SubType.emit('someEvent',someargs)
【全异步】 有一个callback传值,如核心库fs读文件
fs.readFile('readme.md','utf-8',function(err,data){
//code here
})
【流和管道】macOS和Linux下,ls | grep app | grep .js,所有的流都是EventEmitter的实例
所以可以 readStream.on('data',(chunk)=>{writeStream.write(chunk)})
还可以直接搭管道复制、加密、压缩 readStream.pipe(cryptoStream)
……………………………………
【响应JSON】序列化 JSON.stringfy({name:'sam',username:'sen'})
【响应HTML】第一步 fs创建可读流 第二步 indexhtml.pipe(res)
【路由】根据request.url判断
【重构路由】app -> server -> router + handler ,重构掉了if-else判断request.url,直接使用key-value
【服务器获得表单POST数据】request本身是流也是events.Emitter实例,那么就有事件 error、data(传chunk)、end。
【服务器获得请求参数GET数据】使用核心库url解析,url.parse(request.url,true).query
【安装命令】npm install express / npm install -g webpack
【package.json】npm init -> npm install --save express / npm install --save-dev gulp
npm run start ,事先在package.json文件中key为scripts增加一个【node app.js(假如这真的是我们项目entry)】
交接给同事的话,不需要node_modules,这是因为【package.json写明了依赖,只要npm install】即可。
【开发环境省时工具】nodemon 替代 node app,这个有点像【JRebel热部署插件】mon就是monitor监控的意思,文件改变服务器自动重启。
………………………………………………………………………………………………………………………………
Node 体验 事件驱动、非阻塞式 I/O的更多相关文章
- node 单线程异步非阻塞
链接:http://www.runoob.com/nodejs/nodejs-callback.html 首先什么是单线程异步非阻塞? 单线程的意思整个程序从头到尾但是运用一个线程,程序是从上往下执行 ...
- 并发式IO的解决方案:多路非阻塞式IO、多路复用、异步IO
在Linux应用编程中的并发式IO的三种解决方案是: (1) 多路非阻塞式IO (2) 多路复用 (3) 异步IO 以下代码将以操作鼠标和键盘为实例来演示. 1. 多路非阻塞式IO 多路非阻塞式IO访 ...
- Swing做的非阻塞式仿飞秋聊天程序
采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...
- 阻塞式和非阻塞式IO
有很多人把阻塞认为是同步,把非阻塞认为是异步:个人认为这样是不准确的,当然从思想上可以这样类比,但方式是完全不同的,下面说说在JAVA里面阻塞IO和非阻塞IO的区别 在JDK1.4中引入了一个NIO的 ...
- Java IO(3)非阻塞式输入输出(NIO)
在上篇<Java IO(2)阻塞式输入输出(BIO)>的末尾谈到了什么是阻塞式输入输出,通过Socket编程对其有了大致了解.现在再重新回顾梳理一下,对于只有一个“客户端”和一个“服务器端 ...
- 理解Node.js异步非阻塞I/O与传统线性阻塞IO的区别(转)
阻塞I/O 程序执行过程中必然要进行很多I/O操作,读写文件.输入输出.请求响应等等.I/O操作时最费时的,至少相对于代码来说,在传统的编程模式中,举个例子,你要读一个文件,整个线程都暂停下来,等待文 ...
- Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程
Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程 缓冲区(Buffer) 用于存储数据 通道(Channel) 用于传输数据 多路复用器(Selector) 用于轮询 Channel 状 ...
- Java基础知识强化之多线程笔记07:同步、异步、阻塞式、非阻塞式 的联系与区别
1. 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就必须先得到返回值了. 换句话话说,调用者主动等待这个"调用"的结果. 对于 ...
- Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库
一.NIO非阻塞式网络通信 1.阻塞与非阻塞的概念 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在 ...
- 为什么IO多路复用需要采用非阻塞式IO
近段时间开始学习<Unix网络编程>,代码实现了一个简单的IO多路复用+阻塞式的服务端,在学习了非阻塞式IO后,有一个疑问,即: 假如调用了select,并且关注了几个描述字,当关注的描述 ...
随机推荐
- Linux:文件系统层次结构标准(Filesystem Hierarchy Standard)
Linux FHS_2.3标准文档:http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf
- tyvj/joyoi 1043 表达式计算4
这题怎么这么毒瘤... 一开始我想转后缀表达式来计算,后来发现有负数...弃疗. 递归求解又发现会有多余括号,我觉得不行... 实在是毒瘤啊! #include <cstdio> #inc ...
- SourceInsight快捷键
下载安装与设置 https://blog.csdn.net/k346k346/article/details/77412413 常用设置总结的还是比较全面的 问题: SourceInsight4.0中 ...
- (转)source insight的使用方法逆天整理
转载自:https://www.cnblogs.com/xunbu7/p/7067427.html A. why SI: 为什么要用Source Insight呢?因为她比完整的IDE要更快啊,比一般 ...
- (转)git checkout 撤销修改
背景:学习git相关命令 git撤销修改和版本回退 git status查看当前仓库的状态 liuzhipeng@exdroid43:~/pad/pad-test$ git status 位于分支 m ...
- C++ template一些体悟(1)
#include <iostream> using namespace std; template<typename T> class testClass { public: ...
- POJ 1979 Heavy Transportation (kruskal)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions:46898 Accepted: 1 ...
- (贪心 部分背包问题)悼念512汶川大地震遇难同胞——老人是真饿了 hdu2187
悼念512汶川大地震遇难同胞——老人是真饿了 http://acm.hdu.edu.cn/showproblem.php?pid=2187 Time Limit: 1000/1000 MS (Java ...
- Altium Designer 17 ------ 多层板设计
Pullback:在内电层边缘设置一个去铜边界,以保证内电层边界距离PCB边缘有一个安全间距.
- DBMS客户端是否安装:Make sure DBMS client is installed and this required library is available for dynamic loading
Symptom The full error message is as follows:Error logging in. Unable to process the database trans ...