国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用 ES6 編寫(xiě) Webpack 的配置文件

Rocture / 1535人閱讀

摘要:在執(zhí)行時(shí)會(huì)先用把配置文件轉(zhuǎn)成代碼再繼續(xù)處理。只要你把配置文件命名成,就會(huì)用相應(yīng)的去轉(zhuǎn)換一遍配置文件。它沒(méi)改的文件名,但配置文件和各種腳本都是完全的語(yǔ)法。這是提供的一個(gè)命令行工具,你可以用它代替去執(zhí)行文件。總結(jié)得益于,幾乎已經(jīng)是現(xiàn)在的標(biāo)配了。

概述

我最近在整理一個(gè) Ionic + Webpack 的項(xiàng)目模板,因?yàn)轫?xiàng)目代碼都是 ES6 的,所以我也想在其他地方也用 ES6 。其中一個(gè)地方就是 webpack.config.js 。目前有三種方法可以做到這一點(diǎn),不過(guò)各有利弊。

方法 1:升級(jí)到 Node.js 4

Node.js 4 合并了 io.js ,所以自然帶有所有 io.js 的特性,其中就包括部分 ES6 特性的支持。不過(guò)目前的版本 (4.2.1) 只支持部分特性,尤其是以下幾個(gè)很常用的都不支持:

函數(shù)默認(rèn)值

解構(gòu)和其相關(guān)的所有功能

ES6 模塊

具體支持程度可看 這里 。Babel 達(dá)到了 71% ,Node.js 4 達(dá)到了 53% ,Node.js 5 也只達(dá)到了 59% 。真是不容樂(lè)觀。

總結(jié):這個(gè)方法適合依賴少數(shù) ES6 特性,又確定使用 Node.js 4 及以上版本的人,不能算是大眾方案。

方法 2:webpack.config.babel.js

這個(gè)最簡(jiǎn)單,把 webpack.config.js 改名成 webpack.config.babel.js 就行。一切命令照舊。Webpack 在執(zhí)行時(shí)會(huì)先用 Babel 把配置文件轉(zhuǎn)成 ES5 代碼再繼續(xù)處理。一切 Babel 支持的語(yǔ)言特性都可以用。

這是一個(gè) Webpack 支持,但文檔里完全沒(méi)有提到的特性 (應(yīng)該馬上就會(huì)加上)。只要你把配置文件命名成 webpack.config.[loader].js ,Webpack 就會(huì)用相應(yīng)的 loader 去轉(zhuǎn)換一遍配置文件。所以要使用這個(gè)方法,你需要安裝 babel-loaderbabel-core 兩個(gè)包。記住你不需要完整的 babel 包。

理論上這種做法支持任何 loader ,所以你也可以用 CoffeeScript 或者其他語(yǔ)言去寫(xiě),只要有相應(yīng)的 loader 就行。

這個(gè)方法還有個(gè)好處,如果你在 webpack.config.babel.jsimport 了其他文件,那個(gè)文件也會(huì)被 Babel 編譯。比如:

// webpack.config.babel.js

// 這個(gè)文件也可以用 ES6 寫(xiě)
import config from "./some-config"

export default {
  // webpack config
}

不過(guò),如果你打算自己寫(xiě)腳本去加載 Webpack 的配置,這個(gè)方法就不管用了。

總結(jié):這個(gè)方法適合那些不在乎 Node.js 版本,只使用 webpackwebpack-dev-server 命令,不打算自己寫(xiě)腳本或過(guò)多折騰,但想使用完整的 ES6 特性的人。

方法 3:用 babel-node

這是我在 這個(gè)問(wèn)題 中看到的。其中提問(wèn)者提到的 React Starter Kit 挺有意思。它沒(méi)改 webpack.config.js 的文件名,但配置文件和各種腳本都是完全的 ES6 語(yǔ)法。這是怎么做到的呢?

關(guān)鍵就在于 babel-node 。這是 Babel 提供的一個(gè)命令行工具,你可以用它代替 node 去執(zhí)行文件。文件會(huì)被 Babel 編譯后再交給 node 命令執(zhí)行。

讓我們看看 React Starter Kit 如何利用這一點(diǎn)的。首先它用 package.json 里定義的 scripts 來(lái)代替 webpack 命令。可以看到它完全使用了 babel-node 命令代替 node 。比如:

{
  "scripts": {
    "bundle": "babel-node tools/run bundle",
    ...
  }
}

這樣就可以用 npm run bundle 來(lái)執(zhí)行相應(yīng)的任務(wù)了。這個(gè)命令會(huì)會(huì)先調(diào)用 tools/run.js,然后調(diào)用 tools/bundle.js,然后加載 tools/webpack.config.js 。整個(gè)流程中的所有文件都是用 ES6 和 ES7 語(yǔ)法寫(xiě)的,非常整潔漂亮。

總結(jié):這個(gè)方法適合需要自己寫(xiě)腳本并且想用完整的 ES6 語(yǔ)法的人。不過(guò) babel-node 因?yàn)橐幾g,而且換成結(jié)果會(huì)存在內(nèi)存中,所以命令執(zhí)行時(shí)間會(huì)比單純使用 node 要長(zhǎng)(主要是啟動(dòng)時(shí)間)。這點(diǎn)就見(jiàn)仁見(jiàn)智了。記住不要在生產(chǎn)環(huán)境下用 babel-node

