<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精品免费不卡在线观看| 亚洲短视频男人的影院| 亚洲一级免费视频| 亚洲av无码国产综合专区| 毛片免费观看视频| 337P日本欧洲亚洲大胆艺术图| www国产亚洲精品久久久日本| 亚洲一级片免费看| 亚洲动漫精品无码av天堂| 午夜精品射精入后重之免费观看 | 亚洲男女一区二区三区| 无人在线观看免费高清视频 | 51精品视频免费国产专区| 亚洲人成77777在线播放网站不卡| 四色在线精品免费观看| 免费国产草莓视频在线观看黄| 国产亚洲av片在线观看18女人| 免费黄色电影在线观看| 67194在线午夜亚洲| 国产免费69成人精品视频| 精品国产免费一区二区三区| 亚洲福利在线观看| 全免费a级毛片免费看不卡| 亚洲免费一区二区| 亚洲国产精品综合久久网各| 四虎国产精品免费视| 免费网站看av片| 久久久久亚洲精品无码网址色欲 | 亚洲高清视频免费| 四虎影视精品永久免费| 人妻无码久久一区二区三区免费 | 97在线观看永久免费视频| 特黄特色的大片观看免费视频| 亚洲国产精品一区二区久久hs| 日本精品人妻无码免费大全|