nodejs - 包结构

devtools/2024/10/4 19:23:46/

包结构

包结构实际上是一个存档文件,即一个目录大包围.zip或者tar.gz格式的文件,安装之后还原为目录,完全符合CommonJS规范的包目录应该包括如下
```dotnetcli
package.json: 包描述文件
bin: 存放二进制文件的目录
lib: 用于存放JavaScript代码的目录
doc: 存放文档的目录
test: 用于存放单元测试用例的代码
```
+ package.jsonCommonJS为packjson.age 文件定义了一些必要的字段+ 包规范```dotnetcliname: 包名: 小写的字母和数字组成,可以包含._-等,但是不允许出现空格。包名不许是唯一的。NPM建议不要再包名中附加node或者js来重复表示是JavaScript或node模块description: 包简介version: 版本号keyword: 关键词数组,NPM中主要用来作分类检索,一个好的关键词数组有利于用户快速找到编写的包。maintainers: 包维护列表,每个维护者有name,emial和web这三个属性。npm通过该属性进行权限认证contributors: 贡献者列表,再开源社区中,为开源项目提供代码的贡献者列表bugs: 一个可以反馈bug的网站地址或者邮件地址licenses: 当前包所使用的许可证列表,表示这些包在那些许可证下可以使用。[{"type": "GPLv2", "url": "https"}]repositories: 托管源代码的位置列表,表明可以通过那些方式和地址访问包的源代码dependencies: 使用当前包所需要的依赖,NPM会通过这个属性帮助自动加载依赖的包homepage: 当前包的网站地址os: 操作系统支持列表cpu:cpu架构的支持列表engine: 支持的JavaScript引擎: ejs flusspgferd gpsee jsc spidermonkey narwhal node v8builtin: 表示当前包是哦股在内奸在底层系统的标准组件directories: 包目录说明implements: 实现规范的列表,标志当前包实现了commonjs的那些规范scripts: 脚本说明对象,被包管理器来安装,编译测试和卸载包"script" : {"install": "uninstall.js","build": "build.js","doc": "make-doc.js","test": "test.js"}
```
+ 包文件```dotnetcliauthor: 包作者bin: 一些包作者希望包可以添加到命令行工具中使用,配置好bin之后,通过npm install package_name -g命令可以将脚本添加到执行路径中去,之后可以在命令行中直接执行main: 模块引入方法,在require引入包的时候,会先价差这个字段,将其作为模块的入口,如果不存在这个字段,require方法会查找包目录下的index.js index.node index.json 文件作为默认入口devDependencies: 一些模块中旨在开发的时候需要依赖,配置这些属性,可以提示包的后续开发者依赖包。```

局域NPM

+ NPM仓库主要是由两部分组成,体现在源代码中分别是www和registry,www和NPM站点的界面,registry则是利用CouchDB存储模块包文件和提供JSON API 面向NPM站点和NPM命令行工具服务
+ ![alt text](image-5.png)
+ 安装npm仓库环境[百度]1. 安装Erlang2. 安装CouchDB

前后端共用模块

  1. 模块的侧重点
  • 前后端JavaScript分别在http的两端。浏览器的JavaScript需要尽力从一个同意服务器端分发到多个客户端执行,而服务端JavaScript则相同的代码需要多次执行,前者的瓶颈在于代换,后者的瓶颈在于cpu和内存等资源
  1. AMD规范
    1. id和依赖是可以选择的,和node模块相似之处在于工厂的内容实际就是代码的内容
    javascript"> define(function() {var exports = {};exports.sayhello = function () {console.log(module.id)}return exports})
    
    AMD模块需要使用define来定于一个模块,而在node中是显示包装的。目的是作用域隔离,仅在需要的时候被引入,避免通过全局变量或者命名空间的方式,避免变量污染和被修改。内容需要分会的方式实现导出
  2. CMD规范
    定义模块和依赖引入和AMD规范有所不同。
    1. 依赖部分
    javascript">define(function(require, exports, module)) {// code
    }
    define(factory)
    

http://www.ppmy.cn/devtools/10654.html

相关文章

Golang面试题四(GMP)

目录 1.Goroutine 定义 2.GMP 指的是什么 3.GMP模型的简介 全局队列(Global Queue) P的本地队列 P列表 M列表 4.有关P和M的个数问题 P的数量问题 M的数量问题 P和M何时会被创建 5.调度器P的设计策略 复⽤线程 work stealing机制 hand off…

视频改字祝福 豪车装X系统源码uniapp前端源码

uniapp视频改字祝福 豪车装X系统源码 全开源,只有uniapp前端,API接口需要寻找对应的。 创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福&#xff0…

在线预约订房酒店小程序源码系统 带完整的安装代码包以及=安装部署教程

传统的酒店预订方式往往依赖于电话、邮件或者到店咨询,这种方式不仅效率低下,而且容易造成信息不准确、沟通不畅等问题。随着智能手机的普及和移动互联网的发展,用户对于随时随地、方便快捷地进行酒店预订的需求日益增强。小编给大家分享一款…

ADOP带您了解高性能GPU服务器基础知识(下篇)

众所周知,在大型模型训练中,通常采用每台服务器配备多个GPU的集群架构。在上一篇文章《 》中,我们对GPU网络中的核心术语与概念进行了详尽介绍。本文将进一步深入探讨常见的GPU系统架构。 📈8台配备NVIDIA A100 GPU的节点/8台…

每日一题 — 二分查找

704. 二分查找 - 力扣(LeetCode) 朴素二分查找模板: while(.......){//防止溢出int mid left(right - left)/2;if(........){right mid-1;}else if(......){left mid1;}else{return mid;}} 代码: public int search(int[] num…

OpenHarmony鸿蒙南向开发案例:【智能加湿器】

样例简介 智能加湿器具有实时监控其所处环境温度、湿度,并通过数字管家设置日程,自动打开加湿器控制湿度功能。显示界面使用DevEco Studio 编写的js应用,具有很好的兼容和移植特性。硬件上采用了带有HDF框架的驱动模型,通过GPIO和…

Qt 跨平台开发的一丢丢总结

Qt 跨平台开发 文章目录 Qt 跨平台开发摘要第一 \ & /第二 神奇{不能换行显示第三 预处理宏 关键字: Qt、 win、 linux、 lib、 MSVC 摘要 最近一直在琢磨Qt跨平台开发的问题,缘由有以下几个, 首先第一个,我们目前开发…

关于ENVI遥感影像的hdr元数据信息设置与读取(C++ 、Python)

最近在做遥感影像高光谱纠正部分,要求输出ENVI格式(*.img),ENVI格式影像一般包括img文件(*.img)和hdr文件(*.hdr)两部分组成 C++ 基于GDAL获取ENVI格式影像元数据 C++常规做法使用GDAL获取元数据信息,然后再设置元数据,下面这段代码是基于GDAL的,前面初始化影像部…