Node【包】

news2024/10/7 12:28:05

文章目录

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

在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 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 属性说明

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么做好管综深化设计?高效就靠它

管线综合深化设计是指将设计阶段完成的机电管线进一步深化排布,结合建筑装修的要求,根据管线不同的性质与功能统筹管线位置排布。管线综合是 BIM 技术现阶段最基础也是应用最广泛的点,如何使机电各系统的使用功能效果达到最佳,整体…

(排序11)排序的时间复杂度,空间复杂度,稳定性总结

图片总结 内排序时间复杂度总结 内部排序:数据元素全部放在内存中的排序。. 在内排序当中比较快的有希尔排序,堆排序,快速排序,归并排序,这四个排序的时间复杂度都是O(n*logn)。其中希尔排序的时间复杂度更加准确的来…

RB-PEG-COOH,罗丹明聚乙二醇羧基;RhodamineB-PEG-acid;RB-PEG2000-COOH

RB-PG-COOH, 罗丹明聚乙二醇羧基 中文名称:罗丹明-聚乙二醇-羧基 英文名称:RhodamineB-PEG-acid RB-PEG-COOH 性状:固体或粘性液体,取决于分子量 溶剂:溶于水和DCM、DMF、DMSO等常规性有机溶剂 分子量&#xff1…

MySQL运维28-MySQL复制

文章目录 1、MySQL复制模式2、MySQL复制的兼容性3、与MySQL复制相关的两种日志3.1、中继日志3.2、MySQL复制的状态日志 4、MySQL主从复制的实施示例4.1、主从库安装4.2、主库配置4.3、从库的配置4.4、启动复制和确认成功 5、对MySQL复制的监控6、MySQL监控的运维6.1、在从库修改…

ASEMI代理ADAU1979WBCPZ原装ADI车规级ADAU1979WBCPZ

编辑:ll ASEMI代理ADAU1979WBCPZ原装ADI车规级ADAU1979WBCPZ 型号:ADAU1979WBCPZ 品牌:ADI /亚德诺 封装:LFCSP-40 批号:2023 安装类型:表面贴装型 引脚数量:40 类型:车规级…

Linux串口应用编程

在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。 对于UART,又在ioctl之上封装了很多函数,主要是用来设置行规程。 所以对于UART,编程的套路就是: 使用open函数打开串口设置行规程&#xff…

vue---自定义指令

目录 1、为什么使用自定义指令? 2、自定义指令 3、自定义指令使用 1、为什么使用自定义指令? 什么时候我们需要去自定义一个指令呢? 事件修饰符,很大的程度上我们是为了让我们的代码更加显得是数据驱动的以及可测试的&#x…

姿态识别、手势识别(附代码)

姿态识别技术是一种基于计算机视觉的人体姿态分析方法,可以通过分析人体的姿态,提取出人体的关键点和骨架信息,并对人体的姿态进行建模和识别。随着深度学习技术的发展,近年来姿态识别技术得到了广泛的应用和研究,其中…

React框架的介绍、特点、安装及基本使用流程

一、react介绍 官网:React (docschina.org) react是由facebook前端开发团队开发和维护的js框架 react的实现功能类似VUE,但是由于国外的开发风格,导致在react上,并没有对数据渲染的步骤进行封装,需要开发者更多的使…

【计算几何】点在几何图形中定位问题

一、说明 点的定位属于几何查找,是计算几何中的一个重要的问题。其包括点在三角形内外,多边形内外判断,平面剖分中的位置等。 二、点和几何区域的关系 2.1 点和线的位置关系 两个平行向量的叉乘等于0。如果两个向量的叉乘等于0&#xff0c…

Kali下开启远程管理-ssh

1、使用管理员root修改/etc/ssh/sshd_config 配置文件 ┌──(kali㉿kali)-[~] └─# sudo -i //切换管理root ┌──(root㉿kali)-[~] └─# vim /etc/ssh/sshd_config PermitRootLogin prohibit-password > yes PasswordAuthentication 去掉#号 2、重启ssh.serv…

大数据项目之数仓相关知识

第1章 数据仓库概念 数据仓库(DW): 为企业指定决策,提供数据支持的,帮助企业,改进业务流程,提高产品质量等。 DW的输入数据通常包括:业务数据,用户行为数据和爬虫数据等 ODS: 数据…

基于计算机视觉手势识别控制系统YoLoGesture (利用YOLO实现) 有详细代码+部署+在线服务器尝试+开源可复现

基于计算机视觉手势识别控制系统YoLoGesture (利用YOLO实现) 在线服务器体验网址: https://kedreamix-yologesture.streamlit.app/ 文章目录 基于计算机视觉手势识别控制系统YoLoGesture (利用YOLO实现)1. 项目已完成的部分2. 部分尝试结果3. 项目整体框架3.1. 数据…

如何实现多个窗口同步操作?技术层面?借助工具?

朋友们!你们是否曾经遇到过需要在多个窗口之间进行同步操作的情况?例如,你想在不同的浏览器窗口中同时滚动或者放大缩小网页。如果你有这样的需求,东哥今天就从技术和借助专业工具两方面给大家讲解如何实现对多个相同布局的窗口进…

【C++入门必备知识:|引用| +|auto关键字| + |范围for|】

【C入门必备知识:|引用| |auto关键字| |范围for|】 ①.引用Ⅰ.引用概念Ⅱ.引用使用Ⅲ.引用特性Ⅳ.使用场景1.做函数参数意义: 2.做函数返回值意义: Ⅵ.常引用Ⅶ.引用与指针区别 ②.auto关键字1.使用规则 ③.基于范围的for循环1.使用规则 在这…

如何在你的云服务器/云主机上更新并使用最新版本的python(python3.11)

更新并使用最新版本的python3.11 第一步,登录云服务器,并更新系统包 打开您的终端(Terminal)或使用任意SSH客户端,输入如下命令来登录云主机: ssh 用户名IP地址 在输入密码后,您将成功登录到云…

【软考备战·希赛网每日一练】2023年4月21日

文章目录 一、今日成绩二、错题总结第一题第二题第三题第四题 三、知识查缺 题目及解析来源:2023年04月21日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 第二题 解析: 活动图 是一种特殊的状态图,它展现了在系统…

【谷歌扩展程序入门】简单制作一个查看网页结构的扩展程序

简言 在想看网页结构的时候一般会F12查看元素内容。 太麻烦了 还不简单方便。 扩展程序 扩展建立在诸如 HTML、JavaScript 和 CSS 之类的 Web 技术之上。它们在单独的沙盒执行环境中运行并与 Chrome 浏览器交互。 扩展允许您通过使用 API 修改浏览器行为和访问 Web 内容来“扩…

wsl2-ubuntu20编译Lineage17(Android10)

WSL2安装Ubuntu20 wsl2安装 略 安装Ubuntu20 wsl.exe --list --online 列出当前支持的所有系统,不过这个命令是从https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json来获取,所以有很大概率会失败。失败就…

解忧杂货铺(三):工作相关资源搜集

1、概述 此文档记录一些对自己很有用的小工具或者其他资源的链接 2、资源 2.1 Hightec生成HEX的方法 Hightec生成HEX的方式https://blog.csdn.net/qq_31225611/article/details/113696362 2.2 UML各个图解析 UML图https://blog.csdn.net/qq_35423190/article/details/1250…