Node.js中的模块系统介绍

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

一、exports引入模块

模块的创建

首先,我们在项目中创建hello.js,代码如下:

exports.world = function() {
  console.log('Hello World');
}
exports.hi = function() {
  console.log('hi,nodejs');
}

hello.js通过exports将world和hi作为模块的访问接口,可以提供给外部加载调用。

模块的引入

在 Node.js 中,引入一个模块非常简单,如下我们创建一个 main.js 文件并引入 hello 模块,代码如下:

var hello = require('./hello');
hello.world();
hello.hi();

以上实例中,代码 require('./hello') 引入了当前目录下的 hello.js 文件(./ 为当前目录,node.js 默认后缀为js)。

Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。

二、module.exports引入模块

模块的创建

如果将整个对象作为访问接口,我们在项目中创建hello.js,代码如下:

module.exports = function Hello() {
    var name;
    this.setName = function(theName) {
    	name = theName;
    };
    this.sayHello = function() {
    	console.log('Hello ' + name);
    };
}

function Hello() {
	var name;
    this.setName = function(theName) {
        name = theName;
    };
    this.sayHello = function() {
        console.log('Hello ' + name);
    };
}
module.exports = Hello;

hello.js通过module.exports将Hello对象作为模块的访问接口,可以提供给外部加载调用。

模块的引入

在 Node.js 中,引入一个模块非常简单,如下我们创建一个 main.js 文件并引入 hello 模块,代码如下:

var Hello = require('./hello');
hello = new Hello();
hello.setName('刘德华');
hello.sayHello();

exports返回模块函数,而module.exports返回模块本身。

exports 和 module.exports 的使用

(1)如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用module.exports。

(2)不建议同时使用 exports 和 module.exports,如果先使用 exports 对外暴露属性或方法,再使用module.exports 暴露对象,会使得 exports 上暴露的属性或者方法失效。

