在我前面的有一篇文章里有说过怎么引入外部的 JS 文件,详情见 VUE 爬坑之旅– 如何对公共JS,CSS进行统一管理,全局调用 。这里所说的外部 JS 文件指的是用 ES6 之前的老语法编写的各种 JS 代码,这种 JS 文件可以用我上面那篇文章里面的方法引入,使用方法跟以前一样。

但是现在是新的时代,还是用以前的老东西未免有点过时了,而且很多以前的那种 JS 文件其实都是要依赖 JQuery 的,而 vue 是不提倡再使用 JQuery 的,而且在 vue 项目中引入 JQuery 还有些麻烦(我有尝试过,没搞定,(┬_┬)),这样的话不就尴尬了吗。

那么我如果要在 vue 项目中用 ES6 语法改造以前的老代码,或者针对本项目编写一个可以全局使用的工具类要怎么做呢?

我们可以使用 ES6 中 Module 的语法来编写或改造我们的 JS,首先送上阮一峰老师的教程 Module 的语法 认真看完上面的内容也就明白要怎么做了,同时也明白了用 vue-cli 生成的项目里面那么多的 import ,export 都是做什么用的了。(我当时做项目的时候没有看到这份教程,就只是懵懵懂懂的照葫芦画瓢做的,,,)

下面还是贴一下实际的代码吧,光文字描述是不够的,还是代码最直白,同时也能减少一些新人朋友的摸索时间(我自己当时就是满满摸索过来的,是深有体会的,,,)

一,在 src 目录下新建一个 utils 文件夹

如上图所示,Utils 文件夹是存放我们工具类文件的地方,里面可能会有多个文件,比如说我箭头所指的 myUtils 文件,这个文件里面就是我们马上要编写的工具类了。

二,编写工具类

在实际项目开发中,经常有一些工具方法需要全局调用,这时就需要把这些方法提取出一个工具类,然后将这个类全局引用,就可以到处使用了,减少了重复劳动(懒才是第一生产力,,,)

如上面教程中所说,Module 有多种写法,这里我们采用最简单方便的(其实还是懒,,,)

export default class myUtils {

/**

* 判断字符串是否为空

* @param str

* @returns {boolean}

*/

static isNull(str) {

return str == null || str.length === 0 || str === '';

}

/**

*

* @desc 判断是否为身份证号

* @param {String|Number} str

* @return {Boolean}

*/

static isIdCard(str) {

return /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str)

}

/**

*

* @desc 判断是否为手机号

* @param {String|Number} str

* @return {Boolean}

*/

static isPhoneNum(str) {

return /^(0|86|17951)?(1[3-9][0-9])[0-9]{8}$/.test(str)

}

}

上面定义了一个 myUtils 类,类里有三个方法,(关于 class 和 static ,有不知道的可以去看阮老师的 ES6 教程,这里就不啰嗦了)现在我们只需要将这个类全局引用就可以了。

三,全局引用

要想全局引用,我们需要在入口文件上做文章,vue 的入口文件是 main.js,在 main.js 中,先 import 引入 myUtils ,再将它挂载到 vue 对象的原型上,这样就可以达到全局引入的目的

// The Vue build version to load with the `import` command

// (runtime-only or standalone) has been set in webpack.base.conf with an alias.

import Vue from 'vue'import App from './App'import router from './router'import store from './store'

//先 import 引入

import myUtils from './utils/myUtils'

Vue.config.productionTip = false;

//将 myUtils 挂载到 vue 的原型上

Vue.prototype.myUtils = myUtils;

/* eslint-disable no-new */

new Vue({

el: '#app',

router,

store,

components: {App},

template: '<App/>'

});

四,组件中使用

在组件中可以直接通过 this.myUtils.XXX 来调用相应的方法了

if (this.myUtils.isNull(this.mobile)) {

this.toast("请输入手机号码");

return

}

总结

其实只要看懂了阮老师的教程,后面的就很简单了,关键是要认真的看完并理解。然后就是要大胆的拥抱变化,ES6 的相比于以前的老语法来说还是要好很多的,解决了以前的一些痛点,比如说分模块引入,回调地狱,this 指向不明等问题,要赶紧学起来,虽然说 ES6 已经出来很久了,,,

