詳解vue-cli + webpack 多頁(yè)面實(shí)例應(yīng)用
關(guān)于vue.js
vue.js是一套構(gòu)建用戶界面的 輕型的漸進(jìn)式前端框架。它的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。使用vue可以給你的開(kāi)發(fā)帶來(lái)極致的編程體驗(yàn)。
關(guān)于vue-cli
Vue-cli是vue官方提供的一個(gè)命令行工具(vue-cli),可用于快速搭建大型單頁(yè)應(yīng)用。該工具提供開(kāi)箱即用的構(gòu)建工具配置,帶來(lái)現(xiàn)代化的前端開(kāi)發(fā)流程。只需一分鐘即可啟動(dòng)帶熱重載、保存時(shí)靜態(tài)檢查以及可用于生產(chǎn)環(huán)境的構(gòu)建配置的項(xiàng)目。
疑問(wèn)
vue-cli主要是用于構(gòu)建單頁(yè)應(yīng)用的腳手架,但是現(xiàn)實(shí)項(xiàng)目中,大部分項(xiàng)目都是多頁(yè)的,怎么樣可以很好的利用這一套官方配置呢?我在網(wǎng)上找了一下, 幾乎找不到vue多頁(yè)應(yīng)用實(shí)例,所以才有基于vue-cli生成的單頁(yè)應(yīng)用進(jìn)行改造。
代碼地址:
Github:https://github.com/breezefeng/vue-cli-multipage
使用方法
# install dependencies npm install # serve with hot reload at localhost:8080/module/index.html npm run dev # build for production with minification npm run build
目錄結(jié)構(gòu)
vue-cli-multipage |---build |---config |---src |---assets |---img 圖片文件 |---css 樣式文件 |---font 字體文件 |---components 組件 |---Button.vue 按鈕組件 |---Hello.vue |---module |---index 首頁(yè)模塊 |---index.html |---index.js |---App.vue |---detail 詳情頁(yè)模塊 |---detail.html |---detail.js |---App.vue
從目錄結(jié)構(gòu)上,各種組件、頁(yè)面模塊、資源等都按類新建了文件夾,方便我們儲(chǔ)存文件。
其實(shí)我們所有的文件,最主要都是放在module文件夾里,以文件夾名為html的名稱。
例如:
|---index 首頁(yè)模塊 |---index.html |---index.js |---App.vue
此時(shí)我們?cè)L問(wèn)的鏈接是:http://localhost:8080/module/index.html
這里一定要注意,在module里下級(jí)文件夾里需要將html,js,vue template 都統(tǒng)一放在當(dāng)前文件夾里,當(dāng)然你也可以繼續(xù)放其他的資源,例如css、圖片、組件等,webpack會(huì)打包到當(dāng)前頁(yè)面里。
如果項(xiàng)目不需要這個(gè)頁(yè)面了,可以把這個(gè)文件夾直接刪除掉,干凈利落,干活也開(kāi)心。
像以前傳統(tǒng)的開(kāi)發(fā)項(xiàng)目,所有的圖片都習(xí)慣放在images里,當(dāng)項(xiàng)目有改動(dòng)時(shí),有些圖片等資源用不上了,但還占著坑位,導(dǎo)致項(xiàng)目越來(lái)越大,雖然現(xiàn)在的硬件容量大到驚人,但我們應(yīng)該還是要養(yǎng)到一個(gè)良好的習(xí)慣。
組件的使用
組件(Component)是 vue.js 最強(qiáng)大的功能之一,當(dāng)你發(fā)現(xiàn)使用組件可以減少造輪子里,你會(huì)深深的愛(ài)上它。
我們的組件都是放在components目錄下的,調(diào)用組件的方法也很簡(jiǎn)單。
import Hello from 'components/Hello'
然后記得在*.vue注冊(cè)導(dǎo)入的組件,要不然會(huì)無(wú)法使用。
import Hello from 'components/Hello' export default { name: 'app', components: { //在這里注冊(cè)組件,不然無(wú)法使用 Hello } }
構(gòu)建代碼說(shuō)明
那我們使用的是vue-cli的手腳架,用過(guò)vue-cli的同學(xué)都知道構(gòu)建代碼是放在根目錄build下,vue多頁(yè)面主要修改了這三個(gè)JS文件:webpack.base.conf.js、webpack.dev.conf.js、webpack.prod.conf.js。
/** ** [webpack.base.conf.js]這里主要列出相關(guān)代碼的修改點(diǎn),具體代碼請(qǐng)看build/webpack.base.conf.js */ var entries = getEntry('./src/module/**/*.js'); // 獲得入口js文件 module.exports = { entry: entries, .... } function getEntry(globPath) { var entries = {}, basename, tmp, pathname; glob.sync(globPath).forEach(function (entry) { basename = path.basename(entry, path.extname(entry)); tmp = entry.split('/').splice(-3); pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑 entries[pathname] = entry; }); return entries; }
/** ** [webpack.prod.conf.js]這里主要列出相關(guān)代碼的修改點(diǎn),具體代碼請(qǐng)看build/webpack.base.prod.js */ function getEntry(globPath) { var entries = {}, basename, tmp, pathname; glob.sync(globPath).forEach(function (entry) { basename = path.basename(entry, path.extname(entry)); tmp = entry.split('/').splice(-3); pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑 entries[pathname] = entry; }); return entries; } var pages = getEntry('./src/module/**/*.html'); for (var pathname in pages) { // 配置生成的html文件,定義路徑等 var conf = { filename: pathname + '.html', template: pages[pathname], // 模板路徑 inject: true, // js插入位置 minify: { //removeComments: true, //collapseWhitespace: true, //removeAttributeQuotes: true }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency' }; if (pathname in module.exports.entry) { conf.chunks = ['manifest', 'vendor', pathname]; conf.hash = true; } module.exports.plugins.push(new HtmlWebpackPlugin(conf)); }
修改的代碼不是很多,但是卻為多頁(yè)應(yīng)用提供了強(qiáng)大的構(gòu)建支持。以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue cli 3.x 項(xiàng)目部署到 github pages的方法
- Vue-cli創(chuàng)建項(xiàng)目從單頁(yè)面到多頁(yè)面的方法
- 詳解vue-cli + webpack 多頁(yè)面實(shí)例配置優(yōu)化方法
- vue-cli實(shí)現(xiàn)多頁(yè)面多路由的示例代碼
- 詳解如何將 Vue-cli 改造成支持多頁(yè)面的 history 模式
- vue-cli創(chuàng)建的項(xiàng)目,配置多頁(yè)面的實(shí)現(xiàn)方法
- 基于vue cli重構(gòu)多頁(yè)面腳手架過(guò)程詳解
- 詳解vue-cli多頁(yè)面工程實(shí)踐
- Vue CLI3基礎(chǔ)學(xué)習(xí)之pages構(gòu)建多頁(yè)應(yīng)用
相關(guān)文章
Vue3如何解決Element-plus不生效的問(wèn)題
這篇文章主要介紹了Vue3如何解決Element-plus不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue.js 2.0窺探之Virtual DOM到底是什么?
大家可能聽(tīng)說(shuō)Vue.js 2.0已經(jīng)發(fā)布,并且在其中新添加如了一些新功能。其中一個(gè)功能就是“Virtual DOM”。那么下面這篇文章就來(lái)給大家詳細(xì)介紹Vue.js 2.0中的Virtual DOM到底是什么?需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02Vue中使用jsencrypt進(jìn)行RSA非對(duì)稱加密的操作方法
這篇文章主要介紹了Vue中使用jsencrypt進(jìn)行RSA非對(duì)稱加密,在這里需要注意要加密的數(shù)據(jù)必須是字符串,對(duì)Vue?RSA非對(duì)稱加密相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04基于vue實(shí)現(xiàn)一個(gè)神奇的動(dòng)態(tài)按鈕效果
今天我們將利用vue的條件指令來(lái)完成一個(gè)簡(jiǎn)易的動(dòng)態(tài)變色功能按鈕,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-05-05vue實(shí)現(xiàn)對(duì)highlight-current-row方式整行選中后修改默認(rèn)背景顏色
這篇文章主要介紹了vue實(shí)現(xiàn)對(duì)highlight-current-row方式整行選中后修改默認(rèn)背景顏色方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Vue如何利用flex布局實(shí)現(xiàn)TV端城市列表功能
用vue開(kāi)發(fā)了三四個(gè)組件了,都是H5的,現(xiàn)在來(lái)看看PC是如何玩轉(zhuǎn)組件的,下面這篇文章主要給大家介紹了關(guān)于Vue如何利用flex布局實(shí)現(xiàn)TV端城市列表功能的相關(guān)資料,需要的朋友可以參考下2023-01-01詳解vue-cli快速構(gòu)建項(xiàng)目以及引入bootstrap、jq
本篇文章主要介紹了vue-cli快速構(gòu)建項(xiàng)目以及引入bootstrap、jq,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05VUE如何實(shí)現(xiàn)點(diǎn)擊文字添加顏色(動(dòng)態(tài)修改class)
這篇文章主要介紹了VUE如何實(shí)現(xiàn)點(diǎn)擊文字添加顏色(動(dòng)態(tài)修改class),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11