亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue項目添加多頁面配置的步驟詳解

2019-11-19 11:29:37
字體:
來源:轉載
供稿:網友

公司使用 vue-cli 創建的 vue項目 在初始化時并沒有做多頁面配置,隨著需求的不斷增加,發現有必要使用多頁面配置??戳撕芏?vue多頁面配置 的文章,基本都是在初始化時就配置了多頁面。而且如果使用這些實現,需要調整當前項目的目錄結構,這點也是不能接受的。

最后,參考這些文章,在不調整當前項目目錄結構實現了多頁面的配置的添加。這里做下記錄、總結,方便以后復用。如果還能有幸幫助到有同樣需求的童鞋的話,那就更好了。

實現步驟

1.添加新增入口相關文件;
2.使用變量維護多入口;
3.開發環境讀取多入口配置;
4.生產環境讀取多入口配置;

新增入口相關文件

在 src 目錄下新增一個 page1 文件夾,新建新頁面的所需的相關文件(入口文件、HTML模板文件等)。我這邊直接 vue-cli 初始化創建相關文件復制了一份到 page1 文件夾下。如下:

├─App.vue├─main.js├─page1.html // 這里模板文件名稱需要與文件夾名稱相同,方便輸出模板讀取├─router|  └index.js├─components|   └HelloWorld.vue├─assets|  └logo.pngpage1/router/index.js 需要對該頁面的所有路由添加同文件夾名的公共路徑,用于解析: import Vue from 'vue'import Router from 'vue-router'import HelloWorld from '@/page1/components/HelloWorld' // 這里也需要留意Vue.use(Router)export default new Router({ mode: 'history', base: '/', routes: [  {   path: '/page1/',   redirect: '/page1/index'  },  {   path: '/page1/index',   name: 'HelloWorld',   component: HelloWorld  } ]})

使用變量維護多入口

我們在項目目錄下的 build/utils.js 的最后 exports 一個指定多入口的對象。如下:

// 這里,每個屬性就是一個頁面配置,指定該頁面的入口文件// 如果需要添加,只需多增加一個屬性// 屬性名必和html模板文件名、目錄名稱相同exports.multipleEntrys = { page1: './src/page1/main.js'}

之所以使用 build/utils.js ,是因為該文件在 webpack.base.conf.js 、 webpack.prod.conf.js 、 webpack.dev.conf.js 都用導入。

開發環境讀取多入口配置

首先,在 build/webpack.base.conf.js 中,我們把上面定義的入口添加進 entry 配置:

