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

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

Node 体验 事件驱动、非阻塞式 I/O的更多相关文章

  1. node 单线程异步非阻塞

    链接:http://www.runoob.com/nodejs/nodejs-callback.html 首先什么是单线程异步非阻塞? 单线程的意思整个程序从头到尾但是运用一个线程,程序是从上往下执行 ...

  2. 并发式IO的解决方案:多路非阻塞式IO、多路复用、异步IO

    在Linux应用编程中的并发式IO的三种解决方案是: (1) 多路非阻塞式IO (2) 多路复用 (3) 异步IO 以下代码将以操作鼠标和键盘为实例来演示. 1. 多路非阻塞式IO 多路非阻塞式IO访 ...

  3. Swing做的非阻塞式仿飞秋聊天程序

    采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...

  4. 阻塞式和非阻塞式IO

    有很多人把阻塞认为是同步,把非阻塞认为是异步:个人认为这样是不准确的,当然从思想上可以这样类比,但方式是完全不同的,下面说说在JAVA里面阻塞IO和非阻塞IO的区别 在JDK1.4中引入了一个NIO的 ...

  5. Java IO(3)非阻塞式输入输出(NIO)

    在上篇<Java IO(2)阻塞式输入输出(BIO)>的末尾谈到了什么是阻塞式输入输出,通过Socket编程对其有了大致了解.现在再重新回顾梳理一下,对于只有一个“客户端”和一个“服务器端 ...

  6. 理解Node.js异步非阻塞I/O与传统线性阻塞IO的区别(转)

    阻塞I/O 程序执行过程中必然要进行很多I/O操作,读写文件.输入输出.请求响应等等.I/O操作时最费时的,至少相对于代码来说,在传统的编程模式中,举个例子,你要读一个文件,整个线程都暂停下来,等待文 ...

  7. Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程

    Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程 缓冲区(Buffer) 用于存储数据 通道(Channel) 用于传输数据 多路复用器(Selector) 用于轮询 Channel 状 ...

  8. Java基础知识强化之多线程笔记07:同步、异步、阻塞式、非阻塞式 的联系与区别

    1. 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就必须先得到返回值了. 换句话话说,调用者主动等待这个"调用"的结果. 对于 ...

  9. Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库

    一.NIO非阻塞式网络通信 1.阻塞与非阻塞的概念  传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在 ...

  10. 为什么IO多路复用需要采用非阻塞式IO

    近段时间开始学习<Unix网络编程>,代码实现了一个简单的IO多路复用+阻塞式的服务端,在学习了非阻塞式IO后,有一个疑问,即: 假如调用了select,并且关注了几个描述字,当关注的描述 ...

随机推荐

  1. 两数之和 II - 输入有序数组

    题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返 ...

  2. Java 验证代理ip

    原文地址:http://www.cnblogs.com/junrong624/p/5416503.html 1 import java.io.IOException; import java.io.I ...

  3. 论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)

    就是错题整理了,其实也会把一些不该犯的失误整进来. 其实之前一直拖着不想写,直到某次模拟赛,看错了2道题,顺便爆了一道题的int(没错第一个点就会爆)之后爆零了,吓得我赶紧把这篇博客搞出来了..... ...

  4. Django(二十)model中的 class Meta

    https://www.cnblogs.com/tongchengbin/p/7670927.html class Main(models.Model): img = models.CharField ...

  5. c#中数组的总结

    Array数组: 基本定义:string[] Scences={"sky","star","sun"}  或者 int[] Scences= ...

  6. RecyclerView不调用onCreateViewHolder和onBindViewHolder的解决方法

    在把RecyclerView和Fragment合并使用时,没有任何数据显示在RecyclerView上.挨个查看log输出,发现是Adapter未调用onCreateViewHolder和onBind ...

  7. Js封装的动画函数实现轮播图

    ---恢复内容开始--- 效果图说明:当鼠标移到哪一个按钮上的时候会自动跳转到某一张图片上,并且按钮会以高亮显示 项目目录结构 用到的js封装的animate()动画         function ...

  8. qml: 自定义滚动条;

    注:  该博文为原创博文,转载请注明,摘用请随意: qml自带的滚动条不太好用: 首先,利用canvas绘制滚动条两端的箭头: import QtQuick 2.0 Canvas { width: 2 ...

  9. Java基础之随机生成数字和字母

    字母与数字的ASCII码 目 前计算机中用得最广泛的 字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information I ...

  10. 2017-12-15python全栈9期第二天第五节之while else的用法二当不被break打断时else内容的结果会被打印

    #!/user/bin/python# -*- coding:utf-8 -*-count = 0while count <=5 : count += 1 if count == 3 : pas ...