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

浙公网安备 33010602011771号