嘗試webpack

  • 引入文件的路徑必須正確衅斩,比如引入樣式的時(shí)候绑青,less就是lesscss 就是css屋群,必須是正確的路徑闸婴。
    還有一些application開頭的文件路徑,都直接用相對(duì)路徑了芍躏。其實(shí)是可以配置resolve參數(shù)的邪乍。 但是。 我懶~

之前的jspm是會(huì)動(dòng)態(tài)編譯lesscss对竣, 所以都直接引用css就可以庇楞,但是也會(huì)造成問題, 比如中間如果編譯失敗否纬,自動(dòng)編譯就不 work了吕晌, 還有就是如果在less里面有import, 也容易引起watch失敗临燃。

  • 不需要html文件了 (直接在webpack/FILES.js里面定義)
    我們用到的html文件其實(shí)都大同小異睛驳,主要就是標(biāo)題 和track的參數(shù)不一樣。
    當(dāng)然還有一些 在里面直接寫了樣式的膜廊,我直接拿出去了柏靶,有些直接在html引入庫的, 我也拿出去了溃论。 最后只需要一個(gè)大的map屎蜓, 告訴webpack 哪個(gè)路徑要設(shè)置什么樣的titlerack對(duì)應(yīng)的參數(shù)就行了。
    對(duì)于某些特殊的庫钥勋,必須用script tag的炬转。 比如
    jsPlumb: '/node_modules/jsplumb/dist/js/jsPlumb-2.1.2-min.js',
    pace: '/js/bak/pace.1.0.2.min.js',
    introJs: '/node_modules/intro.js/intro.js',
    'render-html-to-pdf': 'https://linwalker.github.io/render-html-to-pdf/js/html2canvas.js',
    jsPDF: '/js/plugin/jsPdf.js'

還有很多庫雖然是npm install的, 但是本質(zhì)上就是引入一個(gè)js算灸,污染環(huán)境才能用扼劈,比如summernotedropzone菲驴,codemirror荐吵, 能換掉的話,還是趁早換掉把赊瞬。

話說我們用了3個(gè)庫來做富文本編輯先煎, umeditorsummernote 還有medium-editor,
事實(shí)上只有medium-editor是真的支持npm的。另外兩個(gè)本質(zhì)上都是載入js文件污染環(huán)境巧涧。

還有一些是必須剪掉某些css的薯蝎, 比如email模塊的view.html, 不需要加載任何css谤绳。 就加了一點(diǎn)點(diǎn)小小的邏輯來對(duì)html模版做改動(dòng)就可以了占锯。

  • 語法更加嚴(yán)格了袒哥,用到的變量必須import
    之前因?yàn)槊總€(gè)html都會(huì)自動(dòng)加入jquery 之類第三方庫的script 標(biāo)簽,所以在寫代碼的時(shí)候消略, 就算沒有 import $ from 'jquery'堡称, 也可以直接使用$
    我一開始沒有直接把所有直接在html的模版里面引入所有的庫 (之前會(huì)默認(rèn)引入jquery, jquery-ui, bootstrap, antd, react, react-dom)艺演;
    然后就有很多問題粮呢,最大的問題就是我們用了相當(dāng)多的jquery插件, 這些插件都需要先有jquery钞艇, 而import命令是不會(huì)污染全局環(huán)境的啄寡。在webpack中必須要配置了extenel ,表示明確告訴webpack哩照, 這個(gè)import不用管挺物。
    然而,我們真的需要那么多jquery的插件來解決問題嗎飘弧?
import '../../js/pagev2/easing.js';   // 這個(gè)是動(dòng)畫效果嗎识藤。。次伶。
import '../../js/pagev2/jquery.htmlClean.js';  // 這個(gè)又是用來干什么的痴昧。。
icheck  // 這個(gè)純css就能解決的問題竟然引了一個(gè)庫9谕酢8献!
nouislider  // 這個(gè)可以用ant 替代了
jquery.nestable.js  // 這個(gè)可以用ant 替代柱彻?

bootstrap 除了css豪娜,我們就是用它來實(shí)現(xiàn)tab/tooltip/datepicker/modal, 全部都可以用ant替代。 tab甚至可以直接用css替代哟楷。(是的瘤载,我就是這么干的,想看css的同學(xué)可以參考components/toggleTab.less卖擅, 使用方法在less里)
總之我后來就直接在html里面寫好

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react-dom.min.js"></script>

改完之后還是很爽的鸣奔, webpack的幾大優(yōu)勢:

  • 編譯速度很快,比如我只關(guān)心pagev2的話惩阶,20多秒就能編譯完挎狸。
  • 實(shí)時(shí)編譯代碼,不用手動(dòng)刷新
  • 編譯整個(gè)項(xiàng)目只需要不到5分鐘 (這個(gè)有坑琳猫,后面說)
  • 沒有了jspm伟叛, 所有的包管理只用npm就可以

因?yàn)槲腋耐曛笠纯词遣皇钦娴母暮昧耍愿耐曛蟮捻撁嫖叶键c(diǎn)開來看來看脐嫂,發(fā)現(xiàn)了如下嚴(yán)重的bug

