Node编程基础
如何组织代码
模块是Node让代码易于重用的一种组织和包装方式
- 传统方式按逻辑把单个文件分为多个文件,但这些文件互相引用的同时会产生全局变量污染的问题
- Node模块打包代码是为了重用,但它们不会改变全局作用域
- Node模块允许你从被引入文件中选择要你暴露给程序的函数和变量,如果模块返回的函数和变量不止一个,可以把它们作为exports对象的属性,否则就使用module.exports
如何创建模块
- 模块既可能是一个文件,也可能是包含一个或多个文件的目录。如果模块是一个目录,Node通常会在这个目录下找一个叫index.js的文件作为模块的入口
- 使用模块要用到require函数,require是Node中少数几个同步I/O操作之一
用node_modules重用模块
要求模块在文件系统中使用相对路径存放,对于组织程序特定的代码很有帮助,但是与他人共享代码却用处不大。Node的node_modules机制可以不必知道模块在文件系统中的具体位置。
node_modules的搜寻机制如下:
1.开始在文件同一目录下寻找;
2.没有找到,就在当前目录node_modules下找
3.没有找到,进入父目录,再找当前目录node_modules中有没有,重复3;
4.没有找到,找环境变量NODE_PATH指定目录中是否存在;
5没有找到,异常。
异步编程技术
事件发生会触发响应逻辑。
在Node事件里流行两种响应逻辑的管理方式:
回调
回调通常用来定义一次性响应逻辑。比如数据库查询,可以指定一个回调函数来确定如何处理查询结果。这个回调函数可能会显示数据数据库查询结果,根据这些结果做些计算,或者以查询结果为参数执行另一个回调函数
事件监听
事件监听器,本质上也是一个回调,不同的是,它跟一个事件相关联。在Node中,当有HTTP请求过来时,此时服务器会产生一个事件,事件监听器就可以监听这个事件,并添加一些响应的逻辑。
一个Node HTTP服务器实例就是一个事件发射器
能够继承和添加事件发射及处理能力的类(EventEmitter)
(未完待续)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com