asp网站防注入,广告设计与制作合同范本,农业咨询平台网站建设方案,怎么代理小程序游戏概念#xff1a;模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件#xff0c;通常需要把各个功能拆分、分装、然后组合起来。模块正式为了实现这种方式而诞生#xff0c;在浏览器JavaScript中#xff0c;脚本模块的拆分和组…概念模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件通常需要把各个功能拆分、分装、然后组合起来。模块正式为了实现这种方式而诞生在浏览器JavaScript中脚本模块的拆分和组合通常使用HTML的script标签来实现Node.js提供了require函数来调用其他模块而且模块都是基于文件机制非常简单模块和包的区别是透明的因此经常不作区分。一、模块 1.什么是模块
Ryan模块和文件是一一对应的。一个Node.js文件就是一个模块这个文件可能是JavaScript代码、JSON或者编译过的C/C扩展。var httprequire(http),其中http是Node.js的一个核心模块通过require函数获取这个模块然后使用其中的对象2.创建及加载模块 (1)创建模块
Node.js提供了exports和require两个对象其中exports是模块公开的接口require用于从外部获取一个模块的接口即获取模块的exports对象附件module.js和getModule.js的实现案例module.jsvar name;
exports.setNamefunction(thyName){namethyName;
}
exports.sayHellofunction(){console.log(helloname);
}getModule.jsvar myModulerequire(./module);
myModule.setName(marico);
myModule.sayHello(); (2)单次加载
上面的例子有点类似创建一个对象但实际上和对象又有本质的区别因为require不会重复加载模块也就是说无论调用多少次require获取的模块都是同一个getModule2.jsvar myModule1require(./module);
myModule1.setName(marico);
var myModule2require(./module);
myModule2.setName(yfc);
myModule1.sayHello(); (3)覆盖exports
有时我们知识想把一个对象封装到模块中例如定义模块singleobejct.js引入模块使用getSingleObject.js繁琐exports.hellohello;引入require(./singleobject).hello;简易module.exportshello;exports本身仅仅是一个普通的空对象即{}它是专门用来声明接口案例singleobject..jsfunction hello(){var name;this.setNamefunction(thyName){namethyName;}this.sayHellofunction(){console.log(hello name);}
}
//exports.hellohello;
module.exportshello; getSingleObject.jsvar hellorequire(./singleobject);
var henew hello();
he.setName(marico);
he.sayHello();
var he2new hello();
he2.setName(yfc);
he2.sayHello(); 二、创建包 1.包的概念
包是在模块基础上更深一步的抽象Node.js的包类似于C/C的函数库或者java的类库它讲某个独立的功能封装起来用于发布、更新、依赖管理的版本控制。开发了npm来解决包的发布和获取需求。2.如何创建一个包 CommonJS规范的包应该具备一下特征
package.json必须在包的顶层目录下二进制文件应该在bin目录下javaScript代码应该在lib目录下文档应该在doc目录下单元测试应该在test目录下Node.js对包要求并没有那么严格只要顶层目录下有package.json并符合基本规范即可(1)作为文件夹的模块
somepackage文件夹最简单的包就是一个作为文件夹的模块创建一个文件夹 somepackage里面有一个index.js里面提供一个方法sayHello()var somepackagerequire(./somepackage);somepackage.sayHello();我们使用这种方法可以把文件夹封装成一个模块即所谓的包。包通常是一些模块的集合在模块的基础上提供了更高层的抽象相当于提供了一些固定接口的函数库通过定制package.json我们可以创建更复杂、更完善、更符合规范的包用于发布。package.jsexports.sayfunction(){
console.log( test package!);
} test01.jsvar mymodulerequire(/源码/05/package/lib/package.js);
console.log(mymodule.say()); (2)package.json
前面的例子在somepackage文件夹下我们创建一个package.json的文件内容{main:./lib/index.js}Node.js在调用某个包时会检查包中package.json文件的main字段将其作为包的接口模块如果package.json或main字段不存在会常事寻找index.js或index.code作为包的接口package.json的规范属性
name包的名称必须是唯一description包的简要说明version符合语义化版本识别规范的版本字符串keywords关键字数据通常用于搜索maintainers维护者数组每个元素要包含name、email、web可选字段contributors贡献者数组格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素bugs提交bug的地址可以是网址或者电子邮件地址licenses许可证数组每个元素要包含type和url字段repositories仓库托管地址数组每个元素要包含type、url和path字段dependencies包的依赖一个关联数组由包名称和版本号组成。