Node.js中的" 包 "

  • CommonJS的包规范给程序员提供了组织模块的标准,减少沟通成本

  • 包的使用:

    • 所有模块放在一个文件夹(包名)
    • 包放在当前项目中的node_modules文件夹下
    • 包中定义一个index.js(文件名不可以更改)导出所有模块
    • 引用包(约定大于配置)
  • 导入包的执行过程 require("calc")

    • 将calc当做核心模块加载,加载不成功
    • 自动去当前目录中的node_modules中找文件名为calc的包
    • 自动去calc找index.js的出口模块(导出的模块)
    • 如果找不到index.js报错,如果想要改出口模块,需要package.json配置文件
  • package.js

名称功能
name 包名称
description 包介绍,介绍包的功能
version 版本号,用于版本控制
keywords 关键词数组,用于在npm中搜索
main require引入包时优先检查此字段
dependencies 标记当前包所依赖的包列表,npm会自动加载依赖的包
Author 包作者
License 开源许可
{
  "name": "calcpack", 
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {   //可以通过npm run来执行
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
  • 创建包的标准方式

    • npm init -y 自动创建package.json
  • 一个标准包的结构

名称 |功能 |---|---| package.js |包描述文件 bin |存放可执行文件 lib |存放JavaScript代码 doc |存放文档 test |存放单元测试用例代码 README.md |说明文档,描述包的作用和用法

  • 标准包执行过程
    • 将calcpack当做核心模块加载,加载不成功
    • 自动去当前目录中的node_modules中找文件名为calcpack的包
    • 如果在calcpack中有package.json的话,并且指定了main属性的值,优先加载main指定的.js模块(出口模块)
    • 如果没有package.json,或没有指定main属性,自动去calcpack找index.js的出口模块(导出的模块)
    • 如果找不到index.js报错

posted on 2016-11-05 20:17  type_Y  阅读(266)  评论(0)    收藏  举报

导航