nodeJS基礎(chǔ)二 模塊

模塊

在nodeJS中一個(gè)文件就是一個(gè)模塊,這個(gè)模塊本質(zhì)就是一個(gè)函數(shù)

模塊化

CommonJs exports(導(dǎo)出) require(導(dǎo)入)
es6 export(導(dǎo)出) import(導(dǎo)入)
AMD define(導(dǎo)出) require(導(dǎo)入)
模塊的定義
module.exports,在module.exports對(duì)象上添加屬性導(dǎo)出值
exports,在exports對(duì)象上添加屬性導(dǎo)出值
exports對(duì)象和module.exports是同一個(gè)對(duì)象
exports對(duì)象添加屬性來導(dǎo)出值
module.exports對(duì)象可以賦值一個(gè)對(duì)象導(dǎo)出值
導(dǎo)出的始終是module.exports指向的對(duì)象

模塊引用

rquire("文件名"),執(zhí)行對(duì)應(yīng)的文件并返回該文件對(duì)象的module.exports對(duì)象

module.exports是什么

新建module_001.js

  console.log(module);

node輸出

  Module {
    id: '.',
    exports: {},
    parent: null,
    filename: 'F:\\work\\layUiDemo\\server\\module_001.js',
    loaded: false,
    children: [],
    paths:
     [ 'F:\\work\\layUiDemo\\server\\node_modules',
       'F:\\work\\layUiDemo\\node_modules',
       'F:\\work\\node_modules',
       'F:\\node_modules' ] }

可以看到module是一個(gè)對(duì)象,module里面有exports對(duì)象
那么module.exports 跟exports有什么關(guān)系呢?
修改module_001.js

  console.log(module.exports === exports); //輸出true  說明他們兩個(gè)指向同一個(gè)對(duì)象

module.exports 與 exports 的區(qū)別

新建module_001.js 和 module_002.js
module_001.js

  let str  = 'Hello';
  let obj = {
      name:'tom',
      age:'18'
  };
  let fn = ()=>{
      console.log('fn.........')
  }
  module.exports.str=str;
  exports.obj = obj;
  exports.fn = fn;

module_002.js

  const allObj = require('./module_001');
  console.log(allObj)

輸出

  { str: 'Hello',
    obj: { name: 'tom', age: '18' },
    fn: [Function: fn] }

前面我們說了module.exports 與exports 他們兩個(gè)指向同一個(gè)對(duì)象
現(xiàn)在我們改變module_001.js

  let str  = 'Hello';
  let obj = {
      name:'tom',
      age:'18'
  };
  let fn = ()=>{
      console.log('fn.........')
  }
  exports = {
      str,
      obj,
      fn
   }

輸出是空,我們把exports換成module.exports發(fā)現(xiàn)輸出就正常了。其原因在于,一開始module.exports 與 exports指向同一個(gè)對(duì)象,當(dāng)exports = {} 的時(shí)候 就改變了exports的指向。require() 方法返回的是module.exports

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 系列文章導(dǎo)航 模塊(一) CommonJs,AMD, CMD, UMD 本文參考阮一峰 ES6入門 Module的...
    合肥黑閱讀 6,356評(píng)論 0 4
  • 一.Node.js 的模塊 與 Commonjs 規(guī)范 js的天生缺陷——缺少模塊化管理機(jī)制·表現(xiàn)>> JS中容易...
    qqqc閱讀 679評(píng)論 0 0
  • 模塊通常是指編程語言所提供的代碼組織機(jī)制,利用此機(jī)制可將程序拆解為獨(dú)立且通用的代碼單元。所謂模塊化主要是解決代碼分...
    MapleLeafFall閱讀 1,257評(píng)論 0 0
  • 模塊 Node 有簡(jiǎn)單的模塊加載系統(tǒng)。在 Node 里,文件和模塊是一一對(duì)應(yīng)的。下面例子里,foo.js加載同一個(gè)...
    保川閱讀 691評(píng)論 0 0
  • 系列文章導(dǎo)航 模塊(二) es6 module typescript module 本文參考Javascript模...
    合肥黑閱讀 9,029評(píng)論 0 14

友情鏈接更多精彩內(nèi)容