Vue 开发必须知道的36个技巧(小结)

yizhihongxing

Vue 开发必须知道的36个技巧(小结)

本文总结了36个Vue开发中必须知道的技巧,内容涵盖了组件开发、状态管理、路由导航、性能优化等多个方面的技巧。

组件开发篇

Tip1:合理使用computed

computed是一个非常强大的特性,但也有很多约束,比如它会缓存计算结果;还要注意它不应该有任何副效应,也不应该修改任何数据。所以,在使用computed 计算属性时,需要明确计算结果并不会因为其他数据变化而重新计算,最好只计算纯粹的数据,以避免浪费计算资源。

Tip2:渲染列表时使用key属性

在Vue中,key 是用来唯一标识每个节点的属性。如果列表项的顺序被改变了,那么 Vue 将会尽可能的尝试重新利用已渲染的元素,并且仅对关键属性进行修改来减少DOM操作。

例子:假设我们有一个可以被删除的列表,并且我们删除了它的第一个元素。”

<template>
  <ul>
    <li
      v-for="(item, index) in list"
      :key="item.id">
      {{ item.content }}
      <button @click="deleteItem(index)">删除</button>
    </li>
  </ul>
</template>

Tip3:在组件中接受数据和事件

在Vue中,可以在组件上定义 props 属性,它可以帮助我们在父组件中向子组件传递数据。同时也可以通过this.$emit(eventName)方法向父组件派发事件。

例子:用父组件向子组件传递内容,同时子组件触发一个事件。

// 父组件
<template>
  <child-component :msg="message" @send="handleSend"></child-component>
</template>

<script>
  export default {
    data() {
      return {
        message: 'Hello World'
      }
    },
    methods: {
      handleSend(data) {
        console.log(data);
      }
    }
  }
</script>

// 子组件
<template>
  <div>
    {{ msg }}
    <button @click="send">触发事件</button>
  </div>
</template>

<script>
  export default {
    props: ['msg'],
    methods: {
      send() {
        this.$emit('send', 'Hello Parent')
      }
    }
  }
</script>

状态管理篇

Tip4: 了解Vuex

Vuex 是Vue中官方的状态管理库,它提供了一个集中式的、响应式的存储状态管理方案。它内部集成了Vue的依赖追踪机制,使得我们在应用内管理和响应状态变化非常方便。

Tip5: 在Vuex中使用mapXXX系列API优化代码

在使用 Vuex 管理应用状态时,当我们需要读取和修改状态的时候,常常需要使用mapXXX系列的辅助函数,比如 mapGettersmapMutationsmapActions 来简化代码和减少键入。这些辅助函数通过对我们所需的状态,mutation 和 actions 进行映射,在组件中提供了更直接且易于阅读的 API。

例子:在组件中使用 VuexmapXXX API。

<template>
  <div>
    <h3>{{ $store.getters.getFullName }}</h3>
    <button @click="updateUserInfo">修改信息</button>
  </div>
</template>

<script>
  import { mapGetters, mapMutations } from 'vuex';

  export default {
    computed: {
      ...mapGetters([
        'getFullName'
      ])
    },
    methods: {
      ...mapMutations([
        'updateName'
      ]),
      updateUserInfo() {
        this.updateName('Tom');
      }
    }
  }
</script>

路由导航篇

Tip6: 更改默认的路由切换动画

在Vue Router中,如果您希望更改默认的路由切换动画而不是使用默认的 transition-group,您可以选择使用 beforeEnterleave 钩子,并且在 css 中定义动画。

Tip7: 路由组件懒加载

为了优化应用程序的性能和减少初始加载时间,我们可以尝试路由组件懒加载,这样只有在路由被调用时才会加载该组件,而非一次性把所有组件都加载出来。我们可以使用 Vue 内置的语法 import() 去实现。

例子:实现路由组件懒加载

const Home = () => import('./views/Home.vue');
const About = () => import('./views/About.vue');

export default new Router({
  routes: [
    {
      path: '/',
      component: Home
    },
    {
      path: '/about',
      component: About
    }
  ]
})

应用优化篇

Tip8: 避免重复渲染相同的数据

当需要在组件中间隔一定时间重复渲染数据时,我们可以选择使用 shouldComponentUpdate 确保只有在 state 更新时才进行渲染操作。

例子:避免重复渲染相同的数据

class Button extends Component {
  shouldComponentUpdate(nextProps) {
    const { onClick, value } = this.props;
    return nextProps.onClick !== onClick || nextProps.value !== value;
  }

  render() {
    const { onClick, value } = this.props;
    return <button onClick={onClick}>{value}</button>;
  }
}