總結(jié)

得益于 Babel ,ES6 幾乎已經(jīng)是現(xiàn)在的標(biāo)配了。在不折騰的情況下用用 ES6 是大家都能接受的結(jié)果。所以我推薦大部分人用方法 2 。但如果需要寫(xiě)點(diǎn) npm run xxx 的腳本,難免又會(huì)覺(jué)得不能用 ES6 有點(diǎn)不一致。這種情況我覺(jué)得要么就都用 ES6 ,要么就干
脆不用。因?yàn)槲覀€(gè)人覺(jué)得一致性比用不用 ES6 更加重要。build 腳本勉強(qiáng)也算是后端的一部分,而我們不能強(qiáng)求所有后端代碼都寫(xiě)成 ES6 的(比如自己寫(xiě)個(gè) server)。

參考資料

Allow webpack.config.js to be written in ES6
ES6 Compatible Table
StackOverflow - How to use ES6 in Webpack config
React Starter Kit
Babel CLI

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86113.html

相關(guān)文章

  • webpack學(xué)習(xí)(二)—— 進(jìn)階

    摘要:上篇文章中簡(jiǎn)單介紹了的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)頁(yè)面一個(gè)頁(yè)面兩個(gè)文件。本文將介紹如何使用對(duì)具有較為規(guī)范的結(jié)構(gòu)的項(xiàng)目進(jìn)行構(gòu)建。這說(shuō)明監(jiān)測(cè)到了文件的變化,但是我們的加載的文件并沒(méi)有變。后續(xù)還會(huì)更深入地學(xué)習(xí),希望和大家一同進(jìn)步。 上篇文章中簡(jiǎn)單介紹了webpack的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)html頁(yè)面、一個(gè)css頁(yè)面、兩個(gè)js文件。本文將介紹如何使用webpac...

    singerye 評(píng)論0 收藏0
  • ES6編寫(xiě)AngularJS程序是怎樣一種體驗(yàn)

    摘要:不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。命令會(huì)用這個(gè)配置,生成的結(jié)果都會(huì)給文件名加,文件也會(huì)壓縮。可用工具介紹啟動(dòng)調(diào)試服務(wù)器,使用作為配置,不直接生成物理文件,直接內(nèi)存級(jí)別響應(yīng)調(diào)試服務(wù)器資源請(qǐng)求。 AngularJS不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。有人稱之為MVWhatever框架,意思是使用AngularJS,你可以參考任意范式進(jìn)行應(yīng)用開(kāi)發(fā),無(wú)論是MVC、還是MVVVM都信手拈來(lái)...

    lastSeries 評(píng)論0 收藏0
  • webpack+babel+react練習(xí)流程記錄

    摘要:簡(jiǎn)介來(lái)構(gòu)建用戶界面的庫(kù),不是框架關(guān)注于層虛擬單向數(shù)據(jù)流這些概念如何使用下載文件也可以使用,需要用到的模塊介紹是編寫(xiě)組件的一種語(yǔ)法規(guī)范,可以看為是的擴(kuò)展,它支持將和混寫(xiě)在一起,最后使用編譯為常規(guī)的,方便瀏覽器解析編寫(xiě)第一個(gè)例子使用編寫(xiě)組件 react簡(jiǎn)介 來(lái)構(gòu)建用戶界面的庫(kù),不是框架 關(guān)注于view層 虛擬DOM 單向數(shù)據(jù)流 JSX這些概念 如何使用react 下載文件 rea...

    DDreach 評(píng)論0 收藏0
  • webpack實(shí)戰(zhàn)

    摘要:和類似的預(yù)處理器還有等。的用處非常多,包括給自動(dòng)加前綴使用下一代語(yǔ)法等,目前越來(lái)越多的人開(kāi)始用它,它很可能會(huì)成為預(yù)處理器的最終贏家。 webpack實(shí)戰(zhàn) 查看所有文檔頁(yè)面:全棧開(kāi)發(fā),獲取更多信息。快馬加鞭,加班加點(diǎn),終于把這個(gè)文檔整理出來(lái)了,順便深入地學(xué)習(xí)一番,鞏固知識(shí),就是太累人,影響睡眠時(shí)間和質(zhì)量。極客就是想要把事情做到極致,開(kāi)始了就必須到達(dá)終點(diǎn)。 原文鏈接:webpack實(shí)戰(zhàn),原...

    cyrils 評(píng)論0 收藏0
  • webpack4 系列教程(二): 編譯 ES6

    摘要:今天介紹怎么編譯的各種函數(shù)和語(yǔ)法。對(duì)于相關(guān)的匹配規(guī)則,除了匹配結(jié)尾的文件,還應(yīng)該去除文件夾下的第三庫(kù)的文件發(fā)布前已經(jīng)被處理好了。它需要在我們項(xiàng)目的入口文件中被引入,或者在中配置。個(gè)人網(wǎng)站原文鏈接系列教程二編譯 今天介紹webpack怎么編譯ES6的各種函數(shù)和語(yǔ)法。敲黑板:這是webpack4版本哦, 有一些不同于webpack3的地方。 >>> 本節(jié)課源碼 >>> 所有課程源碼 1....

    graf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Rocture

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<