美文网首页
node模块

node模块

作者: 佐伊zero | 来源:发表于2018-05-29 16:36 被阅读0次

在node中 一个 .js文件就称之为一个模块
使用模块的好处:
1.提高代码可维护性
2.多个地方调用
3.避免函数名和变量冲突

模块名字就是一个文件名
例如 hello.js,代码如下:
.............................................................
var s = 'hello';
function greet (name) {
console.log(s+',' + name+'!')
}
module.exports = greeet;
...............................................................
最后一行语句是,将函数greet作为模块的输出暴露出去,这样其他模块就可以使用greet函数啦
ok!在main.js中使用hello模块的greet函数:
.................................................................
var greet = require('./hello');
var s = 'liao'
greet(s); // hello , liao
.................................................................
main.js中的greet变量就是hello模块导出的greet函数

类似这种加载机制被称为CommonJS规范, 在这个规范下,每一个.js文件都是一个模块。
一个模块想要对外暴露变量(函数也是变量),可以用module.exports = variable; 一个模块要引用其他模块暴露的变量,用 var ref = require('module_name'),就可以拿到引用模块的变量。
注意: module.exports = variable 输出的变量可以是任意对象、函数、数组等

模块原理:

js语言本身没有模块机制保证不同模块使用相同的变量,nodejs如何实现的呢?

js是一种函数式编程语言,支持闭包,如果把一段js代码用一个函数包装起来,这段代码的所有全局 变量就变成了函数内部的局部变量
hello.js代码是这样的
.............................................................
var s = 'hello';
var name = 'world';
console.log(s + ' ' + name + '!')
...............................................................
node加载hello.js后,它把代码包装成这样执行:
...................................................................
(function(){
var s = 'hello';
var name = 'world';
console.log(s + ' ' + name + '!')
})()
...................................................................
以上就实现了模块的隔离

如何实现模块的输出呢 module.exports?

// 准备module对象
var module = {
  id: 'hello',
  exports: {}
};
var load = function () {
  // 读取的hello.js代码:
  function greet (name) {
    console.log('hello', + name + '!'); 
  }
  module.exports = greets;
  return module.exports;
};
var exported = load(module);
// 保存,module
save(module, exported);

相关文章

  • 01-Node 基础使用

    Node 基础使用Node 介绍Node 模块化开发模块成员的导出模块成员的导入Node 系统模块 path 和 ...

  • node模块载入机制

    node内模块以及载入顺序为: 内置模块 文件模块 文件目录模块 node_modules模块 内置模块 http...

  • Koa系列1:Koa中使用mysql模块操作数据库

    安装 node.js的mysql模块 1.模块介绍 mysql模块是node操作MySQL的引擎,可以在node....

  • Node.js 核心模块概述

    模块加载原理与加载方式 Node 中的模块:核心模块/原生模块:Node提供的模块。文件模块:用户编写的模块。 N...

  • 2018-08-20第五天课

    内置模块 => 直接使用 Node 提供好的核心模块 Event 事件模块事件模块是整个 Node.js ...

  • 关于node.js一些模块的记录「FS模块」

    目录 Node.JS教程 FS模块 Path模块 FS模块 Path模块 Node.js path 模块提供了一些...

  • 04-文件读写

    fs模块---》操作文件---》io----》node的特长 fs模块是node非常重要的模块,能体现出node的...

  • node工具模块

    Node.js工具模块node工具模块分为OS,Path, Net, DNS, Domain模块 OS 字节顺序 ...

  • Node.js基础-模块

    Node中的JavaScript ECMAScript 核心模块 第三方模块 用户自定义模块 核心模块 Node为...

  • Node模块原理0926

    Node模块原理 1.node模块原理分析 js代码 2.node模块加载分析(多看几遍视频) 3.自己实现一下(...

网友评论

      本文标题:node模块

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