美文网首页
模块化思想之commonJS

模块化思想之commonJS

作者: Mr无愧于心 | 来源:发表于2018-09-19 14:49 被阅读0次
  • AMD/CMD/ES6 MODULE都是模块设计思想
  • NODE本身是基于CommonJS模块规范设计的

commonJS思想介绍

  1. CommonJS规定,每一个JS都是一个单独的模块(模块是私有的:里面涉及的值和变量以及函数等都是私有的,和其它JS文件中的内容是不冲突的)
  2. CommonJS中可以允许模块中的方法互相的调用。
     B模块中想要调取A模块中的方法
       =>A导出
       =>B导入

导入导出

[导出]

  • CommonJS给每一个模块(每个JS)中都设置了内置的变量/属性/方法
  • module:代表当前这个模块[object]
  • module.exports:模块的这个“属性”是用来导出当前模块的属性和方法的 [object]
  • exports:是内置的一个“变量”,也是用来导出当前模块属性方法的,虽然和module.exports不就是一个东西,但是对应的值是同一个(module.exports=exports 值都是对象)
// exports.fn = fn;//=>把当前模块私有的函数放到EXPORTS导出对象中
(赋值给他的某一个属性),
这样在其它模块中,可以基于REQUIRE导入进来使用  <=> module.exports.fn=fn;

// exports={};//=>是无法导出内容的:默认和module.exports是同一个堆内存,
但是这种操作让exports指向新的堆内存,
而module.exports不受影响(require导入的是module.exports对应的堆内存,而不是exports的)

[导入]

  • require:CommonJS提供的内置变量,用来导入模块的(其实导入的就是module.exports暴露出来的东西);导入的值也是[object]类型的;
  require导入规则
     require('./xxx') 或者 ../xxx 再或者 /xxx,
     这种自己制定路径的模式,都是为了导入自定义的模块,
     换句话说,想要导入自定义的模块,必须加路径

     require('xxx') 首先到当前项目的node_modules中查找是否存在这个模块,
     不存在找node提供的内置模块(导入第三方或者内置的)

CommonJS特点(私有,缓存运行结果,按序加载,同步加载)

  1. 所有代码都运行在模块作用域,不会污染全局作用域(每一个模块都是私有的,包括里面所有的东西也都是私有的,不会和其它模块产生干扰)

  2. 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。(为了保证性能,减少模块代码重复执行的次数)

  3. 模块加载的顺序,按照其在代码中出现的顺序。CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

node中的commonJS

node 天生自带模块化:如果是一个js文件,那么会在当前js文件代码的最外层套一个自执行函数

(function (exports,module,require,__dirname,__filename) {//
     console.log(this);
    // exports : 导出(对象)
    // module : 模块(对象)
    // require : 导入(函数)
    // __dirname(当前文件父级文件的绝对路径)
    // __filename(当前文件的绝对路径)
    return  module.exports;
   /* let fs = require("fs");
    console.log(fs);*/
})();

相关文章

  • webpack基础

    模块化 CommonJS CommonJS是一种使用广泛的 JavaScript模块化规范,核心思想是通过 req...

  • 模块化思想之commonJS

    AMD/CMD/ES6 MODULE都是模块设计思想 NODE本身是基于CommonJS模块规范设计的 commo...

  • node学习2

    什么是CommonJs? CommonJs就是模块化的标准,nodejs就是CommonJs(模块化)的实现 No...

  • ES6模块化

    模块化技术有哪些:- CommonJS(nodejs)、ES6模块化、AMD、CMD等 CommonJS:Comm...

  • JS模块化

    模块化规范:CommonJS,AMD,CMD,UMD,ES6 Module CommonJS CommonJS是服...

  • 前端工程化的一些理解

    一、模块化 主要是js模块化,可以使用CommonJS、AMD、CMD等模块化规范,其中的区别是CommonJS对...

  • nodejs03-commonjs

    CommonJs CommonJs是模块化的标准,nodejs是模块化的实现 nodejs模块 核心模块(node...

  • 第一章:入门(深入浅出 Webpack 笔记)

    模块化 模块化是指把一个复杂的系统分解到多个模块以方便编码。 CommonJS 核心思想是通过 require 方...

  • 迷一样的前端字眼笔记

    1.CommonJS模块化规范 核心思想: 通过require方法同步加载依赖的其他模块通过module.expo...

  • CommonJS规范源码深入剖析

    CommonJS简介 CommonJS是NodeJS内置的模块化方案。 CommonJS基于文件系统,每一个文件都...

网友评论

      本文标题:模块化思想之commonJS

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