到此这篇关于Node.js模块系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Node.js入门笔记 之async模块

    目录 前言 async series parallel waterfall map 前言 前面我们介绍了异步模块的CPS解决嵌套回调的方法,但是随着业务的推进,node的更新方法也越来越快,对于异步的处理会有更多的新的方法来解决,最常见的当然是async模块来解决异步请求,这一节就来记录一下async模块的应用,对异步的处理更进一步台阶 async async不同于ES2017的新特性,这里的async表示的是node的第三方模块,也是一个比较出名的第三方模块,为了解决异步嵌套的回调地狱的问题,

  • Node.js基础模块babel使用详解

    目录 安装配置 使用babel 实际例子 类的转化 babel-polyfill 前言: 由于ES6到ES7增加了很多新的语法,新特性的出现使得大家都希望通过新语法来提升自身的开发效率,但在之前的最新的node可能也没有百分之百的支持ES2017的新特性,而且开发者在开发环境和生产环境中的版本一般是不同的,所以新特性的代码可能不能完美的运行在线上环境中,为了解决难题,babel提供一系列的api来将新特性的语法转化成低版本环境中能够运行的代码 安装配置 babel是由一系列的组件构成,所以我们在

  • node.js-fs文件系统模块这是你知道吗

    目录 1.什么是fs文件系统模块 2.读取指定文件的内容 1.fs.readFile()的语法格式 2.fs.readFile()读取文件内容 3.判断文件是否读取成功 3.向指定文件写入内容 1.fs.writeFile()的语法格式 2.fs.writeFile()写入文件 3.fs.writeFile()判断写入是否成功 4.写入文件和读取文件综合应用 5.fs模块-路径动态拼接问题 总结 1.什么是fs文件系统模块 [解释]: fs文件系统模块是Node.js官方提供的,用来操作文件的模

  • Node.js的模块化机制和Buffer对象详解

    目录 一.Node.js的模块化机制 1.什么是CommonJS模块规范 2.CommonJS模块规范化的内容 3.每个导出的模块都有一个moudle对象,该对象包含的属性有: 4.使用require导入模块 二.Buffer对象 1.用来弥补JavaScript在二进制数据处理上不足. 2.Buffer是一个构造函数 3.Buffer的基本操作: 4.Buffer类: 总结 一.Node.js的模块化机制 Node应用是由模块组成的,Node遵循了CommonJS的模块规范,来隔离每个模块的作

  • node.js+postman+mongodb搭建测试注册接口的实现

    目录 准备工作 下载安装Postman mongodb连接串配置 GET请求测试 注册接口搭建 创建User数据模型 使用body-parser中间件 POST请求测试 使用User数据模型 使用gravatar处理头像 准备工作 申请一个免费的MongoDB 到https://www.mlab.com注册申请一个500M的MongoDB数据库.登录后手动在创建Databases下的Collections中手动创建一个数据库node_app. 在个人首页点击Connect获取node.js连接M

  • Node.js中readline模块实现终端输入

    目录 1概述 2readline的使用 3示例1:输入输出 4示例2:模拟命令行的输入输出 1 概述 readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流.使用require("readline")可以引用模块. 使用readline步骤:1.引入:require('readline')2.创建readline对象(接口)3.调用接口的相关方法4.监听和处理readline事件 示例代码: // 引入readline模块 cons

  • Node.js安装、环境变量配置、报错解决方法

    目录 1.下载Node.js 2.安装Node.js 3.验证Node.js 4.Node.js环境配置 5. Node.js测试 6. 补充 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台. Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好. 1.下载Node.js 下载地

  • Node.js基础入门之path模块,url模块,http模块使用详解

    目录 path模块 1. path模块示例 2. path模块其他方法 url模块 1. 旧的解析方法 2. 新的解析方法 http模块 1. 什么是HTTP协议? 2. HTTP协议约束的细节 3. HTTP请求响应过程 4. http模块get方法 经过前面四天的学习,对Node.js已经有了一个基础的认识,今天继续学习Node.js网络通信编程相关内容,并稍加整理加以分享,如有不足之处,还请指正. path模块 Node.js中,提供了一个path模块,在这个模块中,提供了许多实用的,可被

  • Node.js中的模块系统介绍

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 一.exports引入模块 模块的创建 首先,我们在项目中创建hello.js,代码如下: exports.world = function() { console.log('Hello World'); } exp

  • node.js中http模块和url模块的简单介绍

    前言 本文主要给大家介绍了关于node.js中http模块与url模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务器与http客户端. 1.引包 const http = require('http'); 2.创建http服务器 var server = http.createServer((req,res)=>{ }); 使用http的.createServer()方法可以

  • node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require("ws"); // 启动基于websocket的服务器,监听我们的客户端接入进来. var server = new ws.Server({ host: "127.0.0.1", port: 6080, }); // 监听接入进来的客户端事件 function webs

  • node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了 var express = require("express"); var path = require("path"); var app = express(); //目录 (当前目录下的www_root目录) app.use(expre

  • 详解Node.js中path模块的resolve()和join()方法的区别

    关于Node.js中path模块的resolve()和join()方法的比较,对照着总结看例子差不多以后在写模块的时候思路就能很清晰了 resolve 作用:path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径. 语法:path.resolve([...paths]) 说明: ...paths <string> 一个路径或路径片段的序列 如果没有传入 path 片段,或者path 片段长度为零(空字符),则 path.resolve() 会返回当前工作目录的绝对路径(相当

  • node.js中module模块的功能理解与用法实例分析

    本文实例讲述了node.js中module模块的功能理解与用法.分享给大家供大家参考,具体如下: node.js中使用CommonJS规范实现模块功能,一个单独的文件就是一个单独的模块.通过require方法实现模块间的依赖管理. 通过require加载模块,是同步操作. 加载流程如下: 1.找到需要加载的模块文件. 2.判断是否缓存过,如果没有,则读取模块文件的内容. 3.把读取到的内容,封装在一个函数里运行. (function (exports, require, module, __fi

  • 谈谈node.js中的模块系统

    Node.js 的模块 JavaScript 做为一门为网页添加交互功能的简单脚本语言问世,在诞生时并不包含模块系统,随着 JavaScript 解决问题越来越复杂,把所有代码写在一个文件内,用 function 区分功能单元已经不能支撑复杂应用开发了,ES6 带来了大部分高级语言都有的 class 和 module,方便开发者组织代码 import _ from 'lodash'; class Fun {} export default Fun; 上面三行代码展示了一个模块系统最重要的两个要素

  • node.js中Util模块作用教程示例详解

    目录 从类型判断说起 严格相等 Error First & Promise 调试与输出 从类型判断说起 在 JavaScript 中,进行变量的类型校验是一个非常令人头疼的事,如果只是简单的使用 typeof 会到各种各样的问题. 举几个简单的: console.log(typeof null) // 'object' console.log(typeof new Array) // 'object' console.log(typeof new String) // 'object' 后来,大

  • Node.js中多进程模块Cluster的介绍与使用

    前言 我们都知道nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的.Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟.通过事件注册.异步函数,开发人员可以提高资源的利用率,性能也会改善.既然Node.js采用单进程.单线程模式,那么在如今多核硬件流行的环境中,单核性能出色的Nodejs如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Nodejs进程,利用某些通信机制来协调各项任务.目前,已

随机推荐