最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何搭建多頁面多系統(tǒng)應用

 更新時間:2020年06月17日 10:52:53   作者:yw00yw  
這篇文章主要為大家詳細介紹了vue搭建多頁面多系統(tǒng)應用的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了vue如何搭建多頁面多系統(tǒng)應用,供大家參考,具體內(nèi)容如下

一、多頁面多系統(tǒng)應用

1、思路

使用Vue搭建多頁應用。所有系統(tǒng)都在同一目錄下。配置多入口多出口。每個系統(tǒng)之間可以鏈接。每個系統(tǒng)內(nèi)依然采用Vue單頁應用開發(fā)。

2、組件復用性

可以將所有的系統(tǒng)公共組件放到系統(tǒng)目錄最外面,以達到組件復用。在系統(tǒng)內(nèi)部依然將自己獨立的組件封裝,復用。這樣可以最大限度的提高組件的復用性。

3、路由

每個系統(tǒng)單獨進行路由配置

4、數(shù)據(jù)管理

每個系統(tǒng)數(shù)據(jù)倉庫單獨處理

5、目錄結(jié)構(gòu)

6、效果

在做Vue項目的時候,需要用對多個類似系統(tǒng)做一個集成。想過很多種方法,比如:完全單頁應用,分開獨立應用,最終還是測試了一下多頁面開發(fā)多系統(tǒng)。

準備工作:

使用vue-cli搭建最基本的vue項目。

修改webpack配置:

在這一步里我們需要改動的文件都在build文件下,分別是:

  • utils.js
  • webpack.base.conf.js
  • webpack.dev.conf.js
  • webpack.prod.conf.js
  • 我就按照順序放出完整的文件內(nèi)容,然后在做修改或添加的位置用注釋符標注出來

utils.js

最最后添加如下代碼:

/* 這里是添加的部分 ---------------------------- 開始 */

// glob是webpack安裝時依賴的一個第三方模塊,還模塊允許你使用 *等符號, 例如lib/*.js就是獲取lib文件夾下的所有js后綴名的文件
var glob = require('glob')
 // 頁面模板
var HtmlWebpackPlugin = require('html-webpack-plugin')
 // 取得相應的頁面路徑,因為之前的配置,所以是src文件夾下的pages文件夾
var PAGE_PATH = path.resolve(__dirname, '../src/system')
 // 用于做相應的merge處理
var merge = require('webpack-merge')


//多入口配置
// 通過glob模塊讀取pages文件夾下的所有對應文件夾下的js后綴文件,如果該文件存在
// 那么就作為入口處理
exports.entries = function() {
 var entryFiles = glob.sync(PAGE_PATH + '/*/*.js')
 var map = {}
 entryFiles.forEach((filePath) => {
  var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
  map[filename] = filePath
 })
 return map
}

//多頁面輸出配置
// 與上面的多頁面入口配置相同,讀取pages文件夾下的對應的html后綴文件,然后放入數(shù)組中
exports.htmlPlugin = function() {
  let entryHtml = glob.sync(PAGE_PATH + '/*/*.html')
  let arr = []
  entryHtml.forEach((filePath) => {
   let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
   let conf = {
    // 模板來源
    template: filePath,
    // 文件名稱
    filename: filename + '.html',
    // 頁面模板需要加對應的js腳本,如果不加這行則每個頁面都會引入所有的js腳本
    chunks: ['manifest', 'vendor', filename],
    inject: true
   }
   if (process.env.NODE_ENV === 'production') {
    conf = merge(conf, {
     minify: {
      removeComments: true,
      collapseWhitespace: true,
      removeAttributeQuotes: true
     },
     chunksSortMode: 'dependency'
    })
   }
   arr.push(new HtmlWebpackPlugin(conf))
  })
  return arr
 }
 /* 這里是添加的部分 ---------------------------- 結(jié)束 */

webpack.base.conf.js

module.exports = {
 context: path.resolve(__dirname, '../'),
 /* 修改部分 ---------------- 開始 */
 entry: utils.entries(),
 /* 修改部分 ---------------- 結(jié)束 */
 output: {
  path: config.build.assetsRoot,
  filename: '[name].js',
  publicPath: process.env.NODE_ENV === 'production' ?
   config.build.assetsPublicPath : config.dev.assetsPublicPath
 }
 ...
 }

webpack.dev.conf.js

plugins: [
  new webpack.DefinePlugin({
   'process.env': require('../config/dev.env')
  }),
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  /* 注釋這個區(qū)域的文件 ------------- 開始 */
  // new HtmlWebpackPlugin({
  // filename: 'index.html',
  // template: 'index.html',
  // inject: true
  // }),
  /* 注釋這個區(qū)域的文件 ------------- 結(jié)束 */
  // copy custom static assets
  new CopyWebpackPlugin([{
   from: path.resolve(__dirname, '../static'),
   to: config.dev.assetsSubDirectory,
   ignore: ['.*']
  }])

  /* 添加 .concat(utils.htmlPlugin()) ------------------ */
 ].concat(utils.htmlPlugin())

webpack.prod.conf.js

/* 注釋這個區(qū)域的內(nèi)容 ---------------------- 開始 */
 // new HtmlWebpackPlugin({
 // filename: config.build.index,
 // template: 'index.html',
 // inject: true,
 // minify: {
 //  removeComments: true,
 //  collapseWhitespace: true,
 //  removeAttributeQuotes: true
 //  // more options:
 //  // https://github.com/kangax/html-minifier#options-quick-reference
 // },
 // // necessary to consistently work with multiple chunks via CommonsChunkPlugin
 // chunksSortMode: 'dependency'
 // }),
 /* 注釋這個區(qū)域的內(nèi)容 ---------------------- 結(jié)束 */

