vue插件函数式调用【找回使用jq的回忆】
vue自组件函数式调用的实现
·
“使用vue还用jq?”“使用vue还抄作DOM干嘛?”“直接用jq好了”
各种吐槽,“使用vue可以用jq,但是不能像用jq那样用vue,vue也是js实现的,底层也是驱动dom的”,这是我自己和自己说的。
【使用vue真不应该使用jq!!】
不过后来在项目上,发现自己还是有些JQ思维没转过来,导致了很多麻烦
“vue可以使用原生来操作dom的,在上一节vue指令那一篇,可以看出来,我们是可以使用原生的js的语法的,但是最好在vue的指令函数里面,只有这样才能和vue的生态结合起来,不会导致数据驱动失败。”
jquery插件让我非常着迷的是他的函数式调用,例如:
$("#signupForm").validate({
rules: {
firstname: "required",
lastname: "required",
},
messages: {
firstname: "请输入您的名字",
lastname: "请输入您的姓氏",
}
如果是vue的话可能需要这样写:
<template>
<div id="signupForm">
<input type="text" v-model="firstname" v-on:change="valid(firstname)">
<input type="text" v-model="lastname" v-on:change="valid(lastname)">
</div>
</template>
<script>
export default {
data(){
return {
firstname:"",
lastname:""
}
},
method:{
valid(name){
//-------
}
}
}
</script>
这里举的例子好像并不是很形象,但也可以看出vue需要在dom中添加指令、事件以及data里面返回对应的数据,还需要写一个校验函数
而使用过jq插件的开发知道jq不需要添加这些,只需要写一个id来挂载插件,和使用一个函数来给插件发送配置就可以了
vue不能函数式调用?不能和vue那样哪里需要哪里调用?
其实是可以的!我们可以在.vue组件外面再套一个函数,调用这个函数就能让子组件在当前组件中使用,代码参考mint-ui的toast的实现具体不复述:
https://github.com/MTTTM/mint-ui/tree/master/packages/toast
toast的调用方式:
Toast({
message: 'operation success',
iconClass: 'icon icon-success'
});
更多推荐
已为社区贡献9条内容
所有评论(0)