性能的提升、源码的升级、更好的支持TypeScript、新的特性
官方文档
vue --version
npm install -g @vue/cli
vue create vue-test
cd vue_test
npm run serve
npm init vite-app
cd
npm install
npm run dev
//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'
// createApp(App).mount('#app')
//创建应用实例对象-app(类似于vue2中的vm,但app比vm更“轻”)
const app=createApp(App)
console.log("app",app)
//挂载
app.mount('#app')
setTimeout(()=>{
//卸载
app.unmount("#app")
},5000)
//对比:vue2中的写法
/*const vm=new Vue({
render:h=>h(App)
})
vm.$mount("#app")*/
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
lintOnSave: false, //关闭语法检查
})
<template>
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
}
}
script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
style>
<template>
<h1>一个人的信息h1>
<h2>姓名:{{name}}h2>
<h2>年龄:{{age}}h2>
<button @click="sayHello">说话button>
template>
<script>
import {h} from 'vue'
export default {
name: 'App',
//此处只是测试一下setup,暂不考虑响应式的问题
setup(){
//数据
let name="张三"
let age=18
//方法
function sayHello(){
alert(`我叫${name},今年${age}岁了~`)
}
//返回一个对象(常用)
return{
name,
age,
sayHello
}
//返回一个函数(渲染函数)
// return ()=>h('h1','个人信息')
}
}
script>
<template>
<h1>一个人的信息h1>
<h2>姓名:{{name}}h2>
<h2>年龄:{{age}}h2>
<button @click="sayHello">说话button>
template>
<script>
import {h} from 'vue'
export default {
name: 'App',
//此处只是测试一下setup,暂不考虑响应式的问题
setup(){
//数据
let name="张三"
let age=18
//方法
function sayHello(){
alert(`我叫${name},今年${age}岁了~`)
}
//返回一个对象(常用)
/*return{
name,
age,
sayHello
}*/
//返回一个函数(渲染函数)
return ()=>h('h1','个人信息')
}
}
script>
<template>
<h1>一个人的信息h1>
<h2>姓名:{{name}}h2>
<h2>年龄:{{age}}h2>
<h2>性别:{{sex}}h2>
<h2>a:{{a}}h2>
<button @click="sayHello">说话button>
<br>
<br>
<button @click="sayWelcome">说话button>
<br>
<br>
<button @click="test1">测试一下在Vue2的配置中去读取Vue3中的数据、方法button>
<br>
<br>
<button @click="test2">测试一下在Vue3中的setup配置中去读取Vue2的数据、方法button>
template>
<script>
import {h} from 'vue'
export default {
name: 'App',
data(){
return{
sex:"男",
a:100
}
},
methods:{
sayWelcome(){
alert("你好"+this.sex+"士,欢迎光临")
},
test1(){
console.log("name",this.name)
console.log("age",this.age)
console.log("sex",this.sex)
console.log("sayHello",this.sayHello)
console.log("sayWelcome",this.sayWelcome)
},
},
//此处只是测试一下setup,暂不考虑响应式的问题
setup(){
//数据
let name="张三"
let age=18
let a=200
//方法
function sayHello(){
alert(`我叫${name},今年${age}岁了~`)
}
function test2(){
console.log('------------------------')
console.log('name',name);
console.log('age',age)
console.log('sex',this.sex)
console.log('sayWelcome',this.sayWelcome)
}
//返回一个对象(常用)
return{
name,
age,
sayHello,
test2,
a
}
//返回一个函数(渲染函数)
// return ()=>h('h1','个人信息')
}
}
script>
Composition API(组合API)
“表演的舞台”可以访问到
setup中的属性、方法不能访问到
Vue2.x配置(data、methods、computed…)