在我们开发代码的时候,一般都喜欢进行一定程度的重构,以达到简化代码、关注点分离、提高代码可读性等等方面的考虑,本篇随笔介绍在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处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中的更多相关文章

  1. 循序渐进VUE+Element 前端应用开发(26)--- 各种界面组件的使用(2)

    在我们使用Vue+Element开发前端的时候,往往涉及到很多界面组件的使用,其中很多直接采用Element官方的案例即可,有些则是在这个基础上封装更好利用.更少代码的组件:另外有些则是直接采用第三方 ...

  2. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

  3. 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理

    在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...

  4. 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

    VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...

  5. 循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用

    在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框.多文本框.下拉列表,以及按钮.图片展示.弹出对话框.表单处理.条码二维码等等,本篇随笔基于普通表格业务的展示录入的场 ...

  6. 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...

  7. 循序渐进VUE+Element 前端应用开发(19)--- 后端查询接口和Vue前端的整合

    循序渐进VUE+Element 前端应用开发的系列文章中,前面介绍了系统各个功能的处理实现,本篇随笔从一个主线上介绍前后端开发的整合,让我们从ABP框架后端的查询接口的处理,前端API接口调用的封装, ...

  8. 循序渐进VUE+Element 前端应用开发(4)--- 获取后端数据及产品信息页面的处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(3)--- 动态菜单和路由的关联处理>中介绍了在Vue + Element整合框架中,实现了动态菜单和动态路由的处理,从而可以根据 ...

  9. 循序渐进VUE+Element 前端应用开发(5)--- 表格列表页面的查询,列表展示和字段转义处理

    在我们一般开发的系统界面里面,列表页面是一个非常重要的综合展示界面,包括有条件查询.列表展示和分页处理,以及对每项列表内容可能进行的转义处理,本篇随笔介绍基于Vue +Element基础上实现表格列表 ...

随机推荐

  1. Flutter学习一之环境搭建

    MacOS上搭建Flutter开发环境 1.flutter官网下载最新的安装包,https://flutter.io/sdk-archive/#macos 2.解压安装包到你想安装的目录.直接解压或者 ...

  2. vue +signalR 实现服务端到客户端消息发送

    承接上一篇 上一篇博客实现是了消息的实时通信,这一篇博客主要讲如何从中心服务内部向客户端发送消息. 先看下最终效果: 在core应用程序里加一个控制器TestController 注入控制器中的IHu ...

  3. 种子爆破&[GWCTF 2019]枯燥的抽奖

    伪随机数的爆破,种子爆破 做到了一道题,就是有个伪随机数爆破的漏洞,当时尽管是看到了这两个敏感的函数,但是先去看其他的了,没有看到什么漏洞,所以我当时是准备直接强行爆破,之后看到使用伪随机数爆破的方式 ...

  4. 面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)

    写在前面 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部分问题都能够在我的公众号[冰河技术]中找到答案,面试过程还是挺轻松的,最终也是轻松的拿到了Off ...

  5. 在Linux系统下搭建和配置一个minio文件服务器(一)

    1.minio文件服务器的介绍 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日 ...

  6. spring BeanDefinition 继承结构图

    ConfigurationClassBeanDefinition 是ConfigurationClassBeanDefinitionReader的静态内部类

  7. vue+less换肤,主题切换方案

    新的项目对于客户自定义要求很高,然后换肤是其中一个很小的模块,经过了一段时间的摸索,看了许多文章,找到了几种方案. https://www.cnblogs.com/leiting/p/11203383 ...

  8. 理解RESTful:理论与最佳实践

    什么是 REST 什么是 RESTful Richardson 成熟度模型 RESTful API 设计最佳实践 补充:HTTP 状态码及说明 什么是 REST REST 一词,是由 HTTP 协议的 ...

  9. OpenCV图像处理学习笔记-Day03

    OpenCV图像处理学习笔记-Day03 目录 OpenCV图像处理学习笔记-Day03 第31课:Canny边缘检测原理 第32课:Canny函数及使用 第33课:图像金字塔-理论基础 第34课:p ...

  10. helm部署的服务如何修改配置

    关于helm部署服务 在Kubernetes上进行容器化部署时,使用helm可以简化操作,以部署Jenkins为例,只需要以下命令即可完成部署: helm install --namespace he ...