美文网首页
廖雪峰网站学习

廖雪峰网站学习

作者: Hathaway_桉 | 来源:发表于2017-06-28 14:03 被阅读0次

用vs.code调试js代码非常方便,node中的模块加载机制被称为CommonJS规范。

在这个规范下,每个.js文件都是一个模块,它们内部各自使用的变量名和函数名都互不冲突。

<b>结论</b>

要在模块中对外输出变量,用:

module.exports = variable;

输出的变量可以是任意对象、函数、数组等等。

要引入其他模块输出的对象,用:

var foo = require('other_module');

引入的对象具体是什么,取决于引入模块输出的对象。

<b>深入的了解模块原理:</b>
JavaScript语言本身并没有一种模块机制来保证不同模块可以使用相同的变量名。

那Node.js是如何实现这一点的?

其实要实现“模块”这个功能,并不需要语法层面的支持。Node.js也并不会增加任何JavaScript语法。实现“模块”功能的奥妙就在于JavaScript是一种函数式编程语言,它支持闭包。如果我们把一段JavaScript代码用一个函数包装起来,这段代码的所有“全局”变量就变成了函数内部的局部变量。

<b>模块的module.exports是怎么实现的那?</b>

这个也很容易实现,Node可以先准备一个对象module:

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

  module.exports = greet;
  // hello.js代码结束
  return module.exports;
};
var exported = load(module);
// 保存module:
save(module, exported);

可见,变量module是Node在加载js文件前准备的一个变量,并将其传入加载函数,我们在hello.js中可以直接使用变量module原因就在于它实际上是函数的一个参数:

module.exports = greet;

通过把参数module传递给load()函数,hello.js就顺利地把一个变量传递给了Node执行环境,Node会把module变量保存到某个地方。

由于Node保存了所有导入的module,当我们用require()获取module时,Node找到对应的module,把这个module的exports变量返回,这样,另一个模块就顺利拿到了模块的输出:

var greet = require('./hello');

强烈建议使用

module.exports = xxx

的方式来输出模块变量,这样,你只需要记忆一种方法。

相关文章

  • Python 资料

    学习python网站: 廖雪峰python教程

  • 廖雪峰网站学习

    用vs.code调试js代码非常方便,node中的模块加载机制被称为CommonJS规范。 在这个规范下,每个.j...

  • 2018-01-25 Git学习笔记

    学习廖雪峰的Git教程所记的笔记,Git教程 - 廖雪峰的官方网站https://www.liaoxuefeng....

  • Git其他命令

    推荐廖雪峰老师的官方网站 进行学习练习。

  • JavaScript | 浏览器

    Reference : JavaScript教程 - 廖雪峰的官方网站 浏览器 - 廖雪峰的官方网站 浏览器对象 ...

  • Git学习笔记

    Git学习教程,廖雪峰老师讲解的非常好,详细参见Git教程-廖雪峰的官方网站,本编文章主要是在学习Git时,出现的...

  • Python学习笔记(1)Python基础

    中文学习网站: 廖雪峰的官网网站https://www.liaoxuefeng.com/wiki/00143160...

  • Python学习笔记(2)OOP编程

    中文学习网站: 廖雪峰的官网网站https://www.liaoxuefeng.com/wiki/00143160...

  • Python学习笔记(3)调试测试

    中文学习网站: 廖雪峰的官网网站https://www.liaoxuefeng.com/wiki/00143160...

  • Git安装和使用

    该篇文章为学习廖雪峰git教程的总结,具体可移步廖雪峰老师git教程网站 Git介绍 Git是分布式版本控制系统。...

网友评论

      本文标题:廖雪峰网站学习

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