vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue OptionsAPI与CompositionAPI

Vue OptionsAPI与CompositionAPI的区别与使用介绍

作者:执键行天涯

OptionsAPI和CompositionAPI是Vue.js框架中两种不同的组件编写方式,OptionsAPI通过对象字面量定义组件,以属性分隔不同功能,响应式数据通过data属性定义,本文给大家介绍Vue OptionsAPI与CompositionAPI的区别,感兴趣的朋友一起看看吧

OptionsAPI与CompositionAPI在代码使用和逻辑上的区别

一、代码使用方面的区别

(一)组件定义的结构

export default {
  data() {
    return {
      message: 'Hello, OptionsAPI'
    };
  },
  methods: {
    sayHello() {
      console.log(this.message);
    }
  },
  mounted() {
    this.sayHello();
  }
};
import { ref } from 'vue';
export default {
  setup() {
    const message = ref('Hello, CompositionAPI');
    const sayHello = () => {
      console.log(message.value);
    };
    sayHello();
    return {
      message,
      sayHello
    };
  }
};

(二)响应式数据的定义与使用

OptionsAPI

export default {
  data() {
    return {
      count: 0
    };
  },
  methods: {
    increment() {
      this.count++;
    }
  }
};
import { ref } from 'vue';
export default {
  setup() {
    const count = ref(0);
    const increment = () => {
      count.value++;
    };
    return {
      count,
      increment
    };
  }
};
import { reactive } from 'vue';
export default {
  setup() {
    const state = reactive({
      count: 0
    });
    const increment = () => {
      state.count++;
    };
    return {
      state,
      increment
    };
  };
};

(三)逻辑复用的实现方式

const myMixin = {
  data() {
    return {
      sharedData: 'This is shared data'
    };
  },
  methods: {
    sharedMethod() {
      console.log('This is a shared method');
    }
  }
};
export default {
  mixins: [myMixin],
  // 组件自身的其他逻辑
  data() {
    return {
      componentData: 'This is component - specific data'
    };
  },
  mounted() {
    this.sharedMethod();
  }
};

但是mixins存在一些问题,如可能导致命名冲突(如果多个mixins中有相同名称的属性或方法),并且在组件中使用时,难以追踪某个属性或方法的来源。

例如:

import { ref } from 'vue';
const useCounter = () => {
  const count = ref(0);
  const increment = () => {
    count.value++;
  };
  return {
    count,
    increment
  };
};
export default {
  setup() {
    const { count, increment } = useCounter();
    return {
      count,
      increment
    };
  }
};

二、逻辑方面的区别

(一)逻辑内聚性

(二)对Type - Script的支持逻辑

export default {
  data(): {
    message: string;
  } {
    return {
      message: 'Hello'
    };
  },
  methods: {
    sayHello(): void {
      console.log(this.message);
    }
  }
};
import { ref } from 'vue';
const useCounter = (): {
  count: { value: number };
  increment: () => void;
} => {
  const count = ref(0);
  const increment = () => {
    count.value++;
  };
  return {
    count,
    increment
  };
};
export default {
  setup(): {
    count: { value: number };
    increment: () => void;
  } {
    const { count, increment } = useCounter();
    return {
      count,
      increment
    };
  }
};

到此这篇关于Vue OptionsAPI与CompositionAPI的区别的文章就介绍到这了,更多相关Vue OptionsAPI与CompositionAPI内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文