js模塊化之es6

看了上一篇的都知道黎棠,amd的操作還是很繁瑣的相比較commonjs而言。當(dāng)今主流的還是今天講的es6。

目錄結(jié)構(gòu)

image.png

創(chuàng)建package.json

當(dāng)然可以使用npm init創(chuàng)建她混,十分方便视搏。

{
  "name": "es6-babel-browserify",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

安裝babel-cli,babel-preset-es2015 和browserify

babel-cli

command line interface 伟墙。大多數(shù)的babel模塊都需要依賴的模塊

babel-preset-es2015

將es6轉(zhuǎn)為es5的模塊

browserify

打包處理js

  • npm install babel-cli browserify -g
  • npm install babel-preset-es2015 --save-dev

創(chuàng)建.babelrc

注意有個(gè)點(diǎn).
內(nèi)容

{
  "presets": ["es2015"]
}

創(chuàng)建js文件

export default 這種寫(xiě)法是可以在import的時(shí)候不用對(duì)象解構(gòu)的钳吟。個(gè)人感覺(jué)用著更加方便解幽。

創(chuàng)建dataSource.js

這個(gè)的模塊我使用了export default 直接暴露對(duì)象贴见。用對(duì)象去管理這個(gè)模塊。



export default {
    msg : 'dataSource.js',
    getMsg() {
        return this.msg;
    }
}


創(chuàng)建alerter.js

這里使用了部分暴露躲株,暴露對(duì)象片部。然后注意對(duì)象里面要調(diào)用對(duì)象成員屬性需要使用this不然massage是undefined(最近學(xué)的太快了,實(shí)踐不夠霜定。不過(guò)還好理解到了档悠,遇到錯(cuò)誤廊鸥,很快就能想起解決辦法)

export let alerter = {
    massage :'alerter.js',
    bar(dataSource) {
        console.log(this.massage,dataSource.getMsg());
    }
}

創(chuàng)建主模塊module.js

這里一定要小心!U舅凇黍图!

  • 首先es6格式是 import XXX from '路徑'。
    babel轉(zhuǎn)為es5之后奴烙,require找模塊使用commonjs的規(guī)則助被。我當(dāng)時(shí)錯(cuò)誤在直接使用了模塊名字,缺少了·./如果直接使用模塊名的話切诀,就會(huì)因?yàn)檎也坏侥K導(dǎo)致報(bào)錯(cuò)揩环。

require也是按照一個(gè)變量集的順序從上到下依次查找。順序是:

  1. 項(xiàng)目下的node_modules
  2. 全局的node_modules
  3. 項(xiàng)目根路徑(舉個(gè)栗子:我在根目錄下面有一個(gè)index.js;在util包下面有一個(gè)app.vue;index中要引用它幅虑,就可以:require(‘./util/app.vue’)丰滑,這個(gè)路徑就是在項(xiàng)目路徑下去定位)
    原文:https://blog.csdn.net/little_newbee/article/details/7827
  • 注意引入方式
    對(duì)于部分暴露我們需要使用對(duì)象解構(gòu)的方式來(lái)獲取,如果直接使用變量名的話倒庵,會(huì)出現(xiàn)undefined的情況褒墨。推薦統(tǒng)一使用一種方法,不然你會(huì)被繞暈的擎宝。至少我是這樣233333

import dataSource from './dataSource';
import {alerter} from './alerter';

alerter.bar(dataSource);

使用babel將es6轉(zhuǎn)為es5

es6不是所有瀏覽器都支持郁妈,所以我們需要把es6轉(zhuǎn)為es5。
通過(guò)使用命令


babel src/js(源文件地址) -d build/js(目的地址)

結(jié)果

src\js\alerter.js -> build\js\alerter.js
src\js\dataSource.js -> build\js\dataSource.js
src\js\module.js -> build\js\module.js

使用browserify打包處理

創(chuàng)建必要文件

  • 創(chuàng)建dist目錄
  • 在目錄下面創(chuàng)建bundle.js文件

執(zhí)行命令

browserify build/js/module.js(babel生成的之后的主模塊地址) -o dist/js/bundle.js(目的地)

如果這里出現(xiàn)找不到模塊绍申,很有可能你的module路徑名存在問(wèn)題噩咪。需要仔細(xì)看看,部分錯(cuò)誤代碼

Error: Cannot find module 'dataSource' from 'E:\h5workspace\es6module\build\js'
    at C:\Users\Administrator\AppData\Roaming\npm\node_modules\browserify\node_modules\browser-resolve\node_modul
es\resolve\lib\async.js:46:17
    at process (C:\Users\Administrator\AppData\Roaming\npm\node_modules\browserify\node_modules\browser-resolve\n
ode_modules\resolve\lib\async.js:173:43)
    at ondir (C:\Users\Administrator\AppData\Roaming\npm\node_modules\browserify\node_modules\browser-resolve\nod
e_modules\resolve\lib\async.js:188:17)

測(cè)試

創(chuàng)建index.html极阅,在里面引用打包后的bundle.js文件胃碾。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="dist/js/bundle.js"></script>
</head>
<body>

</body>
</html>

截圖


image.png

總結(jié)

欠下的代碼,肯定會(huì)在下一次實(shí)踐中償還筋搏。在這次的實(shí)踐之中仆百,我首先犯下了忘了在對(duì)象中引用屬性需要使用this。其次es6的語(yǔ)法不夠熟拆又,我將import誤寫(xiě)成了export儒旬,導(dǎo)致錯(cuò)誤很奇怪,調(diào)試了許久。
雖然定位前端只是了解帖族,但是我還是需要敲代碼的栈源。不然在實(shí)踐的時(shí)候,效率和排錯(cuò)能力還是會(huì)很弱竖般。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甚垦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌艰亮,老刑警劉巖闭翩,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異迄埃,居然都是意外死亡疗韵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)侄非,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蕉汪,“玉大人,你說(shuō)我怎么就攤上這事逞怨≌甙蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵叠赦,是天一觀的道長(zhǎng)驹马。 經(jīng)常有香客問(wèn)我,道長(zhǎng)除秀,這世上最難降的妖魔是什么糯累? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮册踩,結(jié)果婚禮上寇蚊,老公的妹妹穿的比我還像新娘。我一直安慰自己棍好,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布允耿。 她就那樣靜靜地躺著,像睡著了一般较锡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚂蕴,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音骡楼,去河邊找鬼熔号。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸟整,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吩抓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赴恨?” 一聲冷哼從身側(cè)響起疹娶,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伦连,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體沛膳,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汛聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹哭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡风罩,死狀恐怖舵稠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哺徊,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布盈滴,位于F島的核電站轿钠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疗垛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一烈菌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芽世,春花似錦、人聲如沸济瓢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)箕宙。三九已至,卻和暖如春柬帕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陷寝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工凤跑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爆安,地道東北人仔引。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓咖耘,卻偏偏與公主長(zhǎng)得像当辐,于是被迫代替她去往敵國(guó)和親鲤看。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耍群,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • babel官網(wǎng) babel 介紹 Babel 是一個(gè)通用的多用途 JavaScript 編譯器蹈垢。通過(guò) Babel ...
    鋒享前端閱讀 1,813評(píng)論 0 10
  • 前言 webpack2和vue2已經(jīng)不是新鮮東西了,滿大街的文章在講解webpack和vue溉瓶,但是很多內(nèi)容寫(xiě)的不是...
    技術(shù)宅小青年閱讀 6,521評(píng)論 4 43
  • 寫(xiě)在開(kāi)頭 先說(shuō)說(shuō)為什么要寫(xiě)這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,276評(píng)論 4 31
  • 有些禮物,有些祝福疾宏,一眼看到就讓人覺(jué)得心意滿滿触创。 紀(jì)念日的祝福 我的研究生導(dǎo)師特別反對(duì)學(xué)生在節(jié)日給他送禮坎藐,但是在某...
    賽北熊在重慶閱讀 531評(píng)論 0 2
  • 酒國(guó) 一個(gè)孤獨(dú)的釣者 在漫無(wú)邊際的星空 泛一頁(yè)扁舟 來(lái)去又回 不知哪里靠岸 那顆沒(méi)有名字的星星 笑得彎下了腰 他在...
    莫北天云閱讀 110評(píng)論 0 0