JavaScript 进阶营程序员Web前端之路

Vue 定制模块化主题—开篇

2018-04-28  本文已影响77人  Ricoywang

公司项目最近提了一个很喜欢的需求,然后项目平台名字也高大上了,定制化大数据平台。根据不同的功能区,将整个页面划分为8个小的功能模块,然后在每个功能模块右上角有一个切换按钮,可以切换不同的模块。

一、问题

需要解决的问题

产品迭代后期、可能遇到问题

二、如何实现

主要分为两部分

.文件目录
+-- readme.md
+-- index.html
+-- src
|   +-- app.vue
|   +-- main.js
|   +-- router
     |   +-- index.js
|   +-- components
     |   +-- vbody
         |   +-- vtop
              |   +-- vcharts.vue
              |   +-- vprofiles.vue
         |   +-- vbottom
     |   +-- vechart
|   +-- page
     |   +-- home
          |   +-- header
          |   +-- body
               |   +-- top.vue
               |   +-- bottom.vue
+-- main.js
管理以及储存用户子模块状态
let topBody = resolve => {require.ensure(['@/pages/home/topBody.vue'], () => {resolve(require('@/pages/home/topBody.vue'))})}
//客流分析__bar
let vtopOne = resolve => {require.ensure(['@/pages/home/vcomponent/vtopOne.vue'], () => {resolve(require('@/pages/home/vcomponent/vtopOne.vue'))})}
let vprofies = resolve => {require.ensure(['@/pages/home/vcomponent/vprofies.vue'], () => {resolve(require('@/pages/home/vcomponent/vprofies.vue'))})}

//存放当前模块状态,数组字符串
let status =[
    'vtopOne',
    'topBody',
    'vprofies',
    ]
let conponets={}
//字符串转对象变量
for (var i = 0; i < status.length; i++) {
let index=status[i]
conponets[index]=eval(index)
} 
export default conponets;

CSS部分

项目需求:
单页面展示(1200px、1460px、1920px宽度)在缩放过程中自适应;
由于屏幕跨度大,字体也要自适应

一、 项目演变

项目问题:页面布局采用百分比布局的方式,但开发过程中逐步出现了问题,如果客户打开页面并不是全屏,高度不是完全打开,主页面中的模块内容会出现很严重的形变问题,CSS很容易,但用好CSS真的不容易。好像又偏题了 * . *

@media screen and (max-width: 1079px) {html{font-size:10px;}}
@media screen and (min-width: 1080px) {html{font-size:12px;}}
@media screen and (min-width: 1270px) {html{font-size:14px;}}
@media screen and (min-width: 1460px) {html{font-size:16px;}}
@media screen and (min-width: 1599px) {html{font-size:18px;}}
@media screen and (min-width: 1910px) {html{font-size:20px;}}

使用效果:对于自适应的布局主体部分使用效果还是不错,但还有一个组件内部字体,以及大量被使用的echarts图表字体的适配问题还没有被解决

使用效果:减少很大部分需要做考虑适配的地方,将更多的精力专注于想要的效果中,解放生产力。虽然现在主流浏览器对Flex支持已经很不错了,但还是会遇到一些坑,不过就性价比来说,都是小事,要根据实际开发过程中项目需求来自行判断。

使用效果:适度使用,有利于身心健康

参考资料
CSS中强大的EM
一个完整的Flexbox指南


the end
                               By Rico

上一篇 下一篇

猜你喜欢

热点阅读