Vite 是一個 web 開發構建工具,由於其原生 ES 模塊導入方法,它允許快速提供代碼。
通過在終端中運行以下命令,可以使用 Vite 快速構建 Vue 項目。
$ npm init vite-app <project-name> $ cd <project-name> $ npm install $ npm run dev
或者 yarn:
$ yarn create vite-app <project-name> $ cd <project-name> $ yarn $ yarn dev
運行完成后會得到一個如下結構的文件

在該文件夾下執行 npm run dev

會得到如圖所示地址,在啟動時可以明顯的感覺到項目的啟動速度非常快,基本做到秒開,輸入地址得到如下頁面

在 packafe.json 中可以看到采用的是 vite 啟動方法,同時 vue 版本是 3.0.4,說明這個項目是基於 vue3.0 的

在main.js 中可以看到采用了 createApp 函數來掛載整個實例,這里和 vue2.0 是不同的

至此,我們就可以在這個項目中編寫 vue3.0 代碼了,這里附上一個小 Demo,此Demo中用到了computed,onMounted,onUnmounted,reactive,ref,toRefs,watch,

<template>
<h1>{{ msg }}</h1>
<button @click="count++">count is: {{ count }}</button>
<p>{{ counter }}</p>
<p>{{ doubleCounter }}</p>
<button @click="clearTimer">暫停計時器</button>
<p ref="tagP">11</p>
</template>
<script>
import {
computed,
onMounted,
onUnmounted,
reactive,
ref,
toRefs,
watch,
} from "vue";
export default {
props: ["msg"],
setup() {
// ref 只能聲明普通值類型
const count = ref(0);
// 聲明定時器
let timer = ref(null);
// 解構 toRefs 后的數據不會丟失響應式
const { counter, doubleCounter } = useCounter(timer);
// 獲取元素
const tagP = useTagp(counter);
// 暫停方法
const clearTimer = () => {
useClearTime(timer);
};
return {
count,
counter,
doubleCounter,
clearTimer,
tagP,
};
},
};
// 計算屬性
function useCounter(timer) {
// reactive 聲明引用類型
const data = reactive({
counter: 1,
doubleCounter: computed(() => data.counter * 2),
});
// 頁面加載觸發
onMounted(() => {
timer.value = setInterval(() => {
data.counter++;
}, 1000);
});
// 頁面銷毀
onUnmounted(() => {
clearInterval(timer.value);
});
// 使用 toRefs 可以將 reactive 類型 裝換為 ref 單個值類型,並且解構不會丟失響應式
return toRefs(data);
}
// 獲取頁面元素並且改變值
function useTagp(counter) {
const tagP = ref(null);
watch(counter, (val, oldVal) => {
tagP.value.innerHTML = `from ${oldVal} to ${val}`;
});
return tagP;
}
// 清除定時器
function useClearTime(timer) {
clearInterval(timer.value);
}
</script>
