美文网首页Vue相关
2018-10-16近期vue开发总结

2018-10-16近期vue开发总结

作者: ZZES_ZCDC | 来源:发表于2018-10-16 20:32 被阅读51次

问题一: 首次加载动画

由于单页面,不可避免第一次加载需要耗时, 所以需要搞个加载动画

解决:
两步走,

  • 第一步:
    在index.html中写下动画, idbouncing-loader的那个div
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>admin</title>
    <style media="screen" type="text/css">
      @keyframes bouncing-loader {
        from {
          opacity: 1;
          transform: translateY(0);
        }
        to {
          opacity: 0.1;
          transform: translateY(-1rem);
        }
      }
      #bouncing-loader {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100vh;
      }
      #bouncing-loader > div {
        width: 1rem;
        height: 1rem;
        margin: 3rem 0.2rem;
        background: #1890ff;
        border-radius: 50%;
        animation: bouncing-loader 0.6s infinite alternate;
      }
      #bouncing-loader > div:nth-child(2) {
        animation-delay: 0.2s;
      }
      #bouncing-loader > div:nth-child(3) {
        animation-delay: 0.4s;
      }
    </style>
  </head>
  <body>
    <div id="bouncing-loader">
      <div></div>
      <div></div>
      <div></div>
    </div>
    <div id="app"></div>
  </body>
</html>
  • 第二部:
    App.vue中添加加载完页面将加载动画的dom移除的代码, 需要加在created的生命周期中
created() {
      document.body.removeChild(document.getElementById('bouncing-loader'))
},

问题二: 页面加载进度条

解决:
使用nprogress
在路由里进行配置

router.beforeEach((to, from, next) => {
  NProgress.start() // start progress bar
  if (to.path === '/login') {
    if (!store.state.user) {
      next()
      NProgress.done()
    } else {
      next({path: '/'})
      NProgress.done()
    }
  } else {
    if (store.state.user) {
      next()
      NProgress.done()
    } else {
      next({path: '/login'})
      NProgress.done()
    }
  }
})

router.afterEach( () => {
  NProgress.done()
})

参考资料:
http://ricostacruz.com/nprogress/

问题三: 页面切换动画

解决:
使用vue的组件

<transition name="fade-transform" mode="out-in">
  <router-view></router-view>
</transition>
.fade-transform-leave-active,
.fade-transform-enter-active {
  transition: all .3s;
}
.fade-transform-enter {
  opacity: 0;
  transform: translateX(-10px);
}
.fade-transform-leave-to {
  opacity: 0;
  transform: translateX(10px);
}

参考资料:
https://cn.vuejs.org/v2/guide/transitions.html

问题四: 表格上方的过滤表单, 不想点按钮搜索

如图

image.png
解决:
使用watch即可
如果监控的时对象,需要使用 deep:true
watch: {
    query: {
      handler: function () {
        // 请求数据的方法
      },
      deep: true
    }
  }

当然如果这样会导致抖动请求影响性能
可以引入lodash的 debounce

参考资料:
https://cn.vuejs.org/v2/api/#vm-watch
https://www.lodashjs.com/docs/4.17.5.html#debounce

问题五: 维护登录态

解决:
使用localstorage, 需要再加个自己的定时
登录的时候, 存入用户信息和失效时间

localStorage.setItem('admin_user', JSON.stringify(user))
localStorage.setItem('admin_user_invalid', (new Date()).setTime(new Date().getTime()+24*60*60*1000))

在页面加载时,比对时间,判断是否过期, 在main.js

let nowTime = new Date().getTime()
let validTime = JSON.parse(Vue.localStorage.get('admin_user_invalid'))
if (validTime === undefined || nowTime > validTime) {
  // 过期
} else {
  // 没过期
}

问题六: 页面整体高度撑起来

原来用的百分号
解决:
使用vhcalc()

参考资料:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/length
https://developer.mozilla.org/zh-CN/docs/Web/CSS/calc

问题七: axios使用get方式下载文件

由于需要token,所以需要用ajax
解决:

axios.get(`/download`).then((response) => {
  let blob = new Blob([response], { type: '文件类型例如application/pdf' } ),
  url = window.URL.createObjectURL(blob)
  window.open(url); 
})

问题八: build后给后台留个更改接口的地方

一直百度,发现什么写到配置文件, 然后请求来初始化, 感觉很麻烦
解决:
直接在index.html里写个变量不就行了....

相关文章

  • 2018-10-16近期vue开发总结

    问题一: 首次加载动画 由于单页面,不可避免第一次加载需要耗时, 所以需要搞个加载动画 解决:两步走, 第一步:在...

  • 记一次需求Bug的踩坑-element-plus el-popo

    近期公司开发新项目,需要基于vue3+element-plus开发,一直在用vue2开发,刚开始听到还挺焦虑,不过...

  • Vue开发新手遇坑

    Vue开发新手遇坑总结自己开发vue遇到的坑。 a里面不会传href解决:href签名加个v-bind: vue打...

  • 近期vue开发相关问题

    问题一: 子组件传值给父组件,当使用elementUI是,modal弹框中需要一个form表单,所以我把form表...

  • vue面试相关

    javascript面试总结 谈谈你对MVVM开发模式的理解 Vue 有哪些指令? 简述Vue的响应式原理 Vue...

  • VScode 使用技巧笔记

    一、vue开发技巧: 使用技巧 常用快捷键总结 v开头 vue文件:页面结构vbase、vbase-ts、vbas...

  • 史上最强vue总结~万字长文---面试开发全靠它了

    史上最强vue总结~万字长文---面试开发全靠它了

  • VUE学习目录汇总

    ps:针对近期小伙伴们的要求:俺写的关于vue的能不能总结个目录。 vue学习交流填坑QQ群:585472963 ...

  • Vue优化9法

    总结2019年3月vue开发大会Cuillaume Chau发表的Vue性能优化9法 其中包括: 函数型组件 子组...

  • iOS中web app调试(mac).md

    [TOC] 近期公司vue项目开发,目的是一次开发,多平台发布,其中就包含了app,app采用离线web方案,将v...

网友评论

    本文标题:2018-10-16近期vue开发总结

    本文链接:https://www.haomeiwen.com/subject/adqkzftx.html