🌟前言
哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战,今天带领大家初识一下 Node.js包让我们一起来看看吧🤘
🌟Nodejs包
由多个子模块组成的大模块叫做包。
🌟什么是包?
我们已经知道了 JS 模块的基本单位是单个 JS 文件,但复杂些的模块往往由多个子模块组成。为了便于管理和使用,我们可以把由多个子模块组成的大模块称做包(package),并把所有子模块放在同一个目录里。
🌟自定义包
在组成一个包的所有子模块中,需要有一个入口模块,入口模块的导出对象被作为包的导出对象。例如有以下目录结构。
目录:d:/node/calc/ /calc sum.js //加法 subtraction.js //减法 multiplication.js //乘法 division.js //除法 main.js //主模块 入口模块
calc目录定义了一个包,其中包含了4个子模块,main.js作为入口模块。
var sum = require('./sum.js'); var subtraction = reuqire('./subtraction.js'); var multiplication = require('./multiplication.js'); var division = require('./division.js'); function calc(a,tag,b){ switch(tag){ case '+': return sum(a,b); break; case '-': return subtraction(a,b); break; case '*': return multiplication(a,b); break; case '/': return division(a,b); } } module.exports = calc;
然后我们要使用这个包
//d:/node/use.js var calc = require('./calc/main.js'); console.log(clac(10,'+',100));
但是这样使用感觉不像一个包。
var calc = require('./calc');
🌟包配置文件
包配置文件是一个JSON格式的文件 package.json , 位于包的根目录下, 是包的重要组成部分。
🌟示例
如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个 package.json 文件,package.json是包的配置文件。
D:/node/calc/ calc/ ├── sum.js //加法 ├── subtraction.js //减法 ├── multiplication.js //乘法 ├── division.js //除法 ├── main.js //主模块 入口模块 └── package.json package.json { "name": "calc", "main": "./calc/main.js" }
🌟Package.json 属性说明
🌟语义化版本号
使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下,查看更多。
语义版本号分为X.Y.Z三位,分别代表号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
版本号 | 语义 | 描述 |
X | 主版本 | 如果有大变动,新增了功能,向下不兼容,需要更新X位。 |
Y | 次版本号 | 如果是新增了功能,但是向下兼容,需要更新Y位。 |
Z | 补丁版本号 | 如果只是修复bug,需要更新Z位。 |
🌟package.json示例
它是这样一个json文件(注意:json文件内是不能写注释的,复制下列内容请删除注释):
{ "name": "test", //项目名称(必须) "version": "1.0.0", //项目版本(必须) "description": "This is for study gulp project!", //项目描述(必须) "homepage": "", //项目主页 "repository": { //项目资源库 "type": "git", "url": "https://github.com/xxxx" }, "author": { //项目作者信息 "name": "allcky", "email": "allcky@qq.com" }, "license": "ISC", //项目许可协议 "devDependencies": { //项目开发依赖包 "gulp": "^3.8.11", "gulp-less": "^3.0.0" }, dependencies:{ //项目生产依赖包 } }
🌟符合CommonJS规范的包
包是在模块基础上更深一步的抽象,Nodejs 的包类似于 C/C++ 的函数库或者 Java/.Net 的类库。它将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制。Nodejs 根 据 CommonJS 规范实现了包机制,开发了 npm来解决包的发布和获取需求。
CommonJS的包规范的定义其实也十分简单,它由包结构和包描述文件两个部分组成,前者用于组织包中的各种文件,后者则用于描述包的相关信息,以供外部读取分析。
Node.js 的包是一个目录,其中包含一个 JSON 格式的包说明文件 package.json。严格符合 CommonJS 规范的包应该具备以下特征:
文件类型 | 描述 |
package.json | 必须在包的顶层目录下 |
二进制文件 | 应该在 bin 目录下 |
JavaScript | 应该在 lib 目录下 |
文档 | 应该在 doc 目录下 |
单元测试 | 应该在 test 目录下 |
Node.js 对包的要求并没有这么严格,只要顶层目录下有 package.json,并符合一些规范即可。当然为了提高兼容性,我们还是建议你在制作包的时候,严格遵守 CommonJS 规范。
/ ├── bin/ # 存放命令行相关代码 │ ├── src/ # 开发目录 │ ├── doc/ # 存放文档 │ ├── lib/ # 存放API相关代码 │ ├── node_modules/ # 存放三方包 │ ├── tests/ # 存放测试用例 │ ├── package.json # 元数据文件 │ └── README.md # 说明文件
🌟写在最后
更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!