vue 如何从单页应用改造成多页应用


Posted in Javascript onOctober 23, 2020

最近接到这样一个需求,将之前的三个项目合并成一个,并且要做成后台可配置化,前端动态引入组件的模板化框架。
听起来是不是很拗口。。。我自己当时都蒙了。
简单分析下需求,就是,项目A/B/C的内容是交叉的,有的页面不同,有的页面和组件是公用的,例如A项目多了个人中心及其里面所有内容(最全的一个项目,但是是放在微信中的,需要获取微信授权),B项目是通用版的项目(也就是说可以放在微信,也可以放在app内,不需要获取授权之类的。),C项目是A/B项目中共有的一个页面功能抽取出来了。
所以有的时候比如说这块功能需要调整,那么就得A/B/C三个项目关于这块的功能与页面也要一起调整。
动态化组件的意思就是,D页面由组件1234按照这样的顺序排列构成,同时D页面也供机构5、6、7共同使用,但是机构6突然想要2134这样的顺序,机构7又想要4132这样的顺序。代码依旧是一套,而不是重新拉个分支,然后这个分支将D页面改成2134给机构6,再拉个分支将D页面改成4132给机构7。这样做会增加服务器的压力,每次机构有定制化需求就重新拉分支的话,机构很多的话,容量会不够的。
(好像篇幅有点长,,扯得有点多了)

关于动态组件

这一块简单说一下,如果有不懂的,可以留言,我会把我知道的说出来,我这一块做的主要是<components :is="xxx">配合vuex,来做的。
前端页面改成上述模式,具体的组件排列顺序由后台传过来,比如说请求接口的时候,告诉它这是在D页面,并且把相应的机构号6传过去,后台传给我一个组件数组,moduleList:['2', '1', '3', '4'],然后我前端的<components :is="item" v-for="(item, index) in moduleList" :key="index">会按照moduleList里的组件顺序来动态渲染组件,之前一些父子组件传数据,在这里就变得不太适用了,所以这里的数据改用vuex存储。考虑到vuex在刷新数据丢失的问题,部分比较重要的,不想重新请求的,改用sessionStorage存储。

关于多入口多出口

其实就是最开始的项目入口是App.vuemain.js,打包出来的出入口是index.html,然后现在增加了两个,我这边是增加了genneral.js和genneral.html以及single.jssingle.html

1.首先要更改vue-cli生成的webpack里的参数,声明一下我这个版本的webpack版本还是2.6.x的,比较老了,现在应该都到4.x.x了吧。

vue 如何从单页应用改造成多页应用

PS:路由和store记得要各自独立,因为我这里的vuex很少只涉及一两个模块。并且仅仅是传递数据之类的,所以这里没有做成独立的。

2.修改build/webpack.base.conf.js

vue 如何从单页应用改造成多页应用

3.修改 build/webpack.dev.conf.js

vue 如何从单页应用改造成多页应用

4.修改 build/webpack.prod.conf.js

vue 如何从单页应用改造成多页应用

vue 如何从单页应用改造成多页应用

5.修改 config/index.js

vue 如何从单页应用改造成多页应用

理一下对应关系

main.js ==> App.vue ==> router/index.js A项目
general.js ==> general.vue ==> router/general.js B项目
single.js ==> single.vue ==> router/single.js C项目

部署的时候分三个不同的url

xxxxx/index.html对应A项目
xxxxx/general.html 对应B项目
xxxxx/single.html对应C项目

至于页面中的差异,我是通过v-if来控制,A项目的D页面是否有顶部tab,B项目的D页面是否有底部footer
因为这些页面大致是一样,仅有部分微调。所以改成用v-if来控制。

写了一个demo,方便大家看,仅仅是改了webpack的配置而已,戳这里

以上就是vue 如何从单页应用改造成多页应用的详细内容,更多关于vue 单页改多页的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
学习jquery必备 api中英文对照的chm手册 下载
May 03 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
将鼠标焦点定位到文本框最后(代码分享)
Jan 11 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
Vue2 轮播图slide组件实例代码
May 31 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 Javascript
Vue-axios-post数据后端接不到问题解决
Jan 09 Javascript
el-form 多层级表单的实现示例
Sep 10 Javascript
在vue中获取wangeditor的html和text的操作
Oct 23 #Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 #jQuery
vue项目配置同一局域网可使用ip访问的操作
Oct 23 #Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 #Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 #Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 #Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 #Javascript
You might like
PHP如何抛出异常处理错误
2011/03/02 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
详解python单元测试框架unittest
2018/07/02 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
pyspark 随机森林的实现
2020/04/24 Python
银行职员思想汇报
2013/12/31 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
海飞丝的广告词
2014/03/20 职场文书
2014年新教师工作总结
2014/11/08 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
高考1977观后感
2015/06/04 职场文书
小学三年级作文之写景
2019/11/05 职场文书