1、如果要引入自定义的模块,虽然可能在当前目录下,但是也需要注意路径,因为如果不加路径标识的话,很难分辨出来是引用的系统模块还是引用的当前目录里的模块,如下面这种,是分不清的:
var http = require('http');
var test = require('test.js');
——正确的写法是如下。当然如果不是在当前文件夹里,那么再更改相应的路径即可(注:引用的时候可以省略后缀)。
const t1 = require('./1.js');
2、我们定义一个模块,其实最核心的是利用exports
暴露出去,比如在1.js
里面:
exports.a = 11;
exports.b = 22;
然后在需要引用该模块的地方,这么使用即可:
const t1 = require('./1.js');
console.log(t1.a,t1.b);
——但是,这种模块里内容的输出要写很多个exports
,有另一个方法是:
module.exports = {
a:111,
b:222
}
3、我们都知道Node.js
有一个包管理工具叫npm
,我们安装卸载一些包直接使用node install xx
或者node uninstall xx
。使用这个包下载安装的话,它下载到哪里呢?
——如果我们cd
到一个目录后,然后使用node install xx
安装的话,那么它就会下载到当前文件夹里,但是他会新建一个叫做node_modules
的文件夹,然后把下载的所有的都放在这个里面。我们使用的时候和引入系统模块一样样用。
——那么,有意思的就来了。我们利用npm
下载的都是第三方包,那么我们自己自定义的模块本质上也属于第三方包,那么我们把我们的那个文件比如1.js
可不可以也放到node_modules
里面?
——答案是可以的。而且也应该这么做。这么做之后,还有一个很明显的好处,就是,我们引入的时候,就不需要考虑路径的问题了,直接使用:
const t1 = require('1.js');
4、发布模块。发布模块其实就是把代码上传到https://www.npmjs.com上。这个网站里面都是第三方包,类似于python
的PyPI
。
——当然,我们需要一个账号,这个账号我们可以在官网直接注册,也可以通过命令npm adduser
来注册用户。
——注册完用户,当然就是利用这个用户上传了。那么你需要上传哪个代码,就进入到它所在的文件夹里,初始化一下,也就是nppm init
,其实初始化就是让你给这个包填写一些基本信息,比如名字、版本、作者等等,还有入口文件(默认是index.js
)等等。初始化之后,我们会在这个文件夹里面看到一个package.json
的文件,这里面就是一个字典,字典里面就是我们刚刚初始化填的哪些信息。
——我们要发布之前肯定要登录。在命令行里面就是npm login
。
——然后,我们需要在这个文件夹里面创建一个index.js
,写我们的模块。写完之后,就可以发布了。发布的命令就是npm publish
,发布之后可以撤销发布,就是 npm --force unpublish
,当然撤销发布的时候比较麻烦,你得下载这个模块,下载之后在这个模块所在的文件夹路径里,使用撤销发布这个命令。至于撤销发布里面的细节我们这边不展开讲,比如发布超过一定时间就不能撤销等等。
——发布之后,我们如果有升级版本怎么办?下载这 包,修改代码,然后把package.json
里的版本值改一下,最后利用npm update
就可以发布升级包了。