nodejs知识总结
来源:互联网 发布:水文地质钻孔数据 编辑:程序博客网 时间:2024/06/07 19:11
CommonJS规范:弥补javascript天然不足的问题,规定了模块化开发的整体规则
1:引用模块
var http = require("http");
2、模块定义规则:
将方法作为exports的属性进行输出,
// math.js
exports.add = function() {
var sum = 0;
i = 0;
args = arguments,
l = args.length;
while(i<l){
sum += args[i++];
}
return sum;
};
// 在其他js代码中调用导出的模块
var math = require("math");
}
3、模块标识,传给require()方法的参数,它是必须符合小驼峰命名的字符串,或者以..或者.开头的的相对路径,或者绝对路径,可以没有后缀名js ;
Node 中引进模块的步骤:
(1)路径分析 (2)文件定位(3)编译执行
模块分为两类,一类是Node的核心模块,一个是用户自定义的模块,成为文件模块;文件模块需要在 运行时进行加载,速度比核心的慢
node对引入过的js代码会进行缓存,减少二次加载的开销;
如何进行路径分析和文件定位,在require()函数中的代码如何实现路径解析的呢?
模块分为核心模块和文件模块,如果是Node自带的一些模块,例如"http", "fs",require中只要指定
1、核心模块,"http", "fs",
2、以..或.开头的相对文件模块,
3、以/开头的绝对路径模块,
4、非路径形式的模块,如自定义的Connector模块;
console.log(module.paths) // 先在此js所在的文件夹下寻找指定的js文件,没找到则一次递归在父目录中寻找;
小诀窍,在指定文件的后缀,当模块不是以js结尾的情况下,用于快速加载js代码;
出现目录的名称和require()中的参数相同,则Node将目录当作一个包来处理,Node现在当前目录下查找package.json文件,通过JSON.parse()解析出包描述符对象,
读取main属性所指定的文件模块名称,然后对此模块名进行解析;
如果没有package.json文件,则以index作为文件模块名进行解析查找;
最后依然找不到,则抛出异常;
模块编译:
编译和执行是引入文件模块的最后步骤,Node会新建一个模块对象,然后根据路径载入编译,不同的后缀,载入方法也是不一样的,例如js后缀的fs模块进行加载,
.json后缀的以JSON.parse()函数解析,.node后缀以Node的C++模块dlopen()函数进行载入;
在Node中,每个文件模块都是一个对象,文件模块的定义如下:
function Module(id, parent) {
this.id = id;
// 导出对象
this.exports = {}
this.parent = parent;
if(parent && parent.children) {
parent.children.push(this)
}
this.filename = null;
this.loaded = false;
this.children = [] ;
}
每一个编译成功的模块,都会被缓存起来,作为索引存储在Module._cache对象上;
加载定义后缀的模块,设置require.extensions属性,require.extensions['.ext']
Node文件封装隔离,消除名称污染;
创建一个npm包的全过程:
(1)创建一个目录, mkdir demo, cd demo,创建文件hello.js文件 :
(2)调用npm init命令初始化package.json包;
(3)注册包仓库帐号
npm adduser
(4)上传包到npm仓库 npm publish
1:引用模块
var http = require("http");
2、模块定义规则:
将方法作为exports的属性进行输出,
// math.js
exports.add = function() {
var sum = 0;
i = 0;
args = arguments,
l = args.length;
while(i<l){
sum += args[i++];
}
return sum;
};
// 在其他js代码中调用导出的模块
var math = require("math");
}
3、模块标识,传给require()方法的参数,它是必须符合小驼峰命名的字符串,或者以..或者.开头的的相对路径,或者绝对路径,可以没有后缀名js ;
Node 中引进模块的步骤:
(1)路径分析 (2)文件定位(3)编译执行
模块分为两类,一类是Node的核心模块,一个是用户自定义的模块,成为文件模块;文件模块需要在 运行时进行加载,速度比核心的慢
node对引入过的js代码会进行缓存,减少二次加载的开销;
如何进行路径分析和文件定位,在require()函数中的代码如何实现路径解析的呢?
模块分为核心模块和文件模块,如果是Node自带的一些模块,例如"http", "fs",require中只要指定
1、核心模块,"http", "fs",
2、以..或.开头的相对文件模块,
3、以/开头的绝对路径模块,
4、非路径形式的模块,如自定义的Connector模块;
console.log(module.paths) // 先在此js所在的文件夹下寻找指定的js文件,没找到则一次递归在父目录中寻找;
小诀窍,在指定文件的后缀,当模块不是以js结尾的情况下,用于快速加载js代码;
出现目录的名称和require()中的参数相同,则Node将目录当作一个包来处理,Node现在当前目录下查找package.json文件,通过JSON.parse()解析出包描述符对象,
读取main属性所指定的文件模块名称,然后对此模块名进行解析;
如果没有package.json文件,则以index作为文件模块名进行解析查找;
最后依然找不到,则抛出异常;
模块编译:
编译和执行是引入文件模块的最后步骤,Node会新建一个模块对象,然后根据路径载入编译,不同的后缀,载入方法也是不一样的,例如js后缀的fs模块进行加载,
.json后缀的以JSON.parse()函数解析,.node后缀以Node的C++模块dlopen()函数进行载入;
在Node中,每个文件模块都是一个对象,文件模块的定义如下:
function Module(id, parent) {
this.id = id;
// 导出对象
this.exports = {}
this.parent = parent;
if(parent && parent.children) {
parent.children.push(this)
}
this.filename = null;
this.loaded = false;
this.children = [] ;
}
每一个编译成功的模块,都会被缓存起来,作为索引存储在Module._cache对象上;
加载定义后缀的模块,设置require.extensions属性,require.extensions['.ext']
Node文件封装隔离,消除名称污染;
创建一个npm包的全过程:
(1)创建一个目录, mkdir demo, cd demo,创建文件hello.js文件 :
(2)调用npm init命令初始化package.json包;
(3)注册包仓库帐号
npm adduser
(4)上传包到npm仓库 npm publish
阅读全文
0 0
- nodejs知识总结
- nodeJS知识
- nodejs 知识
- nodejs总结
- Nodejs总结
- nodejs前期知识准备
- nodejs相关知识
- nodejs的总结
- nodejs 入门总结
- window NodeJS学习总结
- nodejs 调试总结
- Nodejs调试技术总结
- nodejs http 总结
- nodeJs知识点总结
- NodeJS基本知识总结
- nodejs安装总结
- nodejs学习总结(二)-nodejs 是什么
- 知识总结
- 手把手教你如何在电脑本机传输文件到阿里云服务器上
- mybitis 利用association或collection传递多参数子查询
- 关于python IDLE无法显示行号的问题
- Mysql登录中文名称+密码不成功,原因是数据库编码不是utf8
- Android锁屏功能的开发与实现
- nodejs知识总结
- Mybatis 简单使用步骤
- JDBC、事物、连接池、DBCP、C3P0、DBUtils
- python 文件的基本处理
- 磁盘分区和文件系统
- jdbcBatch
- 大数据行业的”hello word” – word count
- A. The Useless Toy
- 2.1.6 —线性表—Longest Consecutive Sequence