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

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)
上一篇 4天前
下一篇 4天前

相关文章

  • 解决vue elementUI中table里数字、字母、中文混合排序问题

    想要解决Vue ElementUI中的Table里数字、字母、中文混合排序问题,我们需要引入一个第三方库:pinyin。pinyin可以将汉字转换成拼音,这可以帮助我们对含有中文的字符串进行排序。 下面是解决这一问题的完整攻略: 安装pinyin 在终端中输入以下命令进行pinyin的安装: npm install pinyin –save 对Table数…

    Vue 4天前
    00
  • JS实现的点击表头排序功能示例

    下面是详细的攻略: 什么是点击表头排序功能? 点击表头排序是一种JavaScript编写的功能,在表格中点击表头时,可以按照表头所指向的列数据的大小为依据,对表格的行进行排序的功能。 代码实现 以下是一份实现点击表头排序功能的代码示例,其中使用jQuery库和ES6箭头函数: // 获取表格 var table = $(‘table.sortable’); …

    Vue 3天前
    00
  • vue 实现可拖曳的树状结构图

    初步了解: Vue.js 是一个用来构建用户界面的渐进式框架,Vue.js 的核心是 MVVM 模式,数据更新驱动着视图渲染,可以非常方便地处理数据和 DOM 元素的交互。 在本次实现中,我们需要用到 Vue.js 的指令、组件、事件机制等功能进行开发。 第一步:确定开发思路 在 Vue.js 中实现可拖曳的树状结构图,可以将其分为三个部分: 树形结构的展示…

    Vue 2天前
    00
  • Vue3 中 watch 与 watchEffect 区别及用法小结

    下面我将详细讲解“Vue3 中 watch 与 watchEffect 区别及用法小结”的完整攻略。 watch 和 watchEffect 有什么区别 watch watch 是一个函数,它接收三个参数,分别是:待监听的数据对象,回调函数和选项对象。当监听对象的值变化时,回调函数就会被触发。 watchEffect watchEffect 是一个函数,它接…

    Vue 4天前
    00
  • 简易Vue评论框架的实现(父组件的实现)

    下面我来详细讲解一下“简易Vue评论框架的实现(父组件的实现)”: 简述 本文主要介绍如何使用Vue.js实现一个简单的评论框架,涉及组件通信、事件触发等相关知识点。本文将从父组件的实现开始,带你逐步实现一个完整的评论框架。 父组件的实现 创建父组件 首先,我们需要创建一个父组件,用于渲染整个评论区。可以先创建一个Comment.vue文件,并定义一个简单的…

    Vue 4天前
    00
  • 详解vue中使用express+fetch获取本地json文件

    下面就详细讲解如何在vue中使用express+fetch获取本地json文件的完整攻略。 简介 Vue.js是一款极易上手的渐进式JavaScript框架,而Express是一款基于Node.js的快速、灵活的Web应用开发框架。在vue中使用express+fetch获取本地json文件,可以极大地方便我们的前端开发工作,特别是在开发中使用到模拟数据以及…

    Vue 3天前
    00
  • Vue MVVM模型超详细讲解

    Vue MVVM模型超详细讲解 什么是MVVM模型 MVVM模型是Model-View-ViewModel的缩写,是一种前端框架中常用的设计模式。 Model: 数据模型层,提供数据的操作方法; View: 展示层,使用HTML和CSS实现用户界面; ViewModel: 数据绑定层,将View和Model进行双向数据绑定。ViewModel会监听View层…

    Vue 4天前
    00
  • vue实现五子棋游戏

    实现五子棋游戏可以通过Vue框架实现。下面是实现五子棋游戏的流程: 初始化项目 首先,创建一个新的Vue项目,并安装项目所需要的依赖。安装依赖后进行如下配置,将vue.config.js文件的publicPath属性设置为空字符串。 module.exports = { publicPath: ” } 创建五子棋游戏界面 创建五子棋游戏所需要的界面,包括棋…

    Vue 2天前
    00
  • vue动态绑定多个class以及带上三元运算或其他条件

    当我们需要在Vue组件中绑定多个class时,可以使用v-bind:class指令,它可以动态地绑定一个或多个class到元素上。除此之外,还可以结合三元表达式或其他条件来动态地控制class的绑定。 基本语法 <template> <div v-bind:class="{ class1: expression1, class2:…

    Vue 4天前
    00
  • VUE + OPENLAYERS实现实时定位功能

    下面我将为您详细讲解“VUE + OPENLAYERS实现实时定位功能”的完整攻略。 前言 OpenLayers是一个高性能、功能丰富、易于使用的web地图库和开发工具包。在本教程中,我们将演示如何结合Vue框架和OpenLayers库,实现实时定位功能。 环境搭建 在开始编写代码之前,我们需要进行环境搭建。具体步骤如下: 安装Node.js和Vue CLI…

    Vue 3天前
    00