使用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 相关文章推荐
FireFox下XML对象转化成字符串的解决方法
Dec 09 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
中文输入法不触发onkeyup事件的解决办法
Jul 09 Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
Jul 22 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
Vue实现剪贴板复制功能
Dec 31 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实现var_export的详细介绍
2013/06/20 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
jquery移动节点实例
2015/01/14 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
消防安全责任书
2014/04/14 职场文书
班训口号大全
2014/06/18 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
表扬信格式模板
2015/05/05 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android