循序渐进VUE+Element 前端应用开发(22)— 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中

Web 小时候可胖了 61℃ 0评论

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

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址