第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

babel 怎么編譯 ES6 模塊

標(biāo)簽:
前端工具

其实就一句话:babel 统一将 js 模块化语法转为 commonJS 风格。

什么是 commonJS 风格

// 导出语法
module.exports = {}
exports.obj = {}

// 引入语法
require()

require 方法返回的就是 exports 对象。比如 a.js 导出模块是 module.exports = { a: 1 },那么 require('a.js') 得到的就是 { a: 1 }

什么是 ES6 模块

// 导出的对象就是 { a }
// 只能用 import { a } 的形式引入
export { a }
import { a } from 'xxx'

// 导出的对象是 { default: a }
var a = {}
export default a
// import a 相当于 import { default as a }
import a from 'xxx'

babel 怎么转换 ES6 export

图片描述图片描述

babel 怎么转换 ES6 import

图片描述图片描述

重大变化之一

babel6 取消了对 export default 的充分支持,下图是 babel5 转化的结构,babel6 删掉了箭头所示的代码
图片描述

也就是说以前 export default 导出的模块,都必须用 import 语法或者 require().default 形式引入,不能单独用 require() 引入。

怎么才能让 require() 依然有效呢?办法是用 babel-plugin-add-module-exports,这个插件的原理很简单,就是补上箭头指向的那行代码。

为了迎合 ES6 趋势,有些脚手架在 babelrc 配置中将 modules 选项设为了 false:

"presets": [
    ["env", {
        "modules": false,
        "targets": {
            "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
        }
    }],
    "stage-2"
]

babel 文档 里该参数默认值是 commonJS,改成 false 意味着 babel 将不再对 ES6 语法进行编译,也就导致 require 一个 ES6 语法导出的模块或者 import 一个 commonJS 语法导出的模块会出问题。

解决方法最简单的当然是把这行配置删掉,还有一种办法是用插件 babel-plugin-transform-es2015-modules-commonjs,不过显得多此一举。

重大变化之二

vue-loader 13 之后,不管用什么语法导出,导出的都是 es 模块,相当于强制使用 export default。换句话说,不管导出语法长什么样,实际导出的 vue 模块都长这样:{ default: { /* options */ } }。具体参见:https://github.com/vuejs/vue-loader/releases/tag/v13.0.0

结论

如果用的是 babel5 和 vue-loader 13-,那么所有的导入导出语法都会充分的转换为 commonJS 风格,那么混搭的使用导入导出语法都没问题。

如果用的是 babel6 和 vue-loader 13+,那么凡是 vue 模块都必须用 import 语法或者 require().default 形式。

因为 .vue 文件是用 vue-loader 处理的,用 babel-plugin-add-module-exports 无济于事。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消