<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
        主站蜘蛛池模板: 午夜亚洲国产理论秋霞| 成人免费网站在线观看| 国产亚洲精品激情都市| 免费国产va视频永久在线观看| 最新中文字幕免费视频| 亚洲三级视频在线| 久久笫一福利免费导航| 亚洲不卡中文字幕| 青春禁区视频在线观看直播免费| 亚洲中文无码线在线观看| 亚洲高清免费在线观看| 亚洲日本va在线观看| 国产精品国产免费无码专区不卡 | 国产福利免费视频| 久久综合亚洲色HEZYO国产| 中文字幕在线视频免费观看| 亚洲啪啪AV无码片| 最近2019中文字幕免费大全5| 亚洲一卡2卡3卡4卡国产网站 | A国产一区二区免费入口| 亚洲精品乱码久久久久久| 国内永久免费crm系统z在线| 亚洲人成电影在在线观看网色| 91短视频免费在线观看| 亚洲精品无AMM毛片| 亚洲一区二区精品视频| 久9这里精品免费视频| 亚洲国产精品乱码在线观看97| 国产无人区码卡二卡三卡免费| jizzjizz亚洲日本少妇| 亚洲中文字幕无码一区二区三区| 少妇人妻偷人精品免费视频| 亚洲av无码电影网| 亚洲人成无码网WWW| 在线观看www日本免费网站| 久久亚洲AV成人无码国产电影| 亚洲AV伊人久久青青草原| 久久九九AV免费精品| 日韩亚洲国产高清免费视频| 亚洲国产综合无码一区二区二三区 | 精品久久久久成人码免费动漫|