日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

module.exports 和 export default

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 module.exports 和 export default 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CommonJS模塊規范和ES6模塊規范完全是兩種不同的概念

CommonJS模塊規范

Node應用由模塊組成,采用CommonJS模塊規范。

根據這個規范,每個文件就是一個模塊,有自己的作用域。在一個文件里面定義的變量、函數、類,都是私有的,對其他文件不可見。

CommonJS規范規定,每個模塊內部,module變量代表當前模塊。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口。加載某個模塊,其實是加載該模塊的module.exports屬性。

var x = 5;
var addX = function (value) {return value + x;
};
module.exports.x = x;
module.exports.addX = addX;

上面代碼通過module.exports輸出變量x和函數addX。

require方法用于加載模塊。

var example = require('./example.js');console.log(example.x); // 5
console.log(example.addX(1)); // 6

exports 與 module.exports

為了方便,Node為每個模塊提供一個exports變量,指向module.exports。這等同在每個模塊頭部,有一行這樣的命令。

var exports = module.exports;

于是我們可以直接在 exports 對象上添加方法,表示對外輸出的接口,如同在module.exports上添加一樣。注意,不能直接將exports變量指向一個值,因為這樣等于切斷了exports與module.exports的聯系。

?

ES6模塊規范

不同于CommonJS,ES6使用 export 和 import 來導出、導入模塊。

// profile.js
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;export {firstName, lastName, year};

需要特別注意的是,export命令規定的是對外的接口,必須與模塊內部的變量建立一一對應關系。

// 寫法一
export var m = 1;// 寫法二
var m = 1;
export {m};// 寫法三
var n = 1;
export {n as m};

export default 命令

使用export default命令,為模塊指定默認輸出。

// export-default.js
export default function () {console.log('foo');
}

今天現在項目中遇到的一個問題,報錯信息是

Uncaught Error: Minified React error #130;

檢查之后發現使用的是module.exports,而項目使用的是ES6的語法,所以在第一次的時候總會報錯,刷新一下就可以了,第一次的時候語法轉換失敗了。后面換成了export default 就不會出現這個問題了。

相關鏈接:
CommonJS規范,http://javascript.ruanyifeng.com/nodejs/module.html
ES6 Module 的語法,http://es6.ruanyifeng.com/#docs/module

轉載于:https://www.cnblogs.com/gwf93/p/10278771.html

總結

以上是生活随笔為你收集整理的module.exports 和 export default的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。