【weex填坑之路-02】關(guān)于Web端(html5)開(kāi)發(fā)webpack多頁(yè)面配置

GitHub主頁(yè):https://github.com/452MJ/weex-multi-page-demo

前言

weex是一個(gè)跨平臺(tái)開(kāi)發(fā)框架夺姑,奉行“一次編寫纲缓,三端運(yùn)行”的理念诗鸭,不過(guò)一般公司用weex開(kāi)發(fā)APP為主溢豆,如果要在web端開(kāi)發(fā)一個(gè)網(wǎng)頁(yè)烦粒,相信還是會(huì)以Vue作為首選。不過(guò)由于公司之前的APP項(xiàng)目就已經(jīng)封裝了部分公共component及一些工具類庫(kù)蚤氏。所以我首選用weex來(lái)做公眾號(hào)H5網(wǎng)頁(yè)開(kāi)發(fā)。

查閱相關(guān)資料踊兜,比如官方demo?weex-hackernews竿滨,是一個(gè)SPA單頁(yè)面應(yīng)用。需要引入vue-router、vuex等庫(kù)于游。

解決思路

動(dòng)手修改webpack配置毁葱,把每個(gè)頁(yè)面模塊都單獨(dú)配置成index.html+index.js,把一個(gè)大SPA切割成若干個(gè)小SPA贰剥,每個(gè)HTML單獨(dú)加載對(duì)應(yīng)的js文件倾剿,以達(dá)到多頁(yè)面效果。

手把手演示

weexpack create weex-multi-page-demo


weexpack create weex-multi-page-demo


新建工程的目錄結(jié)構(gòu)

然后我們執(zhí)行npm install(PS:請(qǐng)務(wù)必在Terminal終端下輸入執(zhí)行)

npm install

安裝所需要的依賴庫(kù)蚌成,最后得到相應(yīng)的node_modules

我們先看看直接編譯出來(lái)的js文件是如何的前痘,我們執(zhí)行npm run build

npm run build

出現(xiàn)一個(gè)/dist文件夾,里面放的就是我們編寫的.vue文件后run build后對(duì)應(yīng)的的js文件


npm run build的結(jié)果

接著執(zhí)行npm run serve看看具體的效果

npm run serve

熟悉的hello world

現(xiàn)在我們想配置出對(duì)應(yīng)的html文件担忧,就需要著手修改webpack芹缔,我們打開(kāi)wevpack.config.js

未作修改前的webpack.config.js

要自動(dòng)生成.html文件,我們需要用到webpack的一個(gè)plugin插件瓶盛,html-webpack-plugin最欠。引入插件后代碼如圖

引入HtmlWebpackPlugin

每當(dāng)我們需要生成一個(gè).html文件,都需要往plugins中添加一個(gè)html-webpack-plugin惩猫,所以記得用let來(lái)定義plugins芝硬。

Weex的工程是通過(guò)webpack.config.js中的walk方法來(lái)遍歷src文件夾中的.vue文件,我們可以通過(guò)對(duì)walk()進(jìn)行修改轧房,在遍歷.vue文件的同時(shí)拌阴,添加對(duì)應(yīng)的html-webpack-plugin,未作修改前的walk()方法如圖

walk()方法

可以看到锯厢,當(dāng)檢索到.vue文件的時(shí)候皮官,就會(huì)往entry中新增一個(gè)對(duì)象,同理我們可以在檢索到.vue文件的時(shí)候便往plugins中新增一個(gè)html-webpack-plugin

添加html-webpack-plugin

其中用到的模板template.html 如圖

template.html

然后我們npm run build

npm run build

生成的index.html

生成的.html中多了一行代碼

模板插入的<script/>

初步見(jiàn)成果实辑,url中已經(jīng)看不到單頁(yè)面的#了捺氢,是一個(gè)獨(dú)立的html頁(yè)面

生成的.html

然后我們又一次添加多個(gè)不同的頁(yè)面試試

src


dist
.js文件全部引用了

