2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)
Proxy
代替defineProperty
实现响应式DOM
的实现和Tree-Shaking
TypeScript
setup
配置ref
与reactive
watch
与watchEffect
provide
与 inject
Fragment
Teleport
Suspense
data
选项应始终被声明为一个函数keyCode
支持作为 v-on
的修饰符官方文档:cli.vuejs.org/zh/guide/cr…
## 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
vue --version
## 安装或者升级你的@vue/cli
npm install -g @vue/cli
## 创建Vue项目,选择Vue3
vue create vue3_test
## 启动
cd vue_test
npm run serve
官方文档:v3.cn.vuejs.org/guide/insta…
vite官网:vitejs.cn
传统构建模式,是将所有资源都打包好,再上线
而Vite是按需加载
接下来我们就用Vite来创建一个Vue3的项目
## 创建工程
npm init vite-app vue3_test-vite
## 进入工程目录
cd vue3_test-vite
## 安装依赖
npm install
## 运行
npm run dev
Vue2项目的main.js
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('#app')
我们再来看看Vue3项目中的main.js
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
分析一下
// 引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'
// 创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)
console.log(app)
// 挂载
app.mount('#app')
我们再来看看组件
在template
标签里可以没有根标签了
<template>
<!-- Vue3组件中的模板结构可以没有根标签 -->
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</template>