<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue 配置多頁面應用的示例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:05:53
        文檔

        vue 配置多頁面應用的示例代碼

        vue 配置多頁面應用的示例代碼:前言: 本文基于vue 2.5.2, webpack 3.6.0(配置多頁面原理類似,實現方法各有千秋,可根據需要進行定制化) vue 是單頁面應用。但是在做大型項目時,單頁面往往無法滿足我們的需求,因此需要配置多頁面應用。 1. 新建 vue 項目 vue init w
        推薦度:
        導讀vue 配置多頁面應用的示例代碼:前言: 本文基于vue 2.5.2, webpack 3.6.0(配置多頁面原理類似,實現方法各有千秋,可根據需要進行定制化) vue 是單頁面應用。但是在做大型項目時,單頁面往往無法滿足我們的需求,因此需要配置多頁面應用。 1. 新建 vue 項目 vue init w

        前言: 本文基于vue 2.5.2, webpack 3.6.0(配置多頁面原理類似,實現方法各有千秋,可根據需要進行定制化)

        vue 是單頁面應用。但是在做大型項目時,單頁面往往無法滿足我們的需求,因此需要配置多頁面應用。

        1. 新建 vue 項目

        vue init webpack vue_multiple_test
        cd vue_multiple_test
        npm install

        2. 安裝 glob

        npm i glob --save-dev

        glob 模塊用于查找符合要求的文件

        3. 目標結構目錄

        .
        ├── README.md
        ├── build
        │ ├── build.js
        │ ├── check-versions.js
        │ ├── logo.png
        │ ├── utils.js
        │ ├── vue-loader.conf.js
        │ ├── webpack.base.conf.js
        │ ├── webpack.dev.conf.js
        │ └── webpack.prod.conf.js
        ├── config
        │ ├── dev.env.js
        │ ├── index.js
        │ └── prod.env.js
        ├── generatePage.sh
        ├── index.html
        ├── package-lock.json
        ├── package.json
        ├── src
        │ ├── assets
        │ │ └── logo.png
        │ └── pages
        │ ├── page1
        │ │ ├── App.vue
        │ │ ├── index.html
        │ │ └── index.js
        │ └── page2
        │ ├── App.vue
        │ ├── index.html
        │ └── index.js
        └── static
        

        其中,pages文件夾用于放置頁面。 page1 和 page2用于分別放置不同頁面,且默認均包含三個文檔: App.vue, index.html, index.js, 這樣在多人協作時,可以更為清晰地明確每個文件的含義。除此之外,此文件也可配置路由。

        4. utils 增加下述代碼:

        const glob = require('glob')
        const PAGE_PATH = path.resolve(__dirname, '../src/pages')
        const HtmlWebpackPlugin = require('html-webpack-plugin')

        其中:PAGE_PATH 為所有頁面所在的文件夾路徑,指向 pages文件夾。

        exports.entries = function () {
         /*用于匹配 pages 下一級文件夾中的 index.js 文件 */
         var entryFiles = glob.sync(PAGE_PATH + '/*/index.js')
         var map = {}
         entryFiles.forEach((filePath) => {
         /* 下述兩句代碼用于取出 pages 下一級文件夾的名稱 */
         var entryPath = path.dirname(filePath)
         var filename = entryPath.substring(entryPath.lastIndexOf('\/') + 1)
         /* 生成對應的鍵值對 */
         map[filename] = filePath
         })
         return map
        }
        

        該方法用于生成多頁面的入口對象,例如本例,獲得的入口對象如下:

        { 
         page1: '/Users/work/learn/vue/vue_multiple_test/src/pages/page1/index.js',
         page2: '/Users/work/learn/vue/vue_multiple_test/src/pages/page2/index.js',
         }
        

        其中:key 為當前頁面的文件夾名稱,

        ```value``` 為當前頁面的入口文件名稱

        exports.htmlPlugin = function () {
         let entryHtml = glob.sync(PAGE_PATH + '/*/index.html')
         let arr = []
         entryHtml.forEach((filePath) => {
         var entryPath = path.dirname(filePath)
         var filename = entryPath.substring(entryPath.lastIndexOf('\/') + 1)
         let conf = {
         template: filePath,
         filename: filename + `/index.html`,
         chunks: ['manifest', 'vendor', filename],
         inject: true
         }
         if (process.env.NODE_ENV === 'production') {
         let productionConfig = {
         minify: {
         removeComments: true, // 移除注釋
         collapseWhitespace: true, // 刪除空白符和換行符
         removeAttributeQuotes: true // 移除屬性引號 
         },
         chunksSortMode: 'dependency' // 對引入的chunk模塊進行排序
         }
         conf = {...conf, ...productionConfig} //合并基礎配置和生產環境專屬配置
         }
         arr.push(new HtmlWebpackPlugin(conf))
         })
         return arr
        }
        

        4. webpack.base.conf.js修改入口如下:

        ```entry: utils.entries()```

        5. webpack.dev.conf.js 刪除下述代碼

        new HtmlWebpackPlugin({
         filename: 'index.html',
         template: 'index.html',
         inject: true
        })
        

        6. webpack.prod.conf.js 刪除下述代碼

        new HtmlWebpackPlugin({
         filename: config.build.index,
         template: 'index.html',
         inject: true,
         minify: {
         removeComments: true,
         collapseWhitespace: true,
         removeAttributeQuotes: true
         },
         chunksSortMode: 'dependency'
        })
        

        7. 構建結果

        【dev】開發環境下,執行 npm run dev 訪問:
        
         http://localhost:8080/page1/index.html
         http://localhost:8080/page2/index.html
        
         即為訪問不同的頁面
        
        
        【production】生產環境下,執行 npm run build, 生成的文件目錄如下所示:
        
        │ ├── dist
        │ ├── page1
        │ │ └── index.html
        │ ├── page2
        │ │ └── index.html
        │ └── static
        │ ├── css
        │ │ ├── page1.86a4513a3e04c0dcb73e6d6aea4580e4.css
        │ │ ├── page1.86a4513a3e04c0dcb73e6d6aea4580e4.css.map
        │ │ ├── page2.86a4513a3e04c0dcb73e6d6aea4580e4.css
        │ │ └── page2.86a4513a3e04c0dcb73e6d6aea4580e4.css.map
        │ └── js
        │ ├── manifest.0c1cd46d93b12dcd0191.js
        │ ├── manifest.0c1cd46d93b12dcd0191.js.map
        │ ├── page1.e2997955f3b0f2090b7a.js
        │ ├── page1.e2997955f3b0f2090b7a.js.map
        │ ├── page2.4d41f3b684a56847f057.js
        │ ├── page2.4d41f3b684a56847f057.js.map
        │ ├── vendor.bb335a033c3b9e5d296a.js
        │ └── vendor.bb335a033c3b9e5d296a.js.map
        
        

        8.【懶人福利】使用shell腳本自動構建基礎頁面

        在項目文件下新建shell腳本generatePage.sh, 并在腳本中寫入下述代碼:

        #!/bin/bash
        # 打開 pages 文件夾,并創建文件
        cd src/pages
        for file in $(ls)
        do
         if [ $file == $1 ];then
         echo $1' 文件已存在, 請使用其他名字'
         exit
         fi
        done
        mkdir $1
        cd $1
        # 生成 index.html
        echo "" > index.html
        echo '<!DOCTYPE html>
         <html>
         <head>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width,initial-scale=1.0">
         <title></title>
         </head>
         <body>
         <div id="app"></div>
         <!-- built files will be auto injected -->
         </body>
        </html>' > index.html
        
        # 生成 App.vue
        echo "" > App.vue
        echo '<template>
         <div id="app">
         </div>
        </template>
        
        <script>
        export default {
         name: "App"
        }
        </script>
        
        <style>
        #app {}
        </style>' > App.vue
        
        # 生成 index.js
        echo "" > index.js
        echo "import Vue from 'vue'
        import App from './App'
        
        Vue.config.productionTip = false
        
        /* eslint-disable no-new */
        new Vue({
         el: '#app',
         components: { App },
         template: '<App/>'
        })" > index.js
        
        

        之后在項目路徑下輸入下述命令:

        bash generatePage.sh page4

        即可在pages文件夾下生成一個名為page4的新頁面。還可以通過自定義shell腳本的內容寫入路由等,以實現定制需求。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue 配置多頁面應用的示例代碼

        vue 配置多頁面應用的示例代碼:前言: 本文基于vue 2.5.2, webpack 3.6.0(配置多頁面原理類似,實現方法各有千秋,可根據需要進行定制化) vue 是單頁面應用。但是在做大型項目時,單頁面往往無法滿足我們的需求,因此需要配置多頁面應用。 1. 新建 vue 項目 vue init w
        推薦度:
        標簽: VUE 應用 例子
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人免费ā片在线观看| 亚洲乱码日产精品一二三| 免费无码专区毛片高潮喷水| 亚洲国产成人91精品| 亚洲大尺度无码无码专线一区| 99在线视频免费观看视频| 永久免费观看的毛片的网站| 91丁香亚洲综合社区| 日韩精品成人无码专区免费| 亚洲精品狼友在线播放| 中国一级特黄的片子免费 | 日韩亚洲产在线观看| 特级淫片国产免费高清视频| 亚洲av日韩专区在线观看| 又粗又大又硬又爽的免费视频 | 亚洲中文字幕乱码熟女在线| 成人性生活免费视频| 国产免费卡一卡三卡乱码| 亚洲a∨无码男人的天堂| 最新猫咪www免费人成| 在线观看日本亚洲一区| 四虎永久免费地址在线网站| 免费一区二区无码视频在线播放 | 国产亚洲日韩在线三区| 成人性做爰aaa片免费看| 亚洲精品人成电影网| 在线观看免费宅男视频| 特级毛片在线大全免费播放| 亚洲av伊人久久综合密臀性色 | 在线免费观看h片| 日本中文一区二区三区亚洲| 一级日本高清视频免费观看| 亚洲成AV人片在线观看无| 国内精自视频品线六区免费| 亚洲男人的天堂网站| 亚洲精品自产拍在线观看| 国产卡一卡二卡三免费入口| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲国产精品久久久天堂 | 免费一级毛片女人图片| 久久成人免费播放网站|