循序渐进VUE+Element 前端应用开发(22)--- 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中
在我们开发代码的时候,一般都喜欢进行一定程度的重构,以达到简化代码、关注点分离、提高代码可读性等等方面的考虑,本篇随笔介绍在VUE+Element 前端应用开发过程中,实现简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中做法。
1、main.js处理逻辑
我们知道Vue的前端应用,main.js函数里面承载的逻辑内容很多,往往涉及到一些常用过滤器函数、全局界面函数、组件注册等常规的处理过程,在我们应用越来愈大,引入的控件越来越多的时候,往往需要很多代码来实现这些功能,但是单个文件代码行数到达一定程度的时候,可读性就降低了,而且可维护性就复杂了,于是我们往往需要对代码进行重构处理,本篇介绍的处理就是实现关注点分离,把不同的逻辑抽离到不同的文件里面,这样大大减少了main.js的代码行数,并提高main.js的可维护性。
main.js处理逻辑的内容大概可以分为几个重要的部分,如下图所示,同时这个也是我们分离逻辑代码的思路。

2、全局函数挂载
使用vue 时,有时需要设置公共的函数,便于在所有组件中调用或者在组件的生命周期中都可调用,这便需要自定义全局函数。
在main.js中写入函数
Vue.prototype.getToken = function (){
...
}
那么,在所有组件里都可调用函数
this.getToken();
里面我们把常规经常用到的一些JS处理函数,以及一些界面信息处理函数,通过全局挂载的方式,使得它们在任何模块页面都可以使用。
我们把这些处理放在一个单独的文件,如prototype.js里面,如下所示。

然后在main.js函数里面,使用如下代码加入即可。
// 导入一些全局函数
import prototype from './prototype'
Vue.use(prototype)
这样我们就可以在任何页面、模块里面使用我们全局的函数了。

或者

3、全局过滤器挂载
和全局函数做法类似,也可以用相同的方法挂载全局过滤器,过滤器处理一般用于对界面部分的内容进行格式化或者转义的操作。
我们可以自定义一些常用的过滤器放在filter/index.js文件里面,如下所示。

里面放置一些常见的js函数处理,如下所示。
export function uppercaseFirst(string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
然后我们在main.js里面引入这个全局过滤器即可。
// 导入自定义全局过滤器
import * as filters from './filters'
// 注册全局过滤器
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
除了一些自己自定义过滤器外,建议可以使用一些第三方的常用过滤器,如下所示
// 导入第三方常见过滤器,介绍参考https://github.com/freearhey/vue2-filters
import Vue2Filters from 'vue2-filters'
Vue.use(Vue2Filters)
这个里面的过滤器很多比较常见,介绍参考https://github.com/freearhey/vue2-filters

引入后,直接在界面中使用即可,如下使用代码。

或者

是不是觉得很方便。
4、常见组件注册
组件的注册,分为全局main.js函数中注册,和页面组件中注册,一般我们可以把常见的组件放置到全局中注册,这样避免每个页面都重复填写注册组件的代码,省却很多功夫。
例如,我们可以创建一个plugin.js的文件,用来分离全局注册注册的处理过程,在其中引入我们常用的一些组件,并进行注册处理。

有了这些文件的定义处理,我们在main.js里面,进行简单的导入使用即可。
// 导入常见的组件,进行注册
import common from './components/Common/plugin'
Vue.use(common)
最后这些就是实现了我们常规的几个过程的处理,包括抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中,并简化全局挂载的操作。
截取几个VUE+Element 前端应用系统模块的界面参考下。




循序渐进VUE+Element 前端应用开发(22)--- 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中的更多相关文章
- 循序渐进VUE+Element 前端应用开发(26)--- 各种界面组件的使用(2)
在我们使用Vue+Element开发前端的时候,往往涉及到很多界面组件的使用,其中很多直接采用Element官方的案例即可,有些则是在这个基础上封装更好利用.更少代码的组件:另外有些则是直接采用第三方 ...
- 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储
在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...
- 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理
在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...
- 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码
VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...
- 循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用
在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框.多文本框.下拉列表,以及按钮.图片展示.弹出对话框.表单处理.条码二维码等等,本篇随笔基于普通表格业务的展示录入的场 ...
- 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...
- 循序渐进VUE+Element 前端应用开发(19)--- 后端查询接口和Vue前端的整合
循序渐进VUE+Element 前端应用开发的系列文章中,前面介绍了系统各个功能的处理实现,本篇随笔从一个主线上介绍前后端开发的整合,让我们从ABP框架后端的查询接口的处理,前端API接口调用的封装, ...
- 循序渐进VUE+Element 前端应用开发(4)--- 获取后端数据及产品信息页面的处理
在前面随笔<循序渐进VUE+Element 前端应用开发(3)--- 动态菜单和路由的关联处理>中介绍了在Vue + Element整合框架中,实现了动态菜单和动态路由的处理,从而可以根据 ...
- 循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理
在我们一般开发的系统界面里面,列表页面是一个非常重要的综合展示界面,包括有条件查询.列表展示和分页处理,以及对每项列表内容可能进行的转义处理,本篇随笔介绍基于Vue +Element基础上实现表格列表 ...
随机推荐
- 《InnoDB存储引擎》笔记
第1章 Mysql体系结构和存储引擎 1.1 定义数据库和实例 数据库:database,物理的操作系统文件或其他形式文件类型的集合.当使用NDB存储引擎时,数据库文件可能是存放在内存中而不是磁盘之上 ...
- 空间向量变换,以及OpenGL的glm库简单应用
测试项目请查看GitHub库 GLBIproject2/GLBIProject2_2
- VMware虚拟机ubuntu下安装VMware Tools步骤
双击VMware Tools进入 找到后缀.tar.gz的压缩文件 将压缩文件复制到home目录下,home目录即左侧的主目录文件夹 打开命令行终端,默认应该就是home目录,如果不是home目录,在 ...
- HTML你好!
初识HTML 什么是HTML web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermed ...
- webservice了解一下!!
(1)什么是webservice? webservice是一种可以跨编程语言和跨平台进行远程调用的一种技术,是同步进行. webservice主要分为两种,一种是基于浏览器的瘦客户端应用程序,一种是基 ...
- Python-随机模块-random
random 生成随机变量 生成 [0, 1) 随机数 .random import random random_number = random.random() print(random_numbe ...
- Python-集合 字典-set dict fronzenset
集合 set 1. 无序 2. 去重 3. 定义空集 set() numbers = {1, 3, 4, 5, 6, 5, 4, 4, 7, 8} print(numbers) print(numbe ...
- 【Python】数据结构
列表的更多特性 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所有元素来扩展列表. ...
- java安全编码指南之:方法编写指南
目录 简介 不要在构造函数中调用可以被重写的方法 不要在clone()方法中调用可重写的方法 重写equals()方法 hashCode和equals compareTo方法的实现 简介 java程序 ...
- C/C++ typedef用法
原文来源:https://blog.csdn.net/superhoy/article/details/53504472 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同 ...