理解模块化
在开发中,项目结构会存在多重层次嵌套
根目录
├── index.html # 主页的页面
├── index.js # 主页需要用到的js代码
│ └── getData() # 是index.js中定义的函数
└── tool.js # 为整个项目提供公共方法
└── doSomething(){ } # 是tool.js中定义的函数
在传统开发中,如果要在index.js的getData去用到tool.js中的doSomething()方法,需要用index.html去统一管理。原因是ES5不支持模块化(不能直接在一个js文件中去引用另一个js文件的方法,必须要通过第三个文件.html来引入)
那么什么是模块化?一个js文件可以引入其他的js文件,能使用引入的js文件的中的变量、数据,这种特性就称为模块化。使用模块化开发可以很好的解决变量、函数名冲突问题,也能灵活的解决文件依赖问题。
Node.js 中的 CommonJS 的模块化规范
CommonJS 规范
CommonJS 规范中主要规定了以下 3 项内容:
- 导入其它模块时,统一使用 require() 函数。
- 每个 .js 文件,都是一个独立的模块,模块内的成员都是私有的。
- 在每个 JS 模块中,使用 module.exports 向外共享成员。
图示
注意
- module.exports 是固定写法,一般放在文件的最末尾,也只用一次。
- module.exports 表示当前模块要暴露给其它模块的功能。
- 一定要导出模块
npm
- npm网站是一个第三方模块的"不花钱的模块超市",我们可以自由地下载,上传模块。
如何下载npm包
分成三步:
- 初始化项目(新建一个空文件夹,打开运行cmd,输入npm init )如果之前已经初始化,则可以省略。
- 安装包。 npm install 包名。[注意:保持联网的状态哈]
- 引入包,使用
下载包-修改镜像源
下包速度慢的原因:默认情况下,npm 从一个名为 registry.npmjs.org/ 的服务器上下包。这个服务器在国外,因此下包速度会非常慢。
解决方案:把 npm的下包地址,从国外的服务器切换为国内的服务器。
检查当前的下包地址:
npm config get registry
把下包的地址切换为国内的淘宝服务器
npm config set registry=https://registry.npm.taobao.org/
如何上传自己的npm包
连接npm
npm adduser
这个命令需要输入四个信息以供连接上npmjs:
- 用户名
- 密码
- 邮箱(是你在npmjs官网上注册时使用的信息)
- 校验密码。它会向你的邮箱发邮件
把包上传到npm
命令: npm publish
如果成功:
出错的可能是:
- 这个包名被别人先用了。
- 包的版本号不对:每次publish时,包的版本号都应该要大于之前的版本号。
如果没有报错,则表示一切ok,你可以用你的帐号密码登陆npm,去查看你名下的package是否有了myNpm