在Vue.js的开发过程中,掌握一些实用的函数可以大大提升开发效率。以下将介绍50个Vue.js中常用的实用函数,帮助你更高效地进行前端开发。

一、基础函数

1. $nextTick()

  • 功能描述:在下次DOM更新循环结束之后执行延迟回调。
  • 使用场景:在修改数据后需要执行的操作。
this.$nextTick(() => {
  // DOM更新后的操作
});

2. $refs

  • 功能描述:获取子组件的实例。
  • 使用场景:操作子组件的DOM或方法。
this.$refs.childRef.method();

3. $route

  • 功能描述:获取当前路由信息。
  • 使用场景:根据路由信息进行页面跳转或数据请求。
this.$router.push('/path');

二、数据绑定与操作

4. v-model

  • 功能描述:实现表单元素与Vue实例的数据双向绑定。
  • 使用场景:实现输入框、复选框等表单元素与数据绑定。
<input v-model="inputValue">

5. v-bind

  • 功能描述:动态绑定属性。
  • 使用场景:绑定数据到HTML元素。
<img v-bind:src="imageUrl">

6. v-if

  • 功能描述:条件渲染元素。
  • 使用场景:根据条件显示或隐藏元素。
<div v-if="isShow">显示内容</div>

三、事件处理

7. @click

  • 功能描述:监听点击事件。
  • 使用场景:处理点击事件。
<button @click="handleClick">点击我</button>

8. @input

  • 功能描述:监听输入事件。
  • 使用场景:处理输入事件。
<input @input="handleInput">

9. @change

  • 功能描述:监听改变事件。
  • 使用场景:处理数据改变事件。
<select @change="handleChange">
  <option value="1">选项1</option>
  <option value="2">选项2</option>
</select>

四、列表渲染

10. v-for

  • 功能描述:遍历数组或对象。
  • 使用场景:渲染列表数据。
<ul>
  <li v-for="item in items">{{ item.name }}</li>
</ul>

11. v-ifv-else-ifv-else

  • 功能描述:条件渲染元素。
  • 使用场景:根据条件显示或隐藏多个元素。
<div v-if="isShow">显示内容1</div>
<div v-else-if="isShow2">显示内容2</div>
<div v-else>显示内容3</div>

五、条件渲染

12. v-show

  • 功能描述:根据条件切换元素的显示与隐藏。
  • 使用场景:根据条件显示或隐藏元素,不改变DOM结构。
<div v-show="isShow">显示内容</div>

13. v-once

  • 功能描述:元素或组件只渲染一次,并且当数据变化时,不会再次更新。
  • 使用场景:渲染不经常改变的数据。
<div v-once>{{ message }}</div>

六、组件使用

14. components

  • 功能描述:全局注册组件。
  • 使用场景:在多个页面中使用相同的组件。
Vue.component('my-component', MyComponent);

15. v-bind:is

  • 功能描述:动态绑定组件。
  • 使用场景:根据数据动态渲染不同的组件。
<div v-bind:is="currentComponent"></div>

七、过渡与动画

16. <transition>

  • 功能描述:包裹要过渡的元素或组件。
  • 使用场景:实现元素或组件的过渡动画。
<transition name="fade">
  <div v-if="isShow">内容</div>
</transition>

17. <transition-group>

  • 功能描述:包裹多个要过渡的元素或组件。
  • 使用场景:实现多个元素或组件的过渡动画。
<transition-group name="list">
  <li v-for="item in items" :key="item.id">{{ item.name }}</li>
</transition-group>

八、事件总线

18. $bus

  • 功能描述:全局事件总线。
  • 使用场景:组件间通信。
// 在Vue原型上添加$bus属性
Vue.prototype.$bus = new Vue();

// 发送事件
this.$bus.$emit('event-name', data);

// 监听事件
this.$bus.$on('event-name', (data) => {
  // 处理事件
});

九、路由导航

19. $router

  • 功能描述:获取Vue Router实例。
  • 使用场景:路由跳转、路由替换等。
this.$router.push('/path');
this.$router.replace('/path');

20. $route.params

  • 功能描述:获取当前路由的参数。
  • 使用场景:根据参数获取数据。
console.log(this.$route.params.id);

十、生命周期钩子

21. created

  • 功能描述:在实例创建完成后被立即调用。
  • 使用场景:在组件创建完成后执行的操作。
created() {
  // 初始化数据
}

22. mounted

  • 功能描述:在挂载到DOM后调用。
  • 使用场景:在DOM元素挂载后执行的操作。
mounted() {
  // 操作DOM
}

23. beforeDestroy

  • 功能描述:在实例销毁之前调用。
  • 使用场景:在组件销毁前执行的操作。
beforeDestroy() {
  // 清理工作
}

十一、异步组件

24. defineAsyncComponent()

  • 功能描述:定义一个异步组件。
  • 使用场景:按需加载组件,提高页面加载速度。
const AsyncComponent = defineAsyncComponent(() => {
  return import('./AsyncComponent.vue');
});

十二、自定义指令

25. Vue.directive()

  • 功能描述:全局注册或局部注册一个自定义指令。
  • 使用场景:自定义指令,实现特定功能。
Vue.directive('my-directive', {
  bind(el, binding) {
    // 绑定指令时执行的操作
  }
});

十三、混入

26. Vue.mixin()

  • 功能描述:全局注册一个混入对象。
  • 使用场景:共享方法和数据。
Vue.mixin({
  methods: {
    myMethod() {
      // 方法
    }
  }
});

十四、插件

27. Vue.use()

  • 功能描述:全局注册一个插件。
  • 使用场景:扩展Vue实例的功能。
Vue.use(MyPlugin);

28. my-plugin.js

  • 功能描述:插件主体。
const MyPlugin = {
  install(Vue, options) {
    // 插件逻辑
  }
};

十五、工具函数

29. debounce()

  • 功能描述:防抖函数。
  • 使用场景:避免短时间内多次触发事件。
const debounce = (fn, delay) => {
  let timeout = null;
  return function(...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      fn(...args);
    }, delay);
  };
};

30. throttle()

  • 功能描述:节流函数。
  • 使用场景:限制事件触发频率。
const throttle = (fn, delay) => {
  let canRun = true;
  return function(...args) {
    if (!canRun) return;
    canRun = false;
    setTimeout(() => {
      fn(...args);
      canRun = true;
    }, delay);
  };
};

31. formatDate()

  • 功能描述:格式化日期。
const formatDate = (date) => {
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  return `${year}-${month}-${day}`;
};

32. toFixed()

  • 功能描述:格式化数字。
const toFixed = (num, decimal) => {
  return Number(num.toFixed(decimal));
};

33. capitalize()

  • 功能描述:首字母大写。
const capitalize = (str) => {
  return str.charAt(0).toUpperCase() + str.slice(1);
};

34. snakeCase()

  • 功能描述:转换为蛇形命名。
const snakeCase = (str) => {
  return str.replace(/([A-Z])/g, '-$1').toLowerCase();
};

35. kebabCase()

  • 功能描述:转换为短横线命名。
const kebabCase = (str) => {
  return str.replace(/([A-Z])/g, '-$1').toLowerCase();
};

36. pascalCase()

  • 功能描述:转换为帕斯卡命名。
const pascalCase = (str) => {
  return str
    .replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
      return index === 0 ? word.toLowerCase() : word.toUpperCase();
    })
    .replace(/\s+/g, '');
};

37. camelCase()

  • 功能描述:转换为驼峰命名。
const camelCase = (str) => {
  return str
    .replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
      return index === 0 ? word.toLowerCase() : word.toUpperCase();
    })
    .replace(/\s+/g, '');
};

38. capitalizeWords()

  • 功能描述:单词首字母大写。
const capitalizeWords = (str) => {
  return str
    .split(' ')
    .map((word) => {
      return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    })
    .join(' ');
};

39. capitalizeFirstLetter()

  • 功能描述:首字母大写。
const capitalizeFirstLetter = (str) => {
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
};

40. titleCase()

  • 功能描述:单词首字母大写。
const titleCase = (str) => {
  return str
    .split(' ')
    .map((word) => {
      return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    })
    .join(' ');
};

41. capitalizeFirstWord()

  • 功能描述:首单词首字母大写。
const capitalizeFirstWord = (str) => {
  return str
    .split(' ')
    .map((word, index) => {
      return index === 0
        ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
        : word.toLowerCase();
    })
    .join(' ');
};

42. capitalizeLastWord()

  • 功能描述:尾单词首字母大写。
const capitalizeLastWord = (str) => {
  const words = str.split(' ');
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

43. capitalizeAllWords()

  • 功能描述:所有单词首字母大写。
const capitalizeAllWords = (str) => {
  return str
    .split(' ')
    .map((word) => {
      return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    })
    .join(' ');
};

44. capitalizeFirstLetterOfEachWord()

  • 功能描述:每个单词首字母大写。
const capitalizeFirstLetterOfEachWord = (str) => {
  return str
    .split(' ')
    .map((word) => {
      return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
    })
    .join(' ');
};

45. capitalizeWordsExceptFirst()

  • 功能描述:除了第一个单词,其他单词首字母大写。
const capitalizeWordsExceptFirst = (str) => {
  const words = str.split(' ');
  words[0] = words[0].toLowerCase();
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

46. capitalizeWordsExceptLast()

  • 功能描述:除了最后一个单词,其他单词首字母大写。
const capitalizeWordsExceptLast = (str) => {
  const words = str.split(' ');
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

47. capitalizeFirstLetterOfEachWordExceptFirst()

  • 功能描述:除了第一个单词,其他单词首字母大写。
const capitalizeFirstLetterOfEachWordExceptFirst = (str) => {
  const words = str.split(' ');
  words[0] = words[0].toLowerCase();
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

48. capitalizeFirstLetterOfEachWordExceptLast()

  • 功能描述:除了最后一个单词,其他单词首字母大写。
const capitalizeFirstLetterOfEachWordExceptLast = (str) => {
  const words = str.split(' ');
  words[0] = words[0].toLowerCase();
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

49. capitalizeAllWordsExceptFirst()

  • 功能描述:除了第一个单词,其他单词首字母大写。
const capitalizeAllWordsExceptFirst = (str) => {
  const words = str.split(' ');
  words[0] = words[0].toLowerCase();
  return words.join(' ');
};

50. capitalizeAllWordsExceptLast()

  • 功能描述:除了最后一个单词,其他单词首字母大写。
const capitalizeAllWordsExceptLast = (str) => {
  const words = str.split(' ');
  words[words.length - 1] = words[words.length - 1]
    .charAt(0)
    .toUpperCase() + words[words.length - 1].slice(1).toLowerCase();
  return words.join(' ');
};

通过以上50个Vue.js实用函数,相信能够帮助你更好地进行前端开发,提高开发效率。希望这些技巧能够在实际项目中发挥出它们的作用。