溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue有哪些常用api

發布時間:2022-03-07 14:45:09 來源:億速云 閱讀:517 作者:小新 欄目:web開發

Vue有哪些常用API

Vue.js 是一個漸進式 JavaScript 框架,用于構建用戶界面。它提供了一系列的 API,幫助開發者更高效地構建應用。本文將詳細介紹 Vue.js 中常用的 API,包括全局 API、實例 API、選項 API、生命周期鉤子、指令、組件、插件等。

目錄

  1. 全局 API
  2. 實例 API
  3. 選項 API
  4. 生命周期鉤子
  5. 指令
  6. 組件
  7. 插件
  8. 總結

全局 API

Vue 提供了一些全局 API,可以在任何地方使用。

Vue.extend

Vue.extend 用于創建一個 Vue 組件的子類。

const MyComponent = Vue.extend({
  template: '<div>Hello, Vue!</div>'
});

new MyComponent().$mount('#app');

Vue.nextTick

Vue.nextTick 用于在下次 DOM 更新循環結束之后執行回調函數。

Vue.nextTick(() => {
  console.log('DOM updated');
});

Vue.set

Vue.set 用于向響應式對象添加一個屬性,并確保這個新屬性也是響應式的。

Vue.set(vm.someObject, 'newProperty', 'value');

Vue.delete

Vue.delete 用于刪除對象的屬性,并確保視圖更新。

Vue.delete(vm.someObject, 'propertyToDelete');

Vue.directive

Vue.directive 用于注冊或獲取全局指令。

Vue.directive('focus', {
  inserted: function (el) {
    el.focus();
  }
});

Vue.filter

Vue.filter 用于注冊或獲取全局過濾器。

Vue.filter('capitalize', function (value) {
  if (!value) return '';
  value = value.toString();
  return value.charAt(0).toUpperCase() + value.slice(1);
});

Vue.component

Vue.component 用于注冊或獲取全局組件。

Vue.component('my-component', {
  template: '<div>A custom component!</div>'
});

Vue.use

Vue.use 用于安裝 Vue.js 插件。

Vue.use(MyPlugin);

Vue.mixin

Vue.mixin 用于全局注冊一個混入,影響注冊之后所有創建的每個 Vue 實例。

Vue.mixin({
  created: function () {
    console.log('Global mixin created hook');
  }
});

Vue.compile

Vue.compile 用于在運行時編譯模板字符串。

const res = Vue.compile('<div><span>{{ msg }}</span></div>');

Vue.version

Vue.version 提供當前 Vue 的版本號。

console.log(Vue.version);

實例 API

Vue 實例提供了一些方法和屬性,可以在組件內部使用。

vm.$data

vm.$data 是 Vue 實例的數據對象。

console.log(vm.$data);

vm.$props

vm.$props 是 Vue 實例的 props 對象。

console.log(vm.$props);

vm.$el

vm.$el 是 Vue 實例使用的根 DOM 元素。

console.log(vm.$el);

vm.$options

vm.$options 是 Vue 實例的初始化選項。

console.log(vm.$options);

vm.$parent

vm.$parent 是 Vue 實例的父實例。

console.log(vm.$parent);

vm.$root

vm.$root 是 Vue 實例的根實例。

console.log(vm.$root);

vm.$children

vm.$children 是 Vue 實例的子組件數組。

console.log(vm.$children);

vm.$slots

vm.$slots 是 Vue 實例的插槽對象。

console.log(vm.$slots);

vm.$scopedSlots

vm.$scopedSlots 是 Vue 實例的作用域插槽對象。

console.log(vm.$scopedSlots);

vm.$refs

vm.$refs 是 Vue 實例的引用對象。

console.log(vm.$refs);

vm.$isServer

vm.$isServer 用于檢查 Vue 實例是否運行在服務器端。

console.log(vm.$isServer);

vm.$attrs

vm.$attrs 是 Vue 實例的非 prop 屬性對象。

console.log(vm.$attrs);

vm.$listeners

vm.$listeners 是 Vue 實例的事件監聽器對象。

console.log(vm.$listeners);

vm.$watch

vm.$watch 用于觀察 Vue 實例上的表達式或計算屬性。

vm.$watch('someData', function (newVal, oldVal) {
  console.log('someData changed:', newVal, oldVal);
});

vm.$set

vm.$setVue.set 的別名,用于向響應式對象添加屬性。

vm.$set(vm.someObject, 'newProperty', 'value');

vm.$delete

vm.$deleteVue.delete 的別名,用于刪除對象的屬性。

vm.$delete(vm.someObject, 'propertyToDelete');

vm.$on

vm.$on 用于監聽當前實例上的自定義事件。

vm.$on('custom-event', function (msg) {
  console.log('Custom event triggered:', msg);
});

vm.$once

vm.$once 用于監聽當前實例上的自定義事件,但只觸發一次。

vm.$once('custom-event', function (msg) {
  console.log('Custom event triggered once:', msg);
});

vm.$off

vm.$off 用于移除事件監聽器。

vm.$off('custom-event');

vm.$emit

vm.$emit 用于觸發當前實例上的事件。

vm.$emit('custom-event', 'Hello, Vue!');

vm.$mount

vm.$mount 用于手動掛載 Vue 實例。

vm.$mount('#app');

vm.$forceUpdate

vm.$forceUpdate 用于強制 Vue 實例重新渲染。

vm.$forceUpdate();

vm.$nextTick

vm.$nextTickVue.nextTick 的別名,用于在下次 DOM 更新循環結束之后執行回調函數。

vm.$nextTick(() => {
  console.log('DOM updated');
});

vm.$destroy

vm.$destroy 用于完全銷毀一個 Vue 實例。

vm.$destroy();

選項 API

Vue 實例的選項 API 用于配置 Vue 實例的行為。

data

data 是 Vue 實例的數據對象。

new Vue({
  data: {
    message: 'Hello, Vue!'
  }
});

props

props 是 Vue 實例的 props 數組或對象。

new Vue({
  props: ['message']
});

computed

computed 是 Vue 實例的計算屬性對象。

new Vue({
  computed: {
    reversedMessage: function () {
      return this.message.split('').reverse().join('');
    }
  }
});

methods

methods 是 Vue 實例的方法對象。

new Vue({
  methods: {
    greet: function () {
      alert('Hello, Vue!');
    }
  }
});

watch

watch 是 Vue 實例的觀察器對象。

new Vue({
  watch: {
    message: function (newVal, oldVal) {
      console.log('Message changed:', newVal, oldVal);
    }
  }
});

components

components 是 Vue 實例的局部組件對象。

new Vue({
  components: {
    'my-component': {
      template: '<div>A custom component!</div>'
    }
  }
});

directives

directives 是 Vue 實例的局部指令對象。

new Vue({
  directives: {
    focus: {
      inserted: function (el) {
        el.focus();
      }
    }
  }
});

filters

filters 是 Vue 實例的局部過濾器對象。

new Vue({
  filters: {
    capitalize: function (value) {
      if (!value) return '';
      value = value.toString();
      return value.charAt(0).toUpperCase() + value.slice(1);
    }
  }
});

el

el 是 Vue 實例的掛載元素。

new Vue({
  el: '#app'
});

template

template 是 Vue 實例的模板字符串。

new Vue({
  template: '<div>Hello, Vue!</div>'
});

render

render 是 Vue 實例的渲染函數。

new Vue({
  render: function (h) {
    return h('div', 'Hello, Vue!');
  }
});

renderError

renderError 是 Vue 實例的渲染錯誤處理函數。

new Vue({
  renderError: function (h, err) {
    return h('pre', { style: { color: 'red' }}, err.stack);
  }
});

beforeCreate

beforeCreate 是 Vue 實例的生命周期鉤子,在實例初始化之后,數據觀測和事件配置之前被調用。

new Vue({
  beforeCreate: function () {
    console.log('beforeCreate');
  }
});

created

created 是 Vue 實例的生命周期鉤子,在實例創建完成后被調用。

new Vue({
  created: function () {
    console.log('created');
  }
});

beforeMount

beforeMount 是 Vue 實例的生命周期鉤子,在掛載開始之前被調用。

new Vue({
  beforeMount: function () {
    console.log('beforeMount');
  }
});

mounted

mounted 是 Vue 實例的生命周期鉤子,在掛載完成后被調用。

new Vue({
  mounted: function () {
    console.log('mounted');
  }
});

beforeUpdate

beforeUpdate 是 Vue 實例的生命周期鉤子,在數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。

new Vue({
  beforeUpdate: function () {
    console.log('beforeUpdate');
  }
});

updated

updated 是 Vue 實例的生命周期鉤子,在數據更新后調用,發生在虛擬 DOM 重新渲染和打補丁之后。

new Vue({
  updated: function () {
    console.log('updated');
  }
});

beforeDestroy

beforeDestroy 是 Vue 實例的生命周期鉤子,在實例銷毀之前調用。

new Vue({
  beforeDestroy: function () {
    console.log('beforeDestroy');
  }
});

destroyed

destroyed 是 Vue 實例的生命周期鉤子,在實例銷毀之后調用。

new Vue({
  destroyed: function () {
    console.log('destroyed');
  }
});

errorCaptured

errorCaptured 是 Vue 實例的生命周期鉤子,在捕獲一個來自后代組件的錯誤時被調用。

new Vue({
  errorCaptured: function (err, vm, info) {
    console.error('Error captured:', err, vm, info);
    return false; // 阻止錯誤繼續向上傳播
  }
});

生命周期鉤子

Vue 實例的生命周期鉤子函數允許在實例的不同階段執行自定義邏輯。

beforeCreate

在實例初始化之后,數據觀測和事件配置之前被調用。

new Vue({
  beforeCreate() {
    console.log('beforeCreate');
  }
});

created

在實例創建完成后被調用,此時已完成數據觀測、屬性和方法的運算,但尚未掛載 DOM。

new Vue({
  created() {
    console.log('created');
  }
});

beforeMount

在掛載開始之前被調用,相關的 render 函數首次被調用。

new Vue({
  beforeMount() {
    console.log('beforeMount');
  }
});

mounted

在掛載完成后被調用,此時 DOM 元素已經插入到文檔中。

new Vue({
  mounted() {
    console.log('mounted');
  }
});

beforeUpdate

在數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。

new Vue({
  beforeUpdate() {
    console.log('beforeUpdate');
  }
});

updated

在數據更新后調用,發生在虛擬 DOM 重新渲染和打補丁之后。

new Vue({
  updated() {
    console.log('updated');
  }
});

beforeDestroy

在實例銷毀之前調用,此時實例仍然完全可用。

new Vue({
  beforeDestroy() {
    console.log('beforeDestroy');
  }
});

destroyed

在實例銷毀之后調用,此時所有的事件監聽器和子實例都已被移除。

new Vue({
  destroyed() {
    console.log('destroyed');
  }
});

errorCaptured

在捕獲一個來自后代組件的錯誤時被調用。

new Vue({
  errorCaptured(err, vm, info) {
    console.error('Error captured:', err, vm, info);
    return false; // 阻止錯誤繼續向上傳播
  }
});

指令

Vue 提供了一些內置指令,用于在模板中進行常見的 DOM 操作。

v-text

v-text 用于更新元素的 textContent。

<div v-text="message"></div>

v-html

v-html 用于更新元素的 innerHTML。

<div v-html="htmlContent"></div>

v-show

v-show 用于根據表達式的值切換元素的 display CSS 屬性。

<div v-show="isVisible">Visible</div>

v-if

v-if 用于根據表達式的值條件性地渲染元素。

<div v-if="isVisible">Visible</div>

v-else

v-else 用于表示 v-if 的“else 塊”。

<div v-if="isVisible">Visible</div>
<div v-else>Not Visible</div>

v-else-if

v-else-if 用于表示 v-if 的“else if 塊”。

<div v-if="type === 'A'">A</div>
<div v-else-if="type === 'B'">B</div>
<div v-else>C</div>

v-for

v-for 用于基于源數據多次渲染元素或模板塊。

<ul>
  <li v-for="item in items" :key="item.id">{{ item.text }}</li>
</ul>

v-on

v-on 用于監聽 DOM 事件。

<button v-on:click="handleClick">Click me</button>

v-bind

v-bind 用于動態綁定一個或多個屬性,或一個組件 prop 到表達式。

<img v-bind:src="imageSrc">

v-model

v-model 用于在表單控件或組件上創建雙向綁定。

<input v-model="message">

v-slot

v-slot 用于定義具名插槽或作用域插槽。

<template v-slot:header>
  <h1>Header</h1>
</template>

v-pre

v-pre 用于跳過這個元素和它的子元素的編譯過程。

<div v-pre>{{ this will not be compiled }}</div>

v-cloak

v-cloak 用于保持在元素上直到關聯實例結束編譯。

<div v-cloak>{{ message }}</div>

v-once

v-once 用于只渲染元素和組件一次。

<div v-once>{{ message }}</div>

組件

Vue 組件是 Vue.js 的核心概念之一,允許你將 UI 拆分為獨立、可復用的代碼片段。

組件注冊

組件可以通過 Vue.component 全局注冊,也可以在組件內部局部注冊。

Vue.component('my-component', {
  template: '<div>A custom component!</div>'
});

組件通信

組件之間可以通過 propsevents 進行通信。

Vue.component('child', {
  props: ['message'],
  template: '<div>{{ message }}</div>'
});

new Vue({
  el: '#app',
  data: {
    parentMessage: 'Hello from parent'
  }
});

插槽

插槽允許你在組件中插入內容。

Vue.component('my-component', {
  template: `
    <div>
      <slot></slot>
    </div>
  `
});

作用域插槽

作用域插槽允許你將子組件的數據傳遞給父組件。

Vue.component('my-component', {
  template: `
    <div>
      <slot :text="message"></slot>
    </div>
  `,
  data() {
    return {
      message: 'Hello from child'
    };
  }
});

動態組件

動態組件允許你在多個組件之間動態切換。

<component :is="currentComponent"></component>

異步組件

異步組件允許你按需加載組件。

Vue.component('async-component', function (resolve, reject) {
  setTimeout(() => {
    resolve({
      template: '<div>Async Component</div>'
    });
  }, 1000);
});

插件

Vue 插件通常用于添加全局功能或資源。

插件開發

插件通常是一個對象或函數,包含 install 方法。

const MyPlugin = {
  install(Vue, options) {
    Vue.prototype.$myMethod = function () {
      console.log('MyPlugin method called');
    };
  }
};

Vue.use(MyPlugin);

插件使用

插件可以通過 Vue.use 方法安裝。

Vue.use(MyPlugin);

總結

Vue.js 提供了豐富的

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女