vue如何搭建多页面多系统应用


Posted in Javascript onJune 17, 2020

本文为大家分享了vue如何搭建多页面多系统应用,供大家参考,具体内容如下

一、多页面多系统应用

1、思路

使用Vue搭建多页应用。所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。

2、组件复用性

可以将所有的系统公共组件放到系统目录最外面,以达到组件复用。在系统内部依然将自己独立的组件封装,复用。这样可以最大限度的提高组件的复用性。

3、路由

每个系统单独进行路由配置

4、数据管理

每个系统数据仓库单独处理

5、目录结构

vue如何搭建多页面多系统应用

6、效果

vue如何搭建多页面多系统应用

vue如何搭建多页面多系统应用

在做Vue项目的时候,需要用对多个类似系统做一个集成。想过很多种方法,比如:完全单页应用,分开独立应用,最终还是测试了一下多页面开发多系统。

准备工作:

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

修改webpack配置:

在这一步里我们需要改动的文件都在build文件下,分别是:

  • utils.js
  • webpack.base.conf.js
  • webpack.dev.conf.js
  • webpack.prod.conf.js
  • 我就按照顺序放出完整的文件内容,然后在做修改或添加的位置用注释符标注出来

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后缀文件,然后放入数组中
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
 }
 /* 这里是添加的部分 ---------------------------- 结束 */

webpack.base.conf.js

module.exports = {
 context: path.resolve(__dirname, '../'),
 /* 修改部分 ---------------- 开始 */
 entry: utils.entries(),
 /* 修改部分 ---------------- 结束 */
 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
  /* 注释这个区域的文件 ------------- 开始 */
  // new HtmlWebpackPlugin({
  // filename: 'index.html',
  // template: 'index.html',
  // inject: true
  // }),
  /* 注释这个区域的文件 ------------- 结束 */
  // 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

/* 注释这个区域的内容 ---------------------- 开始 */
 // 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'
 // }),
 /* 注释这个区域的内容 ---------------------- 结束 */

添加:

vue如何搭建多页面多系统应用

目录结构介绍

  • src就是我所使用的工程文件了,assets,components,system分别是静态资源文件、组件文件、页面文件。
  • 前两个就不多说,主要是页面文件里,我目前是按照项目的模块分的文件夹,你也可以按照你自己的需求调整。然后在每个模块里又有三个内容:vue文件,js文件和html文件。这三个文件的作用就相当于做spa单页面应用时,根目录的index.html页面模板,src文件下的main.js和app.vue的功能。
  • 原先,入口文件只有一个main.js,但现在由于是多页面,因此入口页面多了,我目前就是两个:index和system2,之后如果打包,就会在dist文件下生成两个HTML文件:index.html和system2.html(可以参考一下单页面应用时,打包只会生成一个index.html,区别在这里)。

注意的地方

配置js时候:

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

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

页面跳转:

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

打包后的资源路径

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
JS函数重载的解决方案
May 13 Javascript
使用js dom和jquery分别实现简单增删改
Sep 11 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
整理Javascript流程控制语句学习笔记
Nov 29 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
vue2.0实现列表数据增加和删除
Jun 17 #Javascript
使用next.js开发网址缩短服务的方法
Jun 17 #Javascript
vue实现前端分页完整代码
Jun 17 #Javascript
JS实现网站楼层导航效果代码实例
Jun 16 #Javascript
利用webpack理解CommonJS和ES Modules的差异区别
Jun 16 #Javascript
JS 5种遍历对象的方式
Jun 16 #Javascript
js实现小球在页面规定的区域运动
Jun 16 #Javascript
You might like
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
一段实用的php验证码函数
2016/05/19 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
致短跑运动员广播稿
2014/01/09 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
合作意向书
2014/07/30 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
关于召开会议的通知
2015/04/15 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python
ant design vue的form表单取值方法
2022/06/01 Vue.js