vue3.0 は vue2.x バージョンと下位互換性があり、メインコアの双方向バインディング原則を最適化し、また、よりフレンドリーで ts 構文と互換性があります。 vue3 は、ES6 の新しいプロキシ プロキシに基づいて実装されています。
1.1 vue3 の特徴: 新しく追加された複合 API、ネイティブ JS に近く、より分離された (react からインスピレーションを受けた) オンデマンドでロード 1.2 vue2 との違い
同じ点: ライフサイクルは基本的に同じで、基本的に vue2 のテンプレート構文と一致し、vue2 のオプション、データ メソッドの計算されたウォッチなどと基本的に一致します。
相違点: 異なる起動方法、異なるグローバル メソッドのマウント、vue3 は複数のルート ノードを持つことができる、異なるライフサイクル アンインストール、vue3 の新しいパーツの setup() はコンポーネントがマウントされる前に実行されます。
win R を使用して vue3 をインストールし、cmd と入力してコマンド ウィンドウを開き、次の手順に従ってインストールします。
npm i @vue/cli -g
vue create mv3 //mv3为项目名称
cd /mv3 npm run serve
Vue3 は引き続き Vue2 のライフ サイクル フックを使用しますが、2 つのフックが変更されました - beforeDestroy は名前が変更されます beforeUnmount (アンマウント前) - destroy は名前が変更されますunmounted (uninstalled). vue2 との違いは、vue3 では el テンプレートが利用可能になった後に初期化されるのに対し、vue2 では最初に el テンプレートが作成されてからテンプレートが見つかることです。
Vue3 ライフサイクル図は次のとおりです:
#4. vue3 コア4.1 セットアップコンポーネントvue2 では、ライフ サイクルは vue インスタンスのオプションで公開され、使用時に直接呼び出されます。vue3 でライフ サイクル フックを使用する場合は、使用する前に最初にプロジェクトをインポートする必要があります。 。import {onMounted} from 'vue'
import { ref } from 'vue' //使用前先导入 const counter = ref(0) console.log(counter) // { value: 0 } console.log(counter.value) // 0 counter.value++ console.log(counter.value) // 1
import {reactive} from 'vue' // 定义一个引用类型的响应式数据list 默认是 const list = reactive(["vue","react","angular"])
var twiceNum = computed(()=>num.value*2)
methods: { reversedMessage2: function () { return this.message.split('').reverse().join('') } }
<template> <span> <button @click="count--">-</button> <input type="text" v-model="count"> <button @click="count++">+</button> </span> </template> <script setup> //defineProps定义props import {defineProps,ref,watch,defineEmits,watchEffect,defineExpose} from 'vue' //定义props传入参数 const props=defineProps({ //类型为数字或者字符串,默认值为1 value:{type:[Number,String],default:1} }) //定义一个响应式对象初始值为props.value const count=ref(props.value); //定义事件发送器 var emits=defineEmits(["input"]); //监听count的变化 watch(count,()=>{ //发送一个inout事件 事件值为count的value emits("input",count.value); }) //只要watchEffect中出现了数据,数据发生变化都会被执行 watchEffect(()=>{ count.value=props.value; }) //defineExpose规定了组件哪些值可以被引用获取 defineExpose({count}) </script>
<template> <div> <h2>setup</h2> <button @click="num++">{{num}}</button> <stepper-com :value="10" @input="num=$event"></stepper-com> </div> </template> <script setup> //使用setup可以简写(不用导出,组件不用注册) import StepperCom from '@/components/StepperCom.vue' import {ref} from 'vue' const num=ref(5) </script>
import {ref,onMounted,onBeforeUnmount} from 'vue' export function useWinSize(){ const size=ref({width:1920,height:1080}); //窗口变化时更新size function onResize(){ size.value={ //用窗口的最新宽高更新width和heigth width:window.innerWidth, height:window.innerHeight } } //组件挂载完毕更新size onMounted(()=>{ window.addEventListener("resize",onResize); }) //组件要卸载的时候移除事件监听 onBeforeUnmount(() => { window.removeEventListener("resize",onResize); }) return size; }
<template> <div> <h2>可视区域宽度与高度</h2> <p>{{size}}</p> </div> </template> <script setup> //导入useWinSize方法 import {useWinSize} from '@/utils/utils.js' //方法执行,返回一个对象size const size=useWinSize(); </script>
以上がvue3で画面の表示領域の幅と高さを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。