NodeJs的包
来源:互联网 发布:测试耳朵听力软件 编辑:程序博客网 时间:2024/05/22 14:15
1.创建以及加载模块
1.创建模块
在Node.js中,创建一个模块非常简单,因为一个文件就是一个模块。
//module.jsvar name;exports.setName=function(thyName){ name=thyName;};exports.setHello=function(){ console.log('Hello '+name);};
//getmodule.js var myModule=require('./module') myModule.setName("BYVoid"); myModule.sayHello();
module.js通过exports对象把setName和sayHello作为模块的访问接口,在getmodule.js中通过require(‘./module’)加载这个模块,然后就可以访问module.js中exports对象的成员函数
单次加载
require不会重复加载模块
无论调用多少次require,获得的模块都是同一个
var hello1=require('./module');hello1.setName('BYVoid');var hello2=require('./module');hello2.setName('BYVoid 2');hello1.sayHello();
运行结果是Hello BYVoid2,因为hello1和hello2指向的是同一个实例。
覆盖exports
有时候我们希望把一个对象封装到模块中
//singleobject.jsfunction Hello(){ var name; this.setName=function(thyName){ name=thyName; }; this.setHello=function(){ console.log('Hello'+name); };}exports.Hello=Hello;
我们需要在其他文件中require(‘./singleobject’.Hello)来获取Hello对象。
如果是module.exports=Hello;就可以直接获得这个对象。
//gethello.jsvar Hello=require('./hello');hello =new Hello();hello.setName('BYVoid');hello.sayHello();
唯一变化是使用module.exports=Hello代替了exports.Hello=Hello。在外部引用该模块时,其接口对象就是要输出Hello对象本身,而不是exports。
2.创建包
包是在模块基础上更深一步的抽象。Node.js的包类似于C/C++的函数库或者Java/.Net的类库。它将某个独立功能封装起来,用于发布、更新、依赖管理和版本控制。
- CommonJs规范
- package.json位于顶层目录下
- 二进制文件在bin目录下
- Js代码在lib目录下
- 文档在doc目录下
- 单元测试在test目录下
2.1作为文件夹的模块
模块与文件是一一对应的。文件不仅可以是Js代码或者二进制代码,还可以是一个文件夹。最简单的包就是一个作为文件夹的模块。
如
//somepackage/index.jsexports.hello=function () { console.log('Hello');}
//getpackage.js var someoackage=require('./somepackage'); someoackage.hello();
node getpackage.js //Hello
把文件夹封装为一个模块,即所谓的包。包通常是一些模块的集合,在模块基础上提供了更高层的抽象,相当于提供了一些固定接口的函数库。通过定制package.json我们可以创建更复杂、更完善、更符合规范的包用于发布。
package.json
node.js在调用某个包的时候,会检查包中package.json文件的main字段,将其作为包的接口模块,如果package.json或main不存在,则以index.js或者index.node作为包的接口。
如“dependencies”:{ "webkit":"1.2" "ssl":{ "gnutls":["1.0","2.0"], "openssl":"0.9.8" }}
本地模式和全局模式
npm默认在http://npmjs.org搜索或者下载包,安装到当前目录的node_modules子目录下。
本地模式下不会注册PATH环境变量,如安装supervisor是为了在命令行中直接使用它。npm本地模式仅仅是把包安装到node_modules下,其中bin目录没有包含在PATH环境变量中。全局安装下,package.json文件中bin字段包含的 文件会被链接到/usr/local/bin
创建全局链接
全局安装的包不能直接通过require使用,但是通过npm link命令可以打破这一限制。
如我们npm install -g express 全局安装了express,这时候在工程的目录下运行命令:
npm link express
会发现./node_module/express->/usr/local/lib/node_modules/express
- nodeJs包的概念
- NodeJs的包
- nodeJs的包管理工具npm
- NodeJs的模块和包
- 一组惊艳的NodeJs包
- 一组惊艳的NodeJs包
- nodejs中net包的使用
- Windows Nodejs全局包的使用
- 打包发布自己的nodejs包
- CommonJS包规范与NodeJS的包管理工具NPM
- nodejs包结构
- NodeJs学习四:包
- NPM--nodejs包管理
- nodejs模块与包
- nodejs包管理器npm
- NodeJS调用jar包
- nodejs extend包
- nodejs安装mysql包
- PAT 乙级练习题1017. A除以B (20)
- 字符串排列,for循环嵌套递归
- Leetcode Algorithms : 2. Add Two Numbers
- [cocos2d-x]registerScriptHandler和registerScriptTapHandler区别
- Hive的安装步骤
- NodeJs的包
- [java后端]线下笔试及面试复习资料[一]
- LeetCode:M-5. Longest Palindromic Substring
- couresra:Learning How to Learn 学习笔记
- javaBean内省机制
- numpy中的dot、outer、multiply和*的用法
- 滴滴打车2017年秋招网申笔试题-丑数
- 开始写博客了
- 安装rabbitMQ