美文网首页
node.js之模块机制

node.js之模块机制

作者: gqs已经存在 | 来源:发表于2018-05-12 16:09 被阅读0次

什么是模块

Node.js的模块遵循Common.js的模块规范,包括模块引用,模块定义和模块标识。

模块引用

模块的引用是通过上下文提供的require 方法完成 如:

var module = require('module');

如此便完成了对一个模块的引用

模块的定义

模块定义也就是如果创建一个模块,在Node.js 中一个文件就是一个模块。每一个模块中有一个module对象,代表模块本身,在module对象中还有一个exports属性,exports是模块公开的接口,require方法返回的即为一个exports对象。我们可以通过log详细看下

// module.js

exports.name = 'this is my module';
console.log('下面为module对象:')
console.log(module);

console.log('通过require引入的模块对象:')
var module = require('./module');
console.log(module)

执行后log输出

下面为module对象:
Module {
  id: '.',
  exports: {},
  parent: null,
  filename: '/Users/gqs/blogs/app.js',
  loaded: false,
  children: [],
  paths: 
   [ '/Users/gqs/blogs/node_modules',
     '/Users/gqs/node_modules',
     '/Users/node_modules',
     '/node_modules' ] }
通过require引入的模块对象:
{ name: 'this is my module' }

模块标识

模块标识就是require方法中的参数。规定该标识必须是符合小驼峰命名的字符串,或者以.、..开头的相对路径,或者绝对路径,可以没有文件名。

模块特性

  • 单次加载
    加载模块和创建对象的区别是模块只会加载一次,也就是无论调用多少次require方法,返回的模块都同一个,或者都是同一个exports对象
var module1 = require('./module');
module1.name = "name1";
var module2= require('./module');
module2.name = 'name2';
console.log(module1 === module2);
console.log('Name is '+module1.name)

执行输出

true
Name is name2

第一次赋值被第二次赋值覆盖

  • 覆盖 exports
    exorts 只是一个普通对象,专门用来声明接口,所有如果我们只是想暴露一个对象,可以直接对其进行覆盖,如
// module.js
function Hello(){
    this.sayHello = function(name){
        console.log('hello...');
        
    };
}
modules.exports = Hello;
//app.js
var Hello = require('./module');

console.log(new Hello());
Hello { sayHello: [Function] }

看输出 确实是被被覆盖了

ok 以上就是对Node.js的简单介绍

参考书籍

  • 《Node.js开发指南》
  • 《深入浅出Node.js》

相关文章

  • Node.js 模块机制

    Node.js 模块机制 Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript...

  • 深入NodeJS的模块机制

    Node.js 模块的实现 之前在网上查阅了许多介绍 Node.js 的文章,可惜对于 Node.js 的模块机制...

  • 深入Node.js的模块机制

    1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...

  • 深入Node.js的模块机制(转)

    1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...

  • Node.js 的 events 模块

    Node.js 没有浏览器的事件冒泡、事件捕获机制。 events 模块是 Node.js 基础及重要的模块, 只...

  • node.js之模块机制

    什么是模块 Node.js的模块遵循Common.js的模块规范,包括模块引用,模块定义和模块标识。 模块引用 模...

  • Node.js模块以及模块加载机制

    Node.js中的模块 在Node.js中,以模块为单位划分功能,通过一个完整的模块加载机制使得开发人员可以将应用...

  • 2021-04-07each和foreach

    深入浅出 Node.js(三):深入 Node.js 的模块机制 https://www.infoq.cn/art...

  • Node.js EventEmitter类源码浅析

    写在最前 本次尝试浅析Node.js中的EventEmitter模块的事件机制,分析在Node.js中实现发布订阅...

  • nodejs基础三(模块与包管理工具)

    一.Node.js 的模块 与 Commonjs 规范 js的天生缺陷——缺少模块化管理机制·表现>> JS中容易...

网友评论

      本文标题:node.js之模块机制

      本文链接:https://www.haomeiwen.com/subject/rohhdftx.html