entry: {  app: './src/main.js',  ...utils.multipleEntrys // entry添加該行 }

然后,在 build/webpack.dev.conf.js 添加路徑解析和多頁面輸出:

// 添加解析,將historyApiFallback的屬性修改如下:  historyApiFallback: {   rewrites: [    // 將所有多入口遍歷成路徑解析項    ...((()=>{     let writes = []     for(let prop in utils.multipleEntrys){      // 使用屬性名匹配為正則      // 這就是上面“需要對該頁面的所有路由添加同文件夾名的公共路徑”的原因      let reg = new RegExp(`^/${prop}/`)       writes.push({       from: reg,       // 使用屬性名讀取模板文件       // 這就是上面“模板文件名稱需要與文件夾名稱相同”的原因       to: path.posix.join(config.dev.assetsPublicPath, `${prop}.html`)      })     }     return writes    })()),    // 匹配所有路徑一定要在最后,否則該匹配之后的項,不會被執行    { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }    ],  }// 在已經的HtmlWebpackPlugin中添加chunks配置,否則默認頁面會注入所有頁面的js文件...plugins: [  ...  new HtmlWebpackPlugin({   filename: 'index.html',   template: 'index.html',   inject: true,   // 增加此行,   // 'app'為默認入口名稱,如果你的默認入口不是'app'   // 則這里需要替換   chunks: ['manifest', 'vendor', 'app']  })  ...]...// 在`devWebpackConfig`定義之后,緊接著添加多頁面輸出:for(let prop in utils.multipleEntrys){ devWebpackConfig.plugins.push(new HtmlWebpackPlugin({  filename: `${prop}.html`,  // html模板路徑,使用屬性名作為文件夾名稱  // 這是新頁面文件夾名稱需要和多入口配置變量屬性名相同的原因  template: `./src/${prop}/${prop}.html`,   inject: true,  chunks: ['manifest', 'vendor', prop], }))}

最后,添加多頁面相互跳轉鏈接:

<!-- src/components/HelloWorld.vue -->...<a href="/page1/index" rel="external nofollow" >to page B</a> ...<!-- src/page1/components/HelloWorld.vue -->...<a href="/" rel="external nofollow" >to page A</a> ...<!-- 這里由于是多個頁面的跳轉,所以不能再使用router-link標簽,需要使用a標簽 -->

到這里,開發環境的多頁面配置已經完成,重新 npm run dev 一下,即可多頁面跳轉。

生產環境讀取多入口配置

首先,在 webapck.prod.config.js 中添加多頁面輸出。

// 在已經的HtmlWebpackPlugin中添加chunks配置,否則默認頁面會注入所有頁面的js文件...plugins: [  ...  new HtmlWebpackPlugin({   ...   chunks: ['manifest', 'vendor', 'app'] // 增加此行   ...  })  ...]...// build/webapck.prod.config.js的webpackConfig定義后緊接著添加for(let prop in utils.multipleEntrys){ webpackConfig.plugins.push(new HtmlWebpackPlugin({  filename: `${prop}.html`,  template: `./src/${prop}/${prop}.html`,  inject: true,  chunks: ['manifest', 'vendor', prop],  minify: {   removeComments: true,   collapseWhitespace: true,   removeAttributeQuotes: true  },  chunksSortMode: 'dependency' }))}

然后,開發環境不同路徑指向不同輸出文件是由 historyApiFallback 來處理的,生產就需要在 web服務 中將不同路徑指向打包后的不同文件。這里以 nginx 為例,配置如下:

server {  listen    92 default_server;  listen    [::]:92 default_server;  server_name _;  root     D:/vue-multi-entry/dist;  location / {      try_files $uri $uri/ /index.html;  }  location /page1/ {      try_files $uri $uri/ /page1.html;  }}

以上,整個多頁面的配置就已經完成。這里是 完整demo

關于webpack4.x版本的差異

如果你使用的是 webpack4.x 版本,關于 webapck.prod.config.js 中 chunks 配置的順序就是這樣的: [prop, 'manifest', 'vendor'] 。

總結

以上所述是小編給大家介紹的vue項目添加多頁面配置的步驟詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频在线看| 日本精品久久电影| 精品久久久久久中文字幕| 欧美性猛交xxxx乱大交| 91久久精品国产91性色| 精品亚洲aⅴ在线观看| 理论片在线不卡免费观看| 78m国产成人精品视频| 欧美另类极品videosbest最新版本| 日韩在线资源网| 亚洲欧美日韩直播| 欧美日韩精品二区| 久久精品成人欧美大片| 日韩av一卡二卡| 欧美成人精品一区二区三区| 亚洲片国产一区一级在线观看| 亚洲精品国产精品乱码不99按摩| 欧美劲爆第一页| 亚洲精品欧美日韩| 91久久国产婷婷一区二区| 日韩高清av在线| 韩日精品中文字幕| 日韩精品在线观看一区二区| 一区二区欧美在线| 亚洲深夜福利网站| 亚洲高清福利视频| 另类少妇人与禽zozz0性伦| 日本a级片电影一区二区| 欧美理论电影在线观看| 亚洲精品国产综合久久| 亚洲国产91精品在线观看| 亚洲第一区中文99精品| 韩剧1988免费观看全集| 国产精品视频在线观看| 自拍偷拍亚洲欧美| 成人黄色免费在线观看| 日韩精品在线电影| 国产精品日本精品| 欧美成年人视频网站欧美| 精品一区二区三区三区| 国产欧美日韩精品在线观看| 欧美日韩国产黄| 久久青草福利网站| 亚洲国产成人久久综合一区| 欧美视频13p| 亚洲性日韩精品一区二区| 欧美怡春院一区二区三区| 国产综合久久久久久| 国产精品久久久久久久9999| 美女精品久久久| 57pao国产精品一区| 国产成人精品电影| 国产精品高潮呻吟久久av黑人| 久久av中文字幕| 黑丝美女久久久| 精品视频在线导航| 国产日韩欧美影视| 欧美日韩国产第一页| 26uuu亚洲伊人春色| 国产精品色婷婷视频| 日韩av免费在线| 91禁外国网站| 久久国产精品亚洲| 51色欧美片视频在线观看| 欧美国产日韩一区二区| 伊是香蕉大人久久| 欧美国产视频一区二区| 黑人巨大精品欧美一区免费视频| 久久九九全国免费精品观看| 国内成人精品一区| 久久国产精品久久国产精品| 欧美wwwxxxx| 亚洲性xxxx| 中文字幕日韩欧美精品在线观看| 日韩久久精品成人| 亚洲成色www8888| 26uuu另类亚洲欧美日本老年| 91久久久亚洲精品| 91wwwcom在线观看| 成人国产精品免费视频| 中文字幕av一区二区| …久久精品99久久香蕉国产| 精品一区二区三区三区| 97国产在线观看| 高清在线视频日韩欧美| 成人精品一区二区三区电影黑人| 久久精品91久久久久久再现| 亚洲免费精彩视频| 国产精品亚洲片夜色在线| 国产精品老女人精品视频| 国产精品久久久久久搜索| 亚洲国产精品久久| 国产欧美日韩免费看aⅴ视频| 久久久亚洲影院| 91高清免费视频| 欧美电影免费观看电视剧大全| 4k岛国日韩精品**专区| 久久亚洲精品毛片| 久久国产精品久久国产精品| 欧美电影免费播放| 一区二区在线视频播放| 国产suv精品一区二区| 国产精品久久久久久五月尺| 亚洲国产精品福利| 亚洲tv在线观看| 国产女精品视频网站免费| 91免费综合在线| 国产精品久久久久久久久久久不卡| 国产精品日韩在线观看| 欧美整片在线观看| 日韩视频在线免费| 欧美激情手机在线视频| 日韩高清有码在线| 国产免费成人av| 亚洲资源在线看| 欧美高清无遮挡| 日本午夜精品理论片a级appf发布| 久久精视频免费在线久久完整在线看| 国产亚洲精品美女| 91网站在线免费观看| 日韩一区在线视频| 久久久久久久久久久国产| 欧美日韩国产丝袜美女| 久久成人人人人精品欧| 91免费精品国偷自产在线| 欧美大片在线免费观看| 黑人精品xxx一区一二区| 一区二区中文字幕| 精品国产一区二区在线| 精品福利在线视频| 国产成人jvid在线播放| 久热爱精品视频线路一| 欧美一区二区三区免费视| 庆余年2免费日韩剧观看大牛| 中文字幕一区二区三区电影| 国内自拍欧美激情| 精品国产乱码久久久久久虫虫漫画| 亚洲影院色无极综合| 久久精品色欧美aⅴ一区二区| 欧美精品电影在线| 国产69精品久久久久久| 中文字幕不卡av| 日韩av在线免费看| 成人黄色av网站| 欧美激情啊啊啊| 一本久久综合亚洲鲁鲁| 亚洲美女精品久久| 亚洲高清一二三区| 91精品国产高清自在线| 伦理中文字幕亚洲| 91影院在线免费观看视频| 国产精品成人国产乱一区| 日韩第一页在线| 茄子视频成人在线| 97视频网站入口| 麻豆一区二区在线观看| 亚洲国产高潮在线观看| 亚洲aaa激情| 久久精品最新地址| 国产精品扒开腿爽爽爽视频| 亚州欧美日韩中文视频| 国产精品第100页| 欧美亚洲成人xxx| 亚洲电影天堂av|