Node.js - 编程基础

命名空间

首先我们需要考虑的是组织和重用代码,那么这就涉及到命名空间(namespace)。
Node.js 针对命名空间处理如下,

模块输出:module.exports 或者 exports,(exports只是对module.exports的一个全局引用)
模块引入:require,( I/O 同步操作, 在程序中I/O密集的地方尽量不要用require)

Node.js对于模块的处理如下:

  1. 是否调用的是核心模块https://nodejs.org/api/
  2. 是否存在在当前node_modules目录下面
  3. 是否存在在环境变量NODE_PATH下面
  • 模块规则
    如require('my_module') ,则需要模块在以上位置中,且定义的名称为my_module.js 或者 my_module目录中的index.js文件,(默认的index文件名可以通过package.json的main参数重定义)

异步编程

再有就是Node.js比较重要的一个特性,就是异步编程。
Node.js中有两种响应逻辑管理方式:

  • 回调:用来定义一次性响应的逻辑
  • 事件监听器:本质上也是一个回调,不同的是,它跟一个概念实体(事件)相关联

回调:

var fs = require('fs');

fs.readFile('test.dat' , function(err , data){
  console.log('这行代码会在读取文件完成之后进行');
})
console.log('这行代码会在读取文件完成之前进行');

事件监听器:

使用new EventEmitter()来实现事件功能
包括两个方面
事件监听器: eventemitter.on('action' ,function(){}) // 如果只希望响应一次,on -> once
事件发射器: eventemitter.emit('action')

流程控制

异步跟同步其实也就是流程中的串行跟并行

  • 异步 - 并行
  • 同步 - 串行

比较流行的流程控制的工具:Nimble,Step,Seq
串行可以通过Nimble工具实现:

nimble.series([function(),function(),...])
参考自:《Node.js实战》 - Mike Cantlon 等
上一篇 下一篇
Node.js 第一步 Node.js Web相关
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宫若石阅读 1,126评论 0 1
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,101评论 2 58
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,641评论 2 41
  • # 模块机制 node采用模块化结构,按照CommonJS规范定义和使用模块,模块与文件是一一对应关系,即加载一个...
    RichRand阅读 2,551评论 0 3
  • 天一连下了好几天阴雨,浮动的乌云,微风吹动的树枝,撑着伞疾走的人们,不知道你是不是他们中的一人……天凉了,远方的你...
    南方的木子今阅读 151评论 0 0