可以看到html-webpack-plugin的配置還不完善,導(dǎo)致模板生成的.html把所有.js都引用了剪撬,且.html的命名與.vue的命名相關(guān)聯(lián)摄乒,比如ccc.vue生成的便是ccc.html。接下來(lái)我們?cè)賰?yōu)化一下html-webpack-plugin的配置残黑,修改如下

增加chunks配置

chunks 選項(xiàng)的作用主要是針對(duì)多入口(entry)文件馍佑。當(dāng)你有多個(gè)入口文件的時(shí)候,對(duì)應(yīng)就會(huì)生成多個(gè)編譯后的 js 文件梨水。那么 chunks 選項(xiàng)就可以決定是否都使用這些生成的 js 文件拭荤。

然后我們?cè)賜pm run build一遍,看看生成的.html文件

三個(gè)頁(yè)面的html

可以看到三個(gè)不同的頁(yè)面都引用自己的.js文件

接下來(lái)我們?cè)賰?yōu)化一下疫诽,比如說(shuō)舅世,每個(gè)頁(yè)面模塊我只想index.vue才生成index.html旦委,ccc.vue則不生成html。那我們應(yīng)該如何寫呢雏亚?很簡(jiǎn)單缨硝,如圖

增加文件名判斷

npm run build后


生成的dist

可以看到c頁(yè)面中沒(méi)有index.vue,所以不會(huì)生成對(duì)應(yīng)的.html

最后我們對(duì)webConfig配置罢低,不生成xx.web.js文件

webConfig配置修改

最終的dist文件夾內(nèi)容如下

最終的dist

接下來(lái)我們就可以直接通過(guò)url的形式來(lái)訪問(wèn)a頁(yè)面與b頁(yè)面查辩,無(wú)需通過(guò)配置復(fù)雜的的vue-router,無(wú)需綁定vuex來(lái)管理數(shù)據(jù)


A頁(yè)面
B頁(yè)面

至此网持,一個(gè)簡(jiǎn)單的weex的webpack多頁(yè)面配置已經(jīng)分析完成宜岛。

不足的地方

因?yàn)閠emplate.html的公共引用庫(kù)的原因

<script src='../../../node_modules/vue/dist/vue.runtime.min.js'></script>

所以每個(gè)頁(yè)面都必須寫成/src/page/xx/index.vue(后面發(fā)現(xiàn)只要引用cdn上的js就可以去掉丑陋的../../../了

<script src='https://cdn.jsdeivr.net/npm/vue@2.4.3/dist/vue.runtime.min.js'></script>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翎碑,隨后出現(xiàn)的幾起案子谬返,更是在濱河造成了極大的恐慌,老刑警劉巖日杈,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遣铝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡莉擒,警方通過(guò)查閱死者的電腦和手機(jī)酿炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涨冀,“玉大人填硕,你說(shuō)我怎么就攤上這事÷贡睿” “怎么了扁眯?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)翅帜。 經(jīng)常有香客問(wèn)我姻檀,道長(zhǎng),這世上最難降的妖魔是什么涝滴? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任绣版,我火速辦了婚禮,結(jié)果婚禮上歼疮,老公的妹妹穿的比我還像新娘杂抽。我一直安慰自己,他們只是感情好韩脏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布缩麸。 她就那樣靜靜地躺著,像睡著了一般赡矢。 火紅的嫁衣襯著肌膚如雪匙睹。 梳的紋絲不亂的頭發(fā)上愚屁,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天济竹,我揣著相機(jī)與錄音痕檬,去河邊找鬼。 笑死送浊,一個(gè)胖子當(dāng)著我的面吹牛梦谜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袭景,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唁桩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了耸棒?” 一聲冷哼從身側(cè)響起荒澡,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎与殃,沒(méi)想到半個(gè)月后单山,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幅疼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年米奸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爽篷。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悴晰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逐工,到底是詐尸還是另有隱情铡溪,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布泪喊,位于F島的核電站棕硫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窘俺。R本人自食惡果不足惜饲帅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘤泪。 院中可真熱鬧灶泵,春花似錦、人聲如沸对途。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)实檀。三九已至惶洲,卻和暖如春按声,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恬吕。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工签则, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铐料。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓渐裂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钠惩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柒凉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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