can not edit selected field : 'application/form/newForm'
can not open : 'application/report/show_customers/index',
can not open : application/wechat/template/list.html
can not find service, line No: 79 /Users/huangling/code/appui/application/common/redux-onboarding.js
can not send:   mktcmp/template/   preview wechat message, and send

然而就在我覺得好像一切都搞定了準(zhǔn)備看看全部文件一起編譯要多久的時(shí)候统刮,悲劇發(fā)生了, 因?yàn)橛?30多個(gè)入口账千,直接out of memory了侥蒙。
我發(fā)現(xiàn)最多一次build40個(gè),再多就肯定out of memory了匀奏, 網(wǎng)上各種搜方案鞭衩,發(fā)現(xiàn)就有一個(gè)paraller-webpack比較靠譜,原理就是一次性多開幾個(gè)webpack娃善,我把130個(gè)文件分了10批论衍,終于可以build了。大概就是5分鐘左右聚磺。(事實(shí)上如果不是同時(shí)跑坯台,10個(gè)入口 大概也就是2分鐘就能build完, 說明多線程還是很耗資源疤鼻蕖)

但是蜒蕾,如果要hot load 怎么辦。焕阿。不全部編譯咪啡,怎么一起監(jiān)聽呢。暮屡。 非常難過撤摸,至今沒有想到好的解決方案。褒纲。愁溜。
好消息是,webpack也有一個(gè)watch模式外厂,雖然不能實(shí)時(shí)更新冕象,但是可以手動(dòng)刷新。汁蝶。
所以現(xiàn)在如果用 gulp start --watch, 還是可以跟之前一樣渐扮, 改完了代碼,手動(dòng)刷新。不用重新編譯拐袜。
所以現(xiàn)在的命令是:

gulp start [--watch] // 清空文件帖努,拷貝文件, 編譯文件
  其實(shí)文件不用每次都拷貝耻讽,因?yàn)閍ssets都是一樣的
gulp serve --test  // 跟之前一樣

還有兩個(gè)很嚴(yán)重的問題

  • uglify plugin 有問題
    uglify plugin 0.6.4 不支持es6語法。 所以必須babel編譯過了的才能壓縮帕棉,
    需要使用 uglify-plugin的1.0版 本针肥, 但npm上的版本是0.6.4饼记。 直接npm下載github上的版本又總是不能被識(shí)別,實(shí)在是不知道怎么回事慰枕。具则。。
    為了用babel編譯所有的文件具帮, 在loader 里就不能加 exclude: /node_modules/博肋,然后react-dates 就怎么都編譯不過了。蜂厅。不知道其他的庫會(huì)不會(huì)也有類似的問題
  • watch 模式刷新好慢胺朔病!
    基本上要10秒才能刷新掘猿,不知道是不是因?yàn)槿肟谔鄬?dǎo)致的病游,沒有仔細(xì)研究
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市术奖,隨后出現(xiàn)的幾起案子礁遵,更是在濱河造成了極大的恐慌,老刑警劉巖采记,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佣耐,死亡現(xiàn)場離奇詭異,居然都是意外死亡唧龄,警方通過查閱死者的電腦和手機(jī)兼砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來既棺,“玉大人讽挟,你說我怎么就攤上這事⊥杳幔” “怎么了耽梅?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胖烛。 經(jīng)常有香客問我眼姐,道長,這世上最難降的妖魔是什么佩番? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任众旗,我火速辦了婚禮,結(jié)果婚禮上趟畏,老公的妹妹穿的比我還像新娘贡歧。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布利朵。 她就那樣靜靜地躺著律想,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哗咆。 梳的紋絲不亂的頭發(fā)上蜘欲,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天益眉,我揣著相機(jī)與錄音晌柬,去河邊找鬼。 笑死郭脂,一個(gè)胖子當(dāng)著我的面吹牛年碘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播展鸡,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼屿衅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了莹弊?” 一聲冷哼從身側(cè)響起涤久,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忍弛,沒想到半個(gè)月后响迂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡细疚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年蔗彤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯兼。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡然遏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吧彪,到底是詐尸還是另有隱情待侵,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布姨裸,位于F島的核電站秧倾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啦扬。R本人自食惡果不足惜中狂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扑毡。 院中可真熱鬧胃榕,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至楔壤,卻和暖如春鹤啡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹲嚣。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工递瑰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隙畜。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓抖部,卻偏偏與公主長得像,于是被迫代替她去往敵國和親议惰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慎颗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • 在現(xiàn)在的前端開發(fā)中,前后端分離言询、模塊化開發(fā)俯萎、版本控制、文件合并與壓縮运杭、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,449評(píng)論 1 32
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺夫啊,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,179評(píng)論 7 35
  • GitChat技術(shù)雜談 前言 本文較長县习,為了節(jié)省你的閱讀時(shí)間涮母,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,699評(píng)論 7 110
  • 最近在學(xué)習(xí) Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學(xué)習(xí) Webpack 的...
    My_Oh_My閱讀 8,190評(píng)論 40 247
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,298評(píng)論 4 31