VUE 爬坑之旅 -- 用 ES6 语法写一个工具类,并全局引用相关推荐

  1. Vue 爬坑之旅 -- 微信网页授权

    现在的 H5 开发,微信授权和微信分享基本是必备功能,昨天将微信分享的相关功能和踩坑过程做了一个总结,今天就来说下微信授权的功能具体到 vue 项目中该要怎么做. Vue 爬坑之旅 – history ...

  2. Vue爬坑之旅(二十一):vue使用富文本编辑器vue-quill-editor实现配合后台将图片上传至七牛

    一.全局注册:main.js import Vue from 'vue' import VueQuillEditor, { Quill } from 'vue-quill-editor' import ...

  3. Vue 爬坑之旅 -- history 路由模式下微信分享爬坑总结

    现在做 H5 开发,微信平台基本是一个绕不过去的坑,这里面又分为微信授权和微信分享.说它坑,主要提现在以下几个方面: 文档不够清晰详细.开发文档这块是国内所有互联网公司的通病,文档写的不清不楚,长期不 ...

  4. VUE 爬坑之旅 -- vue 项目中将简体转换为繁体

    一 安装相关的包 npm i language-tw-loader 二 修改 webpack 配置文件 在 build 文件夹下找到 webpack.base.conf.js 这个文件,在 modul ...

  5. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  6. Android爬坑之旅:软键盘挡住输入框问题的终极解决方式

    本文由BarryZhang原创,同一时候首发于diycode.cc.barryzhang.com .github.com/barryhappy.非商业转载请注明作者和原文链接. 前言 开发做得久了.总 ...

  7. Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页 ...

  8. React Native微信支付开发爬坑之旅

    早闻微信支付一直为移动开发者所诟病,这次公司项目新增微信支付需求,一试果然是一把辛酸泪,从配置到与后台调试真是一波三折,整整花了一天的时间才从坑里爬出来,效率也是低.所以有必要做下总结,日后再有微信支 ...

  9. pyecharts查看版本_[pyecharts]v1版本爬坑之旅

    我国庆闲(咸)余(鱼)时间完成 pyecharts的安装,随后就开始了我的爬坑之旅. pyecharts这个包安装十分顺利,但是没想到后续还有一大堆坑. 首先是版本问题,在githubgithub上的 ...

最新文章

  1. SVG(H5可缩放的矢量图形)
  2. 二本毕业,努力 5 年,月入 5w 的程序员和他们的公众号
  3. python怎么变成文档_python3如何将docx转换成pdf文件
  4. MFC文档/视图结构体系及SDI回顾(2)
  5. Spring中的事件机制
  6. Apache CXF负载平衡和故障转移
  7. python开始之路—基础中的基础
  8. 当ORACLE归档日志满后如何正确删除归档日志
  9. Netty 高性能架构设计
  10. 使用charles修改服务器返回数据,charles_01_打断点修改接口请求返回数据
  11. Eclipse统计代码行数
  12. redis各项功能解决了什么问题
  13. 数据分块算法java_分块查询算法(JAVA)
  14. 580集photoshop顶尖视频教程送给你,设计总监手把手带你学ps!
  15. Bailian-1的个数
  16. 2021世界人工智能大会开幕,百度飞桨荣获“SAIL之星”奖项
  17. javaSE-String,StringBuffer和StringBuilder
  18. flex中dataGrid的编辑功能
  19. WebStorm 最新激活码 license server
  20. 苹果TestFlight测试操作图文教程(测试后提交App Store审核)

热门文章

  1. 一点就懂的经典十大排序算法
  2. 月亮的脸偷偷地在改变
  3. Ubuntu的软件包管理 || 软硬链接 ||进线程浅述
  4. 00_linux 设备驱动模型 2.6以后通用模型
  5. echarts折线图动态修改折线颜色
  6. 直播风口,是什么在支撑教育、电商、泛娱乐等场景?
  7. Mac上最好用的BT下载工具——Folx
  8. 目标检测算法回顾之传统算法
  9. Cartesi 介绍
  10. Python实现RSA加密算法