Vue.js入门教程(十五):如何创建自己的插件

JavaScript021

Vue.js入门教程(十五):如何创建自己的插件,第1张

通常,我们不会去接触vue底层的东西,又或者我们突发奇想需要自己创造一套框架。可回头看看我们使用最多的,其实还是插件。

插件,你也可以理解为就是一套方法的集合,当我们需要调用它的时候,引入一下就行了。

举个例子,比如说,swiper和elementui。

一般来说,我们每个项目都会安装一大堆的插件。用于处理各种交互效果和逻辑,但是,网上能搜到了插件不一定能解决我们所有的问题。也就是说,我们剩下30%左右的逻辑部分是需要自己处理的,比如说,转化时间,处理字符串等等。

这些东西网上是没有现成插件的,需要我们自己来写。此时,如果你每一个组件里面都去定义方法就显得太low了。

我们需要自己写一个插件,事半功倍!

一般来说,我们自己的js通常会写成下面的两种形式:

第一种,声明多个方法。这个做法也叫函数声明,这样做的好处是,声明到全局,你只要引用了它,在页面任意地方都可以使用。但是同样的缺点也很明显,容易引起全局污染,浪费浏览器资源。而且当我方法多的时候,调用起来很不方便。

第二种,这是我们最长使用的声明方式,函数表达式。目的就是加载了这个js以后,当我需要使用的时候,直接调用str.xxx(),就可以返回我需要的内容了。并且,方法封装在变量内部,不会引起全局污染,也符合模块化的规则。

ok,ok。我们接下来,就要把我们自己的方法定义到vue上去使用。

我首先把js放到了项目文件夹中,然后在main.js中引入。

调用起来是完全没有问题的。

但是,又好像哪里不太对?是的,这样我们仅仅是引入了一个js,并没有把它形成一个js的插件。

我们来看看一个标准的js插件的调用形式:

为什么他这个可以直接从this上面调用???

个人理解他的方法应该是被定义到全局的vue对象上面了,这里的this应该指的就是vue本身!

如果你看过龙哥前面的教程,你应该知道,当我们引入的插件,是一个对象的时候,应该使用:

use方法,可以把一个符合vue标准的对象加载到vue本体上。

首先给我们的main.js下面增加一行。

然后打开我们自己的js文件,按照下面的方式书写:

最后在页面中调用的时候:

到此我们的插件已经跟vue融为一体!其实插件本身还支持更多参数和写法,请各位同学自行研究吧!

一下好一款laydate.js日期时间选择插件,具有一定的参考价值,希望可以帮到你

日期时间选择插件laydate.js:

效果图:

1. 引入JS。 

<script type="text/javascript" src="js/laydate.js"></script>

2. 根据需要做相应的配置。详情参看官网

<script>

 laydate({

  elem: '#seldate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'

  event: 'focus', //响应事件。如果没有传入event,则按照默认的click

  format: 'YYYY/MM/DD hh:mm:ss', // 分隔符可以任意定义,该例子表示只显示年月

  festival: true, //显示节日

  istime: true, //显示时间选项

  choose: function(datas){ //选择日期完毕的回调

   alert('得到:'+datas)

  }

 })

</script>

实例源码:

<!DOCTYPE html> 

<html> 

<head> 

 <meta charset="utf-8"> 

 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

 <meta name="viewport" content="width=device-width, initial-scale=1"> 

 <!-- 

 <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" /> 

 <link href="favicon.ico" rel="Bookmark" type="image/x-icon" /> 

 -->

 <meta name="Generator" content="EditPlus®"> 

 <meta name="Author" content=""> 

 <meta name="Keywords" content=""> 

 <meta name="Description" content=""> 

 <title>layDate日期时间选择插件</title> 

 <link href="" rel="stylesheet" /> 

 <script type="text/javascript" src="js/laydate.js"></script> 

</head> 

<body> 

 <form method="post" action=""> 

 Way1, 

  请选择日期:<input type="text" name="date" onclick="laydate()" /> 

  <hr /> 

 Way2, 

  <input type="text" name="date" id='seldate' class="laydate-icon" /><hr /> 

  <script> 

   laydate({ 

    elem: '#seldate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class' 

    event: 'focus', //响应事件。如果没有传入event,则按照默认的click 

    format: 'YYYY/MM/DD hh:mm:ss', // 分隔符可以任意定义,该例子表示只显示年月 

    festival: true, //显示节日 

    istime: true, //显示时间选项 

    choose: function(datas){ //选择日期完毕的回调 

     alert('得到:'+datas) 

    } 

   }) 

  </script> 

 Way3, 

  <input id="seldate1"> 

  <span class="laydate-icon" onclick="laydate({elem:'#seldate1'})"></span> 

 </form> 

</body> 

</html>