微前端框架 Qiankun 如何集成 Snowpack 打包的微應(yīng)用

最近在微前端框架 Qiankun 中加載一個(gè) 使用了Snowpack 工具來(lái)打包項(xiàng)目時(shí)無(wú)法正常使用幅疼。檢查后發(fā)現(xiàn) Qiankun 目前還不支持 Snowpack,Qiankun作為微前端的容器痘番,雖然以“乾坤”為名次酌,以包納萬(wàn)物為目標(biāo)瀑晒,但是被包含的微應(yīng)用必須符合 Qiankun 的接口標(biāo)準(zhǔn),不只是幾個(gè)鉤子函數(shù),還需要符合打包的模塊化規(guī)則赚瘦。

運(yùn)行qiankun官方Demo

git clone https://github.com/umijs/qiankun.git qiankun
git checkout v2.3.5
cd qiankun
yarn install
yarn example:install
yarn example:start
官方Demo

添加 Snowpack 打包應(yīng)用

啟動(dòng) Snowpack 應(yīng)用

Snowpack應(yīng)用

添加qiankun鉤子函數(shù)


Snowpack項(xiàng)目入口文件

在qiankun的demo項(xiàng)目中添加微應(yīng)用入口


examples/main/index.html
examples/main/index.js

打開qiankun頁(yè)面,切換到 Snowpack頁(yè)面


error page

此時(shí)微應(yīng)用加載失敗奏寨,控制臺(tái)報(bào)錯(cuò) “Unexpected token export”

錯(cuò)誤原因

qiankun 框架使用 import-html-entry 庫(kù)從微應(yīng)用的html文件中獲取script文件起意,import-html-entry 默認(rèn)所有的script文件都是符合ES5模塊標(biāo)準(zhǔn)的JavaScript文件。這是因?yàn)?qiankun 做了一個(gè)假設(shè)病瞳,微應(yīng)用要么是由 webpack 打包的揽咕,要么是可以手寫入口鉤子函數(shù)的。

qiankun依賴庫(kù)

Snowpack 使用的 ESM 方式導(dǎo)出文件仍源,所以既不是ES5模塊心褐,也支持手寫入口文件,所以在 import-html-entry 解析微應(yīng)用代碼 時(shí)笼踩,會(huì)提示語(yǔ)法出錯(cuò)逗爹,未識(shí)別的 export 關(guān)鍵字。

打包后文件需要符合幾點(diǎn)規(guī)范嚎于,這也是為什么 qiankun 要求在微應(yīng)用在打包時(shí)添加指定配置

webpack.config.js 指定配置

解決方法

Snowpack 的 ESM 模塊打包方式與 qiankun 微前端方案存在根本沖突掘而,不能兼容。所以使用 @snowpack/plugin-webpack 插件于购,在 Snowpack 構(gòu)建時(shí)使用 webpack 再編譯一次(注意:開發(fā)模式下袍睡,webpack插件不生效,必須構(gòu)建出靜態(tài)文件時(shí)使用)

  1. 第一步肋僧,修改snowpack 編譯配置


    snowpack.config.js
  2. 第二步斑胜,修改@snowpack/webpack-plugin 插件源碼

代碼位置:https://github.com/snowpackjs/snowpack/blob/158bb9388a0bbb4a8a9d5dd07b576c727a61cf28/plugins/plugin-webpack/plugin.js#L376

@snowpack/webpack-plugin

  1. 第三步控淡,使用 Snowpack 構(gòu)建靜態(tài)文件


    build 代碼
  2. 第四步,使用靜態(tài)文件服務(wù)提供訪問構(gòu)建結(jié)果文件的訪問入口
    略...(常用的比如nginx服務(wù)止潘,注意要支持跨域請(qǐng)求)

  3. 第五步掺炭,修改 qiankun demo配置的入口,指向新服務(wù)

配置時(shí)需要注意應(yīng)用名稱必須匹配


名稱匹配
  1. 第六步凭戴,成功集成Snowpack打包應(yīng)用到qiankun框架當(dāng)中
    略...

備注

  1. 必須要修改 @snowpack/plugin-webpack 源碼嗎涧狮?
    是的。只能通過修改源碼的方式進(jìn)行兼容么夫。并且在CI過程或構(gòu)建新環(huán)境時(shí)需要自己修改對(duì)應(yīng)內(nèi)容者冤。或者使用 fork 版本 @snowpack/plugin-webpack 比如:
npm i https://github.com/DeronW/snowpack-plugin-webpack
  1. qiankun 與 snowpack 不兼容是誰(shuí)的問題档痪?
    不兼容是雙方的問題涉枫,qiankun 和 snowpack 只是采用了不同的標(biāo)準(zhǔn)來(lái)解決不同的問題,因此才出現(xiàn)兼容性問題钞它。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拜银,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遭垛,更是在濱河造成了極大的恐慌尼桶,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锯仪,死亡現(xiàn)場(chǎng)離奇詭異泵督,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)庶喜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門小腊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人久窟,你說(shuō)我怎么就攤上這事秩冈。” “怎么了斥扛?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵入问,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我稀颁,道長(zhǎng)芬失,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任匾灶,我火速辦了婚禮棱烂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阶女。我一直安慰自己颊糜,他們只是感情好哩治,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衬鱼,像睡著了一般锚扎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馁启,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音芍秆,去河邊找鬼惯疙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妖啥,可吹牛的內(nèi)容都是我干的霉颠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼荆虱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒿偎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怀读,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诉位,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后菜枷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苍糠,經(jīng)...
    沈念sama閱讀 44,104評(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,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚊锹,死狀恐怖瞳筏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牡昆,我是刑警寧澤姚炕,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站迁杨,受9級(jí)特大地震影響钻心,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铅协,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一捷沸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狐史,春花似錦痒给、人聲如沸说墨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尼斧。三九已至,卻和暖如春试吁,著一層夾襖步出監(jiān)牢的瞬間棺棵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工熄捍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烛恤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓余耽,卻偏偏與公主長(zhǎng)得像缚柏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碟贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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