Node 体验 事件驱动、非阻塞式 I/O

https://github.com/nswbmw/N-blog/blob/master/book/2.1%20require.md

 

全局对象和浏览器中的window类似

1.console.log(__dirname)// 输出当前工作目录

console.log(__filename)//输出当前文件路径

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监控的意思,文件改变服务器自动重启。

………………………………………………………………………………………………………………………………

 

posted @ 2018-04-21 13:31  chenhui7373  阅读(321)  评论(0)    收藏  举报