使用vue开发移动端管理后台的注意事项


Posted in Javascript onMarch 07, 2019

独立完成一个移动端项目(不是很明白为何会有这样的商品管理后台),还是有些经验不足,包括对产品的全局思考,对插件的选择等,都有考虑不周的缺点,导致自己中途想换图形界面插件,浪费了点时间,这里记录下,总结下经验,理一下思路。

1.对于项目的一些心得与体会

首先的一点,就是,对于图形界面框架的选型,这个很重要,对于一项目来说,开始动手前就要对项目的设计图有个完整的了解,以便于自己选择插件或者框架;

然后就是,对于交互性操作,比如:上传图片,预览图片啥的,应该选择是否是用图形界面框架来实现还是另选专门的插件来实现

在完成项目中,我又新学到了上传图片插件vue-core-image-upload,移动端富文本编辑器vue-quill-editor

还有个地址的三级联动mt-picker,(是基于mint-ui图形界面框架的)

2.rem与px的转换

从同事传授中获到的经验,对于rem与px的转换,就是在index.html模板文件中加入下面的脚本,然后就是1rem=100px(这个可能不准确,有更好的方法,各位大佬请在评论中留下,感激不尽)

<script type="text/javascript">
 document.getElementsByTagName("html")[0].style.fontSize = 100 / 750 * window.screen.width + "px";
</script>

3.对于上传图片插件vue-core-image-upload中遇到的坑

对于跨域问题,有好多方法可以解决,这里讲的挺多的前端跨域解决方法

还有就是后台设置响应头access-control-allow-origin可以指定特定的域名,我这里的后台设置的就是access-control-allow-origin:*,就是因为这样,用这个上传图片的插件就会报错

使用vue开发移动端管理后台的注意事项

Access to XMLHttpRequest at 'https://....' from origin 'http://localhost:8080' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

这个问题我蒙圈了好久,和后台也讲了,就是处于蒙圈状态,已经允许跨域了,怎么还报错呢?很烦

然后,终于找了个方法解决(有用过其他的上传插件,感觉不好用,代码或者思路好乱)

其实这个插件中的文档也有提示,只是刚用,还不是很会

使用vue开发移动端管理后台的注意事项

就是在使用这个插件的代码中加上这个字段就可以了

<vue-core-image-upload
  class="btn btn-primary"
  :crop="false"
  input-of-file="file"
  @imageuploaded="loadMainImg"
  :max-file-size="5242880"
  :url="serverUrl"
  :credentials="false" //允许携带cookie
></vue-core-image-upload>

对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“”。这是因为请求的首部中携带了 Cookie 信息,如果 Access-Control-Allow-Origin 的值为“”,请求将会失败。

也就是说Access-Control-Allow-Credentials设置为true的情况下

Access-Control-Allow-Origin不能设置为*

4.基于mint-ui的三级地址选择效果图

使用vue开发移动端管理后台的注意事项

template文件

<div class="modal" @click="handleCloseAddress">
 <div class="cateContainer" @click.stop>
  <div class="operateBtn">
   <div class="cancelBtn" @click="handleCloseAddress">取消</div>
   <div class="confirmBtn" @click="handleCloseAddress">确定</div>
  </div>
  <mt-picker class="addressPicker" :slots="myAddressSlots" @change="onAddressChange"></mt-picker>
 </div>
</div>

js文件

json文件地址地址文件

// 定义一个包含中国省市区信息的json文件
import addressJson from '@/assets/common/address'
export default {
  data() {
    return {
      myAddressSlots: [
       {
        flex: 1,
        values: Object.keys(addressJson),
        className: 'slot1',
        textAlign: 'center'
       }, {
        divider: true,
        content: '-',
        className: 'slot2'
       }, {
        flex: 1,
        values: ['市辖区'],
        className: 'slot3',
        textAlign: 'center'
       },
       {
        divider: true,
        content: '-',
        className: 'slot4'
       },
       {
        flex: 1,
        values: ['东城区'],
        className: 'slot5',
        textAlign: 'center'
       }
      ],
      province:'省',
      city:'市',
      county:'区/县',
    }
  },
  methods: {
    onAddressChange(picker, values) {
      if(addressJson[values[0]]) {
       picker.setSlotValues(1, Object.keys(addressJson[values[0]]));
       picker.setSlotValues(2, addressJson[values[0]][values[1]]);
       this.province = values[0];
       this.city = values[1];
       this.county = values[2];
      }
   },
  }
}

5.关于对是否登录的处理

开始也有做过登录的管理后台,不过,在进行登录时,总会一闪过登录的界面,这种感觉很不好,在这里记录下相比之前更好点的方法

在main.js文件中添加对router的钩子函数

router.beforeEach((to, from, next) => {
 let token = localStorage.getItem('token');
 if (!token && to.path !== '/login') {
  next('/login');
 } else {
  next();
 }
});

通过判断缓存里是否有token来进行路由的跳转

相对于之前的那种方法,这里对路由的跳转进行的拦截,在路由进行跳转前,进行判断

6.上拉加载mescroll.js插件

这里对于分页加载第二页使用的上拉加载的插件还是用了原来的插件,还是感觉挺好用的

这里有讲述上拉加载,下拉刷新,滚动无限加载

7.移动端富文本插件Vue-Quill-Editor

效果图

使用vue开发移动端管理后台的注意事项

这里有相关案例代码vue-quill-editor

<template>
  <quill-editor
   v-model="richTextContent"
   ref="myQuillEditor"
   :options="editorOption"
   @change="onEditorChange($event)">
  </quill-editor>
</template>
<script>
 import { quillEditor } from "vue-quill-editor";
 import 'quill/dist/quill.core.css';
 import 'quill/dist/quill.snow.css';
 import 'quill/dist/quill.bubble.css';
  export default{
    data() {
      return {}
    },
    methods: {
      onEditorChange(e) {}
    }
  }
</script>

响应事件

onEditorChange(e){
  console.log(e)
  this.richTextContent = e.html;
},

8.移动端图片预览插件

vue-picture-preview

<img :src="url" v-preview="url" preview-nav-enable="false" />

需要在app.vue中加入如下代码

<lg-preview></lg-preview>

效果图

使用vue开发移动端管理后台的注意事项

使用vue开发移动端管理后台的注意事项

代码挺少的

9.总结

  • 在以后的项目中,首先的一件事就是要对产品要有完成的了解,然后进行技术、框架的选型
  • 对于插件,自己多尝试才能知道是否符合你的要求

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

Javascript 相关文章推荐
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
Apr 15 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
c#程序员对TypeScript的认识过程
Jun 19 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
JS对象和字符串之间互换操作实例分析
Feb 02 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 #Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 #Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 #Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 #Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 #Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 #Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 #Javascript
You might like
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
单链表反转python实现代码示例
2018/02/08 Python
python实现数据写入excel表格
2018/03/25 Python
python 图像平移和旋转的实例
2019/01/10 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
财务人员求职自荐书范文
2014/02/10 职场文书
单位考核聘任报告
2015/03/02 职场文书
贷款收入证明范本
2015/06/12 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js