这篇文章主要介绍“怎么理解Node.js中的包与NPM”,在日常操作中,相信很多人在怎么理解Node.js中的包与NPM问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解Node.js中的包与NPM”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
摘要:包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用。Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用。但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用所以在模块外,包和NPM是将模块联系起来的机制。包组织模块示意图CommonJS 的包规范定义其实也很简单,由包结构和包描述文件两部分组成。用于组织包中的各种文件,是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件。符合规范的包目录:package.json: 包描述文件bin: 用于存放可执行二进制文件的目录lib: 用于存放JavaScript代码的目录doc: 用于存放文档的目录test: 用于存放单元测试用例的代码NPM所有行为都与包描述文件的字段息息相关一些字段:name: 包名。 规范定义需要用小写的字母和数字组成,不允许出现空格。 包名必须是唯一的,以免对外公布时产生重名冲突description: 包简介version: 版本号,关于其介绍在《Node.js学习(一)——简介》也有提及keywords: 关键字数组, NPM中主要用来作分类搜索。maintainers: 包维护者列表。 每个维护者由name、email和web这3个属性组成。 NPM通过这个属性进行权限认证。格式:contributors: 贡献者列表,格式与维护者列表相同bugs: 一个可以反馈bug的网页地址或邮件地址licenses: 当前包所使用的许可证列表,表示包在哪些许可证下使用格式:repositories: 托管源代码的位置列表,表明可以通过哪些方式和地址访问包源代码。格式:dependencies: 使用当前包所需要依赖的包列表。 这个属性非常重要homepage: 当前包的网站地址os: 操作系统支持列表, 如果列表为空,则不对操作系统做任何假设cpi: CPU架构支持列表engine:支持的JavaScript引擎列表directories:包目录说明implements: 实施规范的列表。 标志当前包实现了CommonJS哪些规范scripts: 脚本说明对象。 主要用于被包管理器用来安装、编译、测试和卸载包格式:NPM与包规范区别在于多了四个字段:author: 包作者 :ok_man:bin: 一些包作者希望包可以作为命令行工具使用。main: 模块引入包时,会有限检查这个字段,并将其作为包中其余模块的入口模块。 如果不存在,require会查找包目录下的index.js、index.node、index.json作为默认入口devDependencies: 一些模块只在开发时需要依赖。devDependencies:开发环境使用dependencies:生产环境使用JavaScript在Node出现后,有一项优势 –> 一些模块可以在前后端实现共用。但是前后端上始终还是有一些差别的 :sweat_drops:前后端JavaScript分别搁置在HTPP的两端,扮演的角色并不同。浏览器端的JavaScript需要经历从同一个服务器端分发到多个客户端执行,瓶颈是带宽,从网络加载代码服务器端的JavaScript是相同代码需要多次执行,瓶颈是CPU和内存等资源,从磁盘中加载在前端JavaScript中,主要还是应用AMD规范。CommonJS并不完全适用于前端JavaScript,比如Node的模块引入基本是同步的,但是前端引入如果使用同步引入,UI在初始化过程中需要花费很多时间等待脚本加载完成。AMD规范是CommonJS规范的一个延伸,全称:Asynchronous Module Definition。是异步模块定义模块定义:define(id?,dependencies?, factory);id 是模块的名字,它是可选的参数。dependencies 指定了所要依赖的模块列表,它是一个数组,也是可选的参数AMD需要在声明模块时指定所有的依赖,通过形参传递依赖到模块内容中:与AMD规范相对的还有CMD规范,全称:CommonModule Definition。是公共模块定义这是由国内的玉伯(也是一位大佬)提出的模块定义:define(factory)CMD支持动态引入:在需要依赖模块时,随时调用require()免费云主机、域名引入即可CMD 推崇依赖就近; AMD 推崇依赖前置CMD 是延迟执行; AMD 是提前执行CMD性能好,因为只有用户需要的时候才执行; AMD用户体验好,因为没有延迟,依赖模块提前执行了AMD和CMD最大的区别是对依赖模块的执行时机处理不同创建一个hello方法,让hello方法能在不同运行环境中运行,兼容Node、AMD、CMD和常见浏览器匿名函数前加一个;是个好习惯 name是方法名,definition是方法体通过typeof检测环境是否为AMD或CMD还是Node环境可以将模块执行结果挂载在window变量中,这样可以直接调用到此,关于“怎么理解Node.js中的包与NPM”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云技术网站,小编会继续努力为大家带来更多实用的文章!
本篇内容介绍了“CSS中类选择器怎么显示”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 在 CSS 中,类决意器以一个点号透露表现: 在下面的例子中,所有领有 …