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