Tip9: 设置合理的事件监听器

在Vue中,当一个组件还原成 DOM 时,它注册的事件监听器不会自动清除。这可能会导致内存泄漏和其它类似的问题。所以我们需要在组件销毁前清除监听器以释放资源。

export default {
  mounted() {
    window.addEventListener('scroll', this.onScroll);
  },
  beforeDestroy() {
    window.removeEventListener('scroll', this.onScroll);
  },
  methods: {
    onScroll() {
      //...
    }
  }
}

以上是本文对Vue开发必须知道的36个技巧做了详细的介绍,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue 开发必须知道的36个技巧(小结) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue 表单输入格式化中文输入法异常问题

    下面将详细讲解“vue 表单输入格式化中文输入法异常问题”的攻略: 什么是格式化表单输入? 格式化表单输入是指将用户输入的数据按照一定格式进行处理,以达到方便用户阅读和使用的目的。比如,将用户输入的手机号码在每四位数字之间加上一个空格或短横线,或者将用户输入的银行卡号在每四位数字之间添加空格。 vue 表单输入格式化中文输入法异常问题 在使用 vue 编写表…

    Vue 2023年5月28日
    00
  • Vue使用$set和$delete操作对象属性

    在Vue中,使用$set和$delete方法可以操作对象属性。有时候,我们需要动态地添加一个属性到一个已经存在的对象上或删除对象中的某一个属性。默认情况下,Vue无法检测到对象属性的变化,因为Vue只能检测到对象已经存在的属性的变化。但如果使用$set和$delete方法来改变对象属性,Vue就可以监听到属性的变化并动态更新视图。 1. $set操作对象属性…

    Vue 2023年5月28日
    00
  • 详解Vue 路由组件传参的 8 种方式

    详解Vue 路由组件传参的 8 种方式 传参概述 在Vue中,路由传参是非常常见的需求,下面是详解Vue路由组件传参的8种方式。 方式一:params 通过动态路径参数进行传参,使用$route.params获取参数。 const router = new VueRouter({ routes: [ { path: ‘/user/:id’, componen…

    Vue 2023年5月28日
    00
  • 如何基于Vue制作一个猜拳小游戏

    下面是基于Vue制作一个猜拳小游戏的完整攻略。 确定游戏规则 在开始制作小游戏之前,我们需要确定游戏规则。假设游戏规则如下: 双方玩家进行猜拳,猜拳的结果有石头、剪刀、布三种情况。 石头胜剪刀,剪刀胜布,布胜石头。 双方猜拳结果相同,平局。 玩家可以选择猜拳次数。 创建Vue应用 首先,我们需要创建一个Vue应用。我们可以使用Vue CLI来快速创建一个基本…

    Vue 2023年5月27日
    00
  • vue watch关于对象内的属性监听

    Vue.js 是一款轻量级的MVVM框架,提供了非常方便的API用于响应用户操作,其中watch就是其中非常重要的一部分,用于实现数据的监听,从而对数据的变化做出响应。 当需要监听对象内部属性时,可以使用深度监听,即使用deep:true选项,Vue会递归地监听对象以及对象内的所有属性变化。下面提供两个示例说明。 示例1 在模板中有一个输入框和一个按钮,当按…

    Vue 2023年5月28日
    00
  • vue实现图片路径转二进制文件流(binary)

    下面是详细的攻略: 如何实现图片路径转换为二进制文件流(binary)? 将图片路径转化为二进制文件流的过程,包括三个步骤:获取图片,读取图片文件二进制,将二进制数据存储起来。下面是具体步骤。 获取图片 获取图片通常需要从 input[type=file] 元素或一个图片 URL。对于 input[type=file] 元素,可通过 onchange 事件获…

    Vue 2023年5月27日
    00
  • 关于vue-cli3+webpack热更新失效及解决

    关于vue-cli3+webpack热更新失效及解决,我将为您提供完整的攻略。 问题描述 在使用vue-cli3+webpack进行开发时,有时候会发现修改代码后页面没有自动刷新,导致热更新失效。这是因为webpack-dev-server的默认watch机制有问题,解决这个问题可以采用以下方案。 解决方案 方案一:关闭webpack的watch机制,使用w…

    Vue 2023年5月28日
    00
  • Vue2.5通过json文件读取数据的方法

    以下是Vue2.5通过JSON文件读取数据的完整攻略。 准备工作 首先,我们需要准备好一个存储数据的JSON文件。 比如,我们准备好了一个叫做data.json的文件,里面存储了如下数据: { "name": "Vue2.5", "version": "2.5.22", &quo…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部