微信搜索【前端全栈开发者】关注这个脱发、摆摊、卖货、持续学习的程序员的公众号,第一时间阅读最新文章,会优先两天发表新文章。关注即可大礼包,送某网精品视频课程网盘资料,准能为你节省不少钱!

我真的很喜欢使用Vue.js,每次使用框架时,我都会喜欢深入研究其功能和特性。通过这篇文章,我向你介绍了十个很酷的提示和技巧,你可能尚未意识到这些技巧和窍门,以帮助你成为更好的Vue开发人员。

更漂亮的插槽语法

随着Vue 2.6的推出,已经引入了插槽的简写方式,可用于事件(例如,@click 表示 v-on:click 事件)或冒号表示方式用于绑定(:src)。例如,如果你有一个表格组件,你可以使用这个功能如下:

<template>...<my-table><template #row={ item }>/* 一些内容,你可以在这里自由使用“item” */</template></my-table>  ...
</template>

$on(‘hook:’) 可以帮助你简化代码

删除事件监听器是一种常见的最佳实践,因为它有助于避免内存泄露并防止事件冲突。

如果你想在 createdmounted 的钩子中定义自定义事件监听器或第三方插件,并且需要在 beforeDestroy 钩子中删除它以避免引起任何内存泄漏,那么这是一个很好的特性。下面是一个典型的设置:

mounted () {window.addEventListener('resize', this.resizeHandler);
},
beforeDestroy () {window.removeEventListener('resize', this.resizeHandler);
}

使用 $on('hook:')方法,你可以仅使用一种生命周期方法(而不是两种)来定义/删除事件。

mounted () {window.addEventListener('resize', this.resizeHandler);this.$on("hook:beforeDestroy", () => {window.removeEventListener('resize', this.resizeHandler);})
}

$on 还可以侦听子组件的生命周期钩子

最后一点,生命周期钩子发出自定义事件这一事实意味着父组件可以监听其子级的生命周期钩子。

它将使用正常模式来监听事件(@event),并且可以像其他自定义事件一样进行处理。

<child-comp @hook:mounted="someFunction" />

使用 immediate: true 在初始化时触发watcher

Vue Watchers 是添加高级功能(例如,API调用)的好方法,该功能可以在观察值发生变化时运行。

默认情况下,观察者不会在初始化时运行。根据你的功能,这可能意味着某些数据不会完全初始化。

watch: {title: (newTitle, oldTitle) => {console.log("Title changed from " + oldTitle + " to " + newTitle)}
}

如果你需要 wather 在实例初始化后立即运行,那么你所要做的就是将 wather 转换为具有 handler(newVal, oldVal) 函数以及即时 immediate: true 的对象。

watch: {title: {immediate: true,handler(newTitle, oldTitle) {console.log("Title changed from " + oldTitle + " to " + newTitle)}}
}

你应该始终验证你的Prop

验证 Props 是 Vue 中的基本做法之一。

你可能已经知道可以将props验证为原始类型,例如字符串,数字甚至对象。你也可以使用自定义验证器——例如,如果你想验证一个字符串列表:

props: {status: {type: String,required: true,validator: function (value) {return ['syncing','synced','version-conflict','error'].indexOf(value) !== -1}}
}

动态指令参数

Vue 2.6的最酷功能之一是可以将指令参数动态传递给组件。假设你有一个按钮组件,并且在某些情况下想监听单击事件,而在其他情况下想监听双击事件。这就是这些指令派上用场的地方:

<template>...<aButton @[someEvent]="handleSomeEvent()" />...
</template>
<script>...data(){return{...someEvent: someCondition ? "click" : "dbclick"}},methods: {handleSomeEvent(){// handle some event}}
</script>

而且,这实际上也很整洁-你可以将相同的模式应用于动态HTML属性,props等。

重用相同路由的组件

开发人员经常遇到的情况是,多个路由解析为同一个Vue组件。问题是,Vue出于性能原因,默认情况下共享组件将不会重新渲染,如果你尝试在使用相同组件的路由之间进行切换,则不会发生任何变化。

const routes = [{path: "/a",component: MyComponent},{path: "/b",component: MyComponent},
];

如果你仍然希望重新渲染这些组件,则可以通过在 router-view 组件中提供 :key 属性来实现。

<template><router-view :key="$route.path"></router-view>
</template>

把所有Props传到子组件很容易

这是一个非常酷的功能,可让你将所有 props 从父组件传递到子组件。如果你有另一个组件的包装组件,这将特别方便。所以,与其把所有的 props 一个一个传下去,你可以利用这个,把所有的 props 一次传下去:

<template><childComponent v-bind="$props" />
</template>

代替:

<template><childComponent :prop1="prop1" :prop2="prop2" :prop="prop3" :prop4="prop4" ... />
</template>

把所有事件监听传到子组件很容易

如果子组件不在父组件的根目录下,则可以将所有事件侦听器从父组件传递到子组件,如下所示:

<template><div>...<childComponentv-on="$listeners" />...    <div>
</template>

如果子组件位于其父组件的根目录,则默认情况下它将获得这些组件,因此不需要使用这个小技巧。

$createElement

默认情况下,每个Vue实例都可以访问 $createElement 方法来创建和返回虚拟节点。例如,可以利用它在可以通过v-html指令传递的方法中使用标记。在函数组件中,可以将此方法作为渲染函数中的第一个参数进行访问。

使用JSX

由于Vue CLI 3默认支持使用JSX,因此现在(如果愿意)你可以使用JSX编写代码(例如,可以方便地编写函数组件)。如果尚未使用Vue CLI 3,则可以使用 babel-plugin-transform-vue-jsx 获得JSX支持。

自定义 v-model

默认情况下,v-model@input 事件侦听器和 :value 属性上的语法糖。但是,你可以在你的Vue组件中指定一个模型属性来定义使用什么事件和value属性——非常棒!

export default: {model: {event: 'change',prop: 'checked'  }
}

总结

这绝不是VueJS技巧的完整列表,这些只是我个人认为最有用的一些,其中一些技巧使我花了很长时间才在Vue中进行实践,因此我认为我可以与大家分享这些知识。

希望他们像我一样对你有帮助!

你最喜欢的VueJS技巧和窍门是什么?我也很想向你学习!


参考链接:

  • https://medium.com/better-programming/10-tips-and-tricks-to-make-you-a-better-vue-js-developer-afc74acaf388
  • https://learnvue.co/2020/01/7-simple-vuejs-tips-you-can-use-to-become-a-better-developer/

如果对你有所启发和帮助,可以点个关注、收藏,也可以留言讨论,这是对作者的最大鼓励。

作者简介:Web前端工程师,全栈开发工程师、持续学习者。

现在关注 《前端外文精选》 微信公众号,还送某网精品视频课程网盘资料啊,准能为你节省不少钱!

2020年的12个Vue.js开发技巧和窍门相关推荐

  1. vue双击事件_我总结了12个Vue.js开发技巧和窍门

    我真的很喜欢使用Vue.js,每次使用框架时,我都会喜欢深入研究其功能和特性.通过这篇文章,我向你介绍了12个很酷的提示和技巧,你可能尚未意识到这些技巧和窍门,以帮助你成为更好的Vue开发人员. 更漂 ...

  2. java计算机毕业设计vue.js开发红酒网站源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue.js开发红酒网站源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue.js开发红酒网站源码+mysql数据库+系统+lw文档+部署 本源码技术栈: ...

  3. java计算机毕业设计vue.js开发红酒网站MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue.js开发红酒网站MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue.js开发红酒网站MyBatis+系统+LW文档+源码+调试部署 本源码技术栈 ...

  4. JAVA毕业设计vue.js开发红酒网站计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue.js开发红酒网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue.js开发红酒网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B ...

  5. 基于 Laravel、Vue.js开发的全新社交系统----ThinkSNS+

    2019独角兽企业重金招聘Python工程师标准>>> ThinkSNS(简称TS)始于2008年,一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方 ...

  6. 【vue.js开发】如何在vue里面优雅的解决跨域,路由冲突问题

    [vue.js开发]如何在vue里面优雅的解决跨域,路由冲突问题 当我们在路由里面配置成以下代理可以解决跨域问题 proxyTable: {'/goods/*': {target: 'http://l ...

  7. mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 成全 责编 | 阿秃 转自 | 美团技术团队企业博客 前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开 ...

  8. js时间选择器_Vuestic Admin一款免费与美妙基于Vue.js开发的管理模板

    Vuestic Admin 简介 vuestic admin是一款流行,免费与美妙的基于Vue.js开发出来的管理模板,包括38以上个定制用户界面组件,由Epicmax开发,由Vasili Savit ...

  9. 用Vue.js开发微信小程序:开源框架mpvue解析

    前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...

最新文章

  1. 用keil怎么擦除_用这种方法销毁硬盘数据,即使美国中央情报局也难以恢复
  2. makefile 基础用法
  3. java网关限流_网关限流使用
  4. Ceph 集群整体迁移方案
  5. 【原创】OllyDBG 入门系列(七)-汇编功能
  6. 项目管理办公室 PMO
  7. LayoutInflater(二)
  8. 故障树手册(Fault Tree handbook)(1)
  9. 电商系统——订单页面展示
  10. JavaFTP文件传输 简单实现
  11. python去重txt文本_Python实现的txt文件去重功能示例
  12. Windows XP_修改登录背景图案
  13. 电脑搜索不到打印机应该怎么办?
  14. 杨辉三角(C语言简单版)
  15. 火星转债上市价格预测
  16. 2021 CSP-S 初赛知识补天
  17. 用java实现简单的搜索引擎
  18. 经典开源C/C++项目
  19. python(scipy)实现填充孔洞的方法(非常类似于MATLAB的imfill)
  20. python segy格式地震数据读写包segyio学习笔记(二)

热门文章

  1. 第三篇:动态 8位数码管显示---亚龙236电路
  2. 动态gif图是什么?如何快速制作动态gif?
  3. 信创平台下构建rsync服务,同步与备份数据
  4. 【转】如何使用分区助手完美迁移系统到SSD固态硬盘?
  5. CentOS7.3部署OpenStack-Ocata版本手记(计算节点) - 未完待续
  6. 智慧旅游的c端产品破局
  7. 版本管理工具使用之svn
  8. ajax put 请求
  9. js查询ip地址归属地
  10. java控制扬声器发声_Linux 控制扬声器发声