💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 6.1 编写自己的工具库插件 > 参考文档: > > vue插件说明:https://cn.vuejs.org/v2/guide/plugins.html 项目中往往会使用一些通用的函数,比如获取当前时间、时间格式转化,防抖,节流等,我们可以把这个公用的部分封装成插件,在main.js中引入。 首先,在src目录下新建`utils`文件夹,在里面新建`index.js`,`utils.js`文件 我们在`utils.js`中编写自己的工具库,然后导出 ```js class Utils{ constructor(){ this.d=new Date();//date对象 this.instance=null; } static getInstance(){//单例模式 if(!this.instance){ this.instance = new Utils(); } return this.instance; } pick(obj,arr){//pick({ a: 1, b: '2', 'c': 3 }, ['a', 'c']) =>{a:1,c:3} return arr.reduce((acc,curr)=>{ return (curr in obj && (acc[curr] = obj[curr]), acc) },{}) } dateFormat(datetime,pattern=""){ let vWeek = ["星期天","星期一","星期二","星期三","星期四","星期五","星期六"]; let dt=new Date(datetime); let y=dt.getFullYear(); let m=(dt.getMonth()+1).toString().padStart(2,'0'); let d=dt.getDate().toString().padStart(2,'0'); let hh=dt.getHours().toString().padStart(2,'0'); let mm=dt.getMinutes().toString().padStart(2,'0'); let ss=dt.getSeconds().toString().padStart(2,'0'); let vWeek_s = dt.getDay();//星期 if(pattern.toLowerCase() === 'yyyy-mm-dd'){ return `${y}-${m}-${d}` }else if(pattern.toLowerCase() === 'mm-dd'){ return `${m}-${d}` }else if(pattern.toLowerCase() === 'yyyymmddhhmmss'){ return `${y}${m}${d}${hh}${mm}${ss}` }else { return `${y}-${m}-${d} ${hh}:${mm}:${ss} ${vWeek[vWeek_s]}` } } } const UTIL = Utils.getInstance(); // console.log(UTIL.dateFormat(new Date(),'yyyymmddhhmmss')) //=>20190312110722 // console.log(UTIL.dateFormat(new Date()))//=>2019-03-12 11:07:22 星期二 // console.log(UTIL.pick({ a: 1, b: '2', 'c': 3 }, ['a', 'c']))//=>{a:1,c:3} export default UTIL; ``` 然后在index.js中编写插件,导出 ```js //utils/index.js import UTIL from './utils.js' const UtilPlugin={} UtilPlugin.install=function(Vue,options){//插件必须有install方法,接受两个参数,一个是Vue构造器,一个是参数 Vue.prototype.$utils=UTIL//在vue prototype上添加实例方法 } export default UtilPlugin ``` 最后在main.js中引入并use插件 ```js // utils import Util from './utils/index' Vue.use(Util) console.log(Vue.prototype.$util)//打印下是否引入成功 ``` 之后就可以在组件中通过使用`this.$utils`调用方法了