模块化和npm

142 阅读2分钟

理解模块化

在开发中,项目结构会存在多重层次嵌套

根目录
├── 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 向外共享成员。

图示

image.png

注意

  • 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

如果成功:

image.png

出错的可能是:

  • 这个包名被别人先用了。
  • 包的版本号不对:每次publish时,包的版本号都应该要大于之前的版本号。

如果没有报错,则表示一切ok,你可以用你的帐号密码登陆npm,去查看你名下的package是否有了myNpm