Node.js模块系统
Node.js模块系统
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
创建模块
在 Node.js 中,创建一个模块非常简单,如下我们创建一个 main.js 文件,代码如下:
var hello = require('./hello'); hello.world();
以上实例中,代码 require('./hello') 引入了当前目录下的 hello.js 文件(./ 为当前目录,node.js 默认后缀为 js)。
Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
接下来我们就来创建 hello.js 文件,代码如下:
exports.world = function() { console.log('Hello World'); }
将对象封装到模块中:
//hello.js function Hello() { var name; this.setName = function(thyName) { name = thyName; }; this.sayHello = function() { console.log('Hello ' + name); }; }; module.exports = Hello;
这样就可以直接获取到对象:
//main.js var Hello = require('./hello'); hello = new Hello(); hello.setName('BYVoid'); hello.sayHello();
模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。
Node.js 中自带了一个叫做 http 的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。
从文件模块缓存中加载
尽管原生模块与文件模块的优先级不同,但是都会优先从文件模块的缓存中加载已经存在的模块。
从原生模块加载
原生模块的优先级仅次于文件模块缓存的优先级。require 方法在解析文件名之后,优先检查模块是否在原生模块列表中。以http模块为例,尽管在目录下存在一个 http/http.js/http.node/http.json 文件,require("http") 都不会从这些文件中加载,而是从原生模块中加载。
原生模块也有一个缓存区,同样也是优先从缓存区加载。如果缓存区没有被加载过,则调用原生模块的加载方式进行加载和执行。
从文件加载
当文件模块缓存中不存在,而且不是原生模块的时候,Node.js 会解析 require 方法传入的参数,并从文件系统中加载实际的文件。
摘自:http://www.runoob.com/nodejs/nodejs-module-system.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Golang学习笔记-IDE安装指南
引言 上篇Golang学习笔记-环境搭建指南已经讲解了如何搭建Golang开发环境,并写了一个Go程序【Hello,world】,但是写代码没有一个好用的IDE,没有语法高亮,自动补全,格式调整,查找函数等功能,想必也会令大家抓狂吧,笔者以前是做Java和.Net开发的,经常用的IDE有Eclipse、IntelliJ IDEA和Visual Studio,其中Eclipse和IntelliJ IDEA能安装很多插件,自然想到是否能在Eclipse和IntelliJ IDEA上安装支持Go语言开发的插件,搜一下插件还真有,废话不多说,直接进入IDE安装过程吧。 IntelliJ IDEA安装Go语言插件 首先你的安装好IntelliJ IDEA,具体安装过程这里不表,不懂请百度,笔者的IDEA版本是2017.1.5 IDEA Version 点击【File】-【Settings】 menu 选择【Plugins】-【Install JetBrains plugin…】 install plugins 输入【go】,选择【Go Languages】,然后点击【Install】,需...
- 下一篇
Java 集合
java集合 fail-fast机制 在java集合类中,使用modCount来检查数组的状态. 当在迭代集合的时候,(通常会实现 iterator()方法来获取迭代对象,或者 foreach), 集合里面的数据,在其他地方被修改了,这个时候 modCount就会被修改,与迭代过程的modCount不一致.将抛出ConcurrentModificationException异常,这个过程就叫 fail-fast List 篇 主要介绍 ArrayList,Vector和LinkedList,CopyOnWriteArrayList ArrayList 是一个数组长度可自增长的线程不安全的列表.内部使用数组实现. Object[] elementData. 默认的长度为 10. fail-fast 自动扩容(每次扩容为原来的1.5倍) 线程不安全 使用连续控件存储 继承自 List,RandomAccess等. 允许添加 null值 时间复杂度 : 根据索引查询,复杂度为 O(1). 根据元素查询,复杂度为 O(N). 插入和删除,如果在列首复杂度为 O(N);在列尾复杂度为 O(1);...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果