nodejs之node-modules理解
来源:互联网 发布:apache超时时间设置 编辑:程序博客网 时间:2024/06/01 19:16
关于NPM:
npm 是 nodejs 的包管理和分发工具。它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过npm 管理你分享的代码也很方便快捷和简单。
Node.js 和 npm 对使用 Angular 和其他平台进行现代网络开发是至关重要的。 Node驱动客户端开发和构建工具。
1.什么是模块(modules)?
test.js
var Student=function(){ var name=''; this.setName=function(n){ name=n; }; this.printName=function(){ console.log(name) ; };};module.exports=Student;
var Student=require('./test');
很神奇的样子,不是说好的exports是模块公开的接口嘛,那么module.exports是什么东西?
module.exports与exports
事实的情况是酱紫的,其实module.exports才是模块公开的接口,每个模块都会自动创建一个module对象,对象有一个modules的属性,初始值是个空对象{},module的公开接口就是这个属性——module.exports。既然如此那和exports对象有毛线关系啊!为什么我们也可以通过exports对象来公开接口呢?
为了方便,模块中会有一个exports对象,和module.exports指向同一个变量,所以我们修改exports对象的时候也会修改module.exports对象,这样我们就明白网上盛传的module.exports对象不为空的时候exports对象就自动忽略是怎么回事儿了,因为module.exports通过赋值方式已经和exports对象指向的变量不同了,exports对象怎么改和module.exports对象没关系了。
require搜索module方式
node.js中模块有两种类型:核心模块和文件模块,核心模块直接使用名称获取,比如最长用的http模块
var http=require('http');
在上面例子中我们使用了相对路径 './test'来获取自定义文件模块,那么node.js有几种搜索加载模块方式呢?
- 核心模块优先级最高,直接使用名字加载,在有命名冲突的时候首先加载核心模块
- 文件模块只能按照路径加载(可以省略默认的.js拓展名,不是的话需要显示声明书写)
- 绝对路径
- 相对路径
- nodejs之node-modules理解
- Node.js之Modules
- [NodeJs]Node Packaged Modules(NPM)
- node.js Modules
- Node.js Modules 模块
- nodejs小记之简单的node服务器
- nodejs调试之使用node-inspector
- 【nodejs --学习01】: node之child_process
- nodejs之Generator理解笔记
- node.js模块(Modules)
- 理解CSS Modules
- 在node-webkit中使用node modules
- node.js学习认识五:Nodejs初阶之express
- 一起读nodejs(三)----模块(Modules)
- node-inspector 调试nodejs
- nodejs模块 node-odata
- NodeJS调试 -- node-inspector
- [node]nodejs snmp测试
- padding内边距
- 5.从尾到头打印链表
- for me
- 整理
- 英文面试问答
- nodejs之node-modules理解
- 基于socket、数据库和java组件实现qq基本通信
- Karma和Jasmine-单元测试
- poj 3071 Football
- lnmp开发环境支持pathinfo
- 你真的会用Gson吗?Gson使用指南(一)
- git和gerrit
- 面试软件工程师非专业问题
- WEB前端面试问题汇总2