> 文章列表 > Node【包】

Node【包】

Node【包】

文章目录

  • 🌟前言
  • 🌟Nodejs包
  • 🌟什么是包?
  • 🌟自定义包
  • 🌟包配置文件
    • 🌟示例
    • 🌟Package.json 属性说明
    • 🌟语义化版本号
    • 🌟package.json示例
  • 🌟符合CommonJS规范的包
  • 🌟写在最后


在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战,今天带领大家初识一下 Node.js让我们一起来看看吧🤘

🌟Nodejs包

由多个子模块组成的大模块叫做包。

🌟什么是包?

我们已经知道了 JS 模块的基本单位是单个 JS 文件,但复杂些的模块往往由多个子模块组成。为了便于管理和使用,我们可以把由多个子模块组成的大模块称做包(package),并把所有子模块放在同一个目录里。
在这里插入图片描述

🌟自定义包

在组成一个包的所有子模块中,需要有一个入口模块,入口模块的导出对象被作为包的导出对象。例如有以下目录结构。

目录:d:/node/calc/
/calcsum.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.jsvar 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 属性说明

属性 描述
name 包名。规范定义它需要由小写的字母和数字组成, 可以包含 . _ - 但是不允许包含空格,包名必需是唯一的,以避免对外公布时产生重名冲突的误解。
version 包的版本号。一个语义化的版本号。查看详情
description 包的描述。
keywords 关键词数组, NPM 中主要用来做分类搜索
homepage 包的官网 url 。
author 包的作者姓名。
contributors 包的其他贡献者姓名。
devDependencies 开发环境依赖包列表。
dependencies 生产环境依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require(“express”)。

🌟语义化版本号

使用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!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!