添加:

目錄結(jié)構(gòu)介紹

  • src就是我所使用的工程文件了,assets,components,system分別是靜態(tài)資源文件、組件文件、頁面文件。
  • 前兩個就不多說,主要是頁面文件里,我目前是按照項目的模塊分的文件夾,你也可以按照你自己的需求調(diào)整。然后在每個模塊里又有三個內(nèi)容:vue文件,js文件和html文件。這三個文件的作用就相當于做spa單頁面應用時,根目錄的index.html頁面模板,src文件下的main.js和app.vue的功能。
  • 原先,入口文件只有一個main.js,但現(xiàn)在由于是多頁面,因此入口頁面多了,我目前就是兩個:index和system2,之后如果打包,就會在dist文件下生成兩個HTML文件:index.html和system2.html(可以參考一下單頁面應用時,打包只會生成一個index.html,區(qū)別在這里)。

注意的地方

配置js時候:

import Vue from 'Vue'
import cell from './cell.vue'

/* eslint-disable no-new */
new Vue({
 el: '#app',
 render: h => h(cell)
})

頁面跳轉(zhuǎn):

可以寫成: <a href='system2.html'></a>

打包后的資源路徑

├── dist
│   ├── js
│   ├── css
│   ├── index.html
│   └── system2.html

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue2中provide/inject的使用與響應式傳值詳解

    vue2中provide/inject的使用與響應式傳值詳解

    Vue中 Provide/Inject實現(xiàn)了跨組件的通信,下面這篇文章主要給大家介紹了關(guān)于vue2中provide/inject的使用與響應式傳值的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Vue實現(xiàn)模糊查詢-Mysql數(shù)據(jù)庫數(shù)據(jù)

    Vue實現(xiàn)模糊查詢-Mysql數(shù)據(jù)庫數(shù)據(jù)

    這篇文章主要介紹了基于Vue實現(xiàn)Mysql數(shù)據(jù)庫數(shù)據(jù)模糊查詢,下面文章我們主要實現(xiàn)的是輸入框中輸入數(shù)據(jù),根據(jù)輸入的結(jié)果模糊搜索數(shù)據(jù)庫對應內(nèi)容,實現(xiàn)模糊查詢,感興趣的小伙伴可以進入文章我們一起學習
    2021-12-12
  • 詳解利用eventemitter2實現(xiàn)Vue組件通信

    詳解利用eventemitter2實現(xiàn)Vue組件通信

    這篇文章主要介紹了詳解利用eventemitter2實現(xiàn)Vue組件通信,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vue2.0中g(shù)oods選購欄滾動算法的實現(xiàn)代碼

    vue2.0中g(shù)oods選購欄滾動算法的實現(xiàn)代碼

    這篇文章主要介紹了vue2.0中g(shù)oods選購欄滾動算法的實現(xiàn)代碼,需要的朋友可以參考下
    2017-05-05
  • vue?elementUi中的tabs標簽頁使用教程

    vue?elementUi中的tabs標簽頁使用教程

    Tabs 組件提供了選項卡功能,默認選中第一個標簽頁,下面這篇文章主要給大家介紹了關(guān)于vue?elementUi中的tabs標簽頁使用的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • Vue頁面監(jiān)聽鍵盤按鍵的方法總結(jié)

    Vue頁面監(jiān)聽鍵盤按鍵的方法總結(jié)

    在Vue頁面中,可以使用多種方法來監(jiān)聽鍵盤按鍵,這篇文章主要為大家整理了五種常用的方法,文中的示例代碼講解詳細,需要的小伙伴可以參考下
    2023-10-10
  • 解決vue的component標簽渲染問題

    解決vue的component標簽渲染問題

    這篇文章主要介紹了解決vue的component標簽渲染問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳解Vue 中 extend 、component 、mixins 、extends 的區(qū)別

    詳解Vue 中 extend 、component 、mixins 、extends 的區(qū)別

    這篇文章主要介紹了Vue 中 extend 、component 、mixins 、extends 的區(qū)別,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-12-12
  • Vue實現(xiàn)滑動驗證功能

    Vue實現(xiàn)滑動驗證功能

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)滑動驗證功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue3中使用v-model實現(xiàn)父子組件數(shù)據(jù)同步的三種方案

    vue3中使用v-model實現(xiàn)父子組件數(shù)據(jù)同步的三種方案

    這篇文章主要介紹了vue3中使用v-model實現(xiàn)父子組件數(shù)據(jù)同步的三種方案,如果只有一個匿名v-model的傳遞的話,可以使用vue3.3新添加的編譯宏,defineModel來使用,每種方案結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-10-10

最新評論

安徽省| 铅山县| 安远县| 含山县| 通辽市| 板桥市| 大化| 佛坪县| 微山县| 三明市| 赤峰市| 喀喇| 莱西市| 青海省| 屯留县| 灵丘县| 凤台县| 房山区| 濮阳市| 清丰县| 武强县| 镇沅| 安国市| 伊宁市| 泰安市| 沙河市| 左云县| 邵阳县| 武城县| 朝阳市| 万荣县| 新化县| 平谷区| 界首市| 河津市| 苏尼特左旗| 治县。| 安溪县| 古浪县| 泸溪县| 桑日县|