文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

七种需要避免的Vue.js常见错误

2024-12-14 05:00

关注

【51CTO.com快译】不知您是否熟悉、或正在使用着Vue.js。总的说来,Vue是用来设计用户界面的渐进式框架。与其他框架不同,它在设计之初就充分考虑到了增量适应性(incremental adaptability)。Vue的核心库都主要集中并关注视图层。它不仅容易上手,还便于与第三方的库、以及既有项目相集成。同时,Vue生态系统所支持的库在与单文件组件(SFC)等工具结合使用时,Vue也能够为复杂的单页应用提供相应的驱动与功能。

Vue.js的优缺点

优点:

缺点:

虽然优势大于劣势,但是由于大多数开发人员未能遵循Vue.js的优秀实践(请参见-- https://levelup.gitconnected.com/best-practices-for-vue-js-b46760fe0096),因此他们不仅无法充分利用Vue.js的全部潜能,而且可能时常犯错。

就个人而言,我已经使用Vue.js一段时间了,除了收获愉快的体验与经验,也曾犯过一些错误。为了避免大家跌入同样的“坑”中,我在此将其中常见的七大错误总结如下:

1.添加模板编译器

在尝试导入Vue.js时,我发现:即使自己遵循了官方指南的说明事项,组件的内联(inline)模板也会返回空白页面。对此,当我试着使用那些渲染函数(render function)、或作为单文件组件定义的模板时,此类问题就没有再现了。由于Vue具有许多个不同的版本,因此我估计这是由版本差异所导致的。毕竟,NPM软件包所导出的默认构建版本,通常是仅用于构建运行时(runtime),并不包括模板的编译器。

如果您熟悉JSX for React,那么就不难理解模板编译器了。它的作用是通过函数调用的方式,仅替换那些模板字符串,进而创建一个虚拟的DOM节点。该问题未在单文件组件中发生的主要原因是:单文件组件使用了vue-loader和vueify工具。这两个工具都能够通过使用渲染函数所定义的模板,来生成简单的JavaScript组件。因此,要避免该问题,您需要在导入期间指定正确的构建版本。当然,您也可以通过在捆绑程序的配置中,为Vue创建别名(alias),来解决此类问题。

2.维持属性的反应性

React用户一定对反应性的概念并不陌生。它是通过调用setState函数来工作的。此函数能够更新各种属性值。尽管反应性也是Vue.js的一大优点,但它在Vue中的工作方式与在React中有所不同。在Vue中,它代理的是各种组件的属性。用于覆盖和更新的Get和Set函数,在虚拟的DOM中被传递。 

  1. var vm = new Vue({ 
  2.   el: '#vm'
  3.   template: `
    {{ item.count }}"button" value="Click" @click="updateCount"/>
    `, 
  4.   data: { 
  5.     item: {} 
  6.   }, 
  7.   beforeMount () { 
  8.     this.$data.item.count = 0;   
  9.   }, 
  10.   methods: { 
  11.     updateCount () { 
  12.       // JavaScript object is updated but 
  13.       // the component template is not rendered again 
  14.       this.$data.item.count++; 
  15.     } 
  16.   }  
  17. });  

在上述Java代码示例中,您可以清楚地看到Vue实例具有一个名为item的属性,其中包含着一个空对象。在组件被初始化后,Vue会创建一个代理,该代理具有与item属性相连接的get和set函数。据此,该框架会跟踪各个值的变化,并做出相应的反应。

3.导出单文件组件

为了简化JavaScript文件的复杂性,Vue使用了简单的处置方法--单文件组件,它能够将所有HTML、CSS和JavaScript代码收集到同一个文件中。不过,由于单文件组件的代码通常驻留在Vue文件内部的script标记中,因此即使代码是由JavaScript编写的,您仍然需要导出对应的组件。当然,您可以使用如下三种方法来实现:

如果选择命名的导出方式,那么我们将无法对各个组件进行重命名。而且更重要的是,命名导出与单文件组件并不兼容。因此,如果您是一名新手用户,我建议您使用默认的导出方法会更好。

4.避免合并单文件组件

由于单文件组件可以使开发人员在同一个文件中添加各种代码、模板和样式,因此它简化了开发的整个过程。不过,为了避免产生混乱,我们应按需分隔不同的单文件组件。新导入的单文件组件很可能会覆盖过往的单文件组件,因此我们在合并它们的时候要倍加小心。此外,单文件组件最大的一个缺点是:我们不能将它们整体导入到多个Vue组件之中。

5. 父数据更新子组件

在Vue.js中,父组件会使用props或发送事件消息,将数据向下传递给子组件。而子组件也会做出响应。这种关系往往被称为props down和event up。如下代码片段展示了父数据如何通过props传递给子元素: 

  1.  
  2. "parentMsg"

  3.  
  4. "parentMsg"
  

6.根据Vuex行为产生promise

由于在Vuex中,各项行为都是异步的,因此为了让调用函数知道某个行为是否已完成,唯一的方法是返回一个promise(承诺),留在后期予以解决。据此,Vue会产生一个HTTP调用,并且在promise之后逐个处理各种“解决”或“拒绝”。

7.结合使用Vue.js和jQuery

如果需要与其他的DOM操作工具集(例如jQuery)一起使用Vue框架,您需要注意它们之间的相互隔离。也就是说,您既可以使用jQuery来操作DOM widget,也可以使用Vue,但是请不要同时使用这两者。通常,包装器(wrapper)组件会充当Vue、对应的组件、以及其他内部DOM元素之间的链接,以实现彼此的交互。而且这些组件将会用于通过jQuery来操控各个内部DOM元素。

最后,希望您在使用Vue.js框架设计应用程序,开发解决方案,或创建Web应用时,能够避免触犯上述七种Vue.js的常见错误。

原文7 Common Vue.js Mistakes You Should Never Make,作者:Irfan Ahmed

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