Node 编程基础
Node 不像大多数开源平台那样,它很容易设置,对内存和硬盘的空间没有过多的要求;也不需要复杂的集成开发环境来构建系统;但是需要面对两大难题
- 如何组织代码
- 如何做到异步变成
Node 功能的组织及重用
Node 模块允许你从被引入的文件中选择要暴露给程序的函数和变量;如果模块返回的函数或变量不止一个,那它可以通过设定 exports 对象的属性来指明它们
创建模块
模块既可能是一个文件,也可能是包含一个或者多个文件的目录
举个例子
a.js
exports.add = function() {
return 1 + 1;
};
b.js
var a = require('a.js');
a.add();
用 module.exports 微调模块的创建
返回一个构建函数来代替返回一个对象
用 node_modules 重用模块
利于与他人共享模块
注意事项
- 如果模块是目录,在模块目录中定义模块必须被命令成 index.js,除非你在 package.json 里面指明 main 对应的文件名称
- Node 把模块对象缓存起来
异步编程技术
事件发生会触发响应逻辑,在 Node 的世界里流行两种响应逻辑管理方式:回调和事件监听
用回调处理一次性事件
回调是一个函数,被当做参数传递给异步函数,描述了异步操作完成之后要做什么
用事件发射器处理重复性事件
事件发射器会触发事件,并且在那些事件被触发时能处理它们;如 HTTP 服务器、TCP 服务器和流,都被当成事件发射器
异步开发的难题
创建异步程序时,你必须密切关注程序的执行流程,并瞪大眼镜盯着程序的状态:事件轮训的条件、程序变量,以及其他随着程序逻辑执行而发生变化的资源
异步逻辑顺序化
在异步程序执行过程中,有些任务会随时发生,跟程序中的其他部分在做什么没有关系,什么时候做这些任务都不会出问题;但也有些任务只能在特定任务做了之后做;
什么时候使用串行流程控制
可以使用回调让几个异步任务按顺序执行,如果任务很多,必须组织一下
实现串行化流程控制
需要先把这些任务按预期的执行顺序放入到一个数组中,这个数组起到队列的作用,完成一个任务后按顺序从数组取出下一个
实现并行化流程控制
为了让异步任务并行执行,仍然是把任务放到数组中,但任务的存放顺序无关紧要;每个任务都应该调用处理器函数增加已完成任务的计数值,当所有任务完成后,处理器函数应该执行后续的逻辑
利用社区里的工具
流行的比如 Nimble、Step 和 Seq
具体代码细节
FEATURED TAGS
前端开发
H5
JavaScript
设计模式
browser
jQuery
源码分析
生活
leetcode
Array
Stack
Queue
Linked List
剑指offer
Binary Search Tree
Binary Tree
Breadth-First Search
Depth-First Search
String
Set
Binary Search
Sliding Window
Backtracking
Dynamic Programming
Two Pointers
Union Find
Sort
Bit Operation
Recursion
Map
Graph
Search
Hash
LinkedList
复盘
QuickSort
Trie
Design
MinHeap
Traverse
Min Heap
Node.js
BackEnd
SQL
MySQL
Design Patterns
Network
计算机网络
Python
SVG