Vue3.0是2020年4月刚刚发布了beta版本的全新Vue版本html
https://github.com/kaiqiangren/vue-next-ts-previewvue
同时也是能力提高的机会吧,特别喜欢Vue做者的设计初心:让开发者随着框架一块儿成长!node
npm i @vue/cli -g
vue add vue-next
{ "name": "vue3-app-ts", "version": "0.1.0", "private": true, "scripts": { "build": "vue-cli-service build", "lint": "vue-cli-service lint", "dev": "vue-cli-service serve" }, "dependencies": { "core-js": "^3.6.4", "vue": "^3.0.0-beta.4", "vue-router": "^4.0.0-alpha.7", "vuex": "^4.0.0-alpha.1" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^2.26.0", "@typescript-eslint/parser": "^2.26.0", "@vue/cli-plugin-babel": "~4.3.0", "@vue/cli-plugin-eslint": "~4.3.0", "@vue/cli-plugin-router": "~4.3.0", "@vue/cli-plugin-typescript": "~4.3.0", "@vue/cli-plugin-vuex": "~4.3.0", "@vue/cli-service": "~4.3.0", "@vue/compiler-sfc": "^3.0.0-beta.1", "@vue/eslint-config-typescript": "^5.0.2", "eslint": "^6.7.2", "eslint-plugin-vue": "^7.0.0-alpha.0", "node-sass": "^4.12.0", "sass-loader": "^8.0.2", "typescript": "~3.8.3", "vue-cli-plugin-vue-next": "~0.1.2" } }
import { createApp } from 'vue'; import App from './App.vue' import router from './router' const app = createApp(App) app.use(router) app.mount('#app')
import { ref, reactive } from 'vue' // 方式一: 可传入任意类型的值,改变值的时候必须使用其value属性,例 refData.value = 2 const refData = ref(0) // 方式二: 只能传入引用类型的值 const data = reactive({ tableData: [ { name: '姓名1' } ] }) // 使用响应式变量前,必须在Vue文件的setup函数中 执行/return 出去 setup (props, context){ return { refData, data } }
import { watch, watchEffect, computed } from 'vue' // 一、建立只读的计算属性 const computedCount = computed(() => count.value + 1) // 二、建立可读可写的计算属性 const computedCount2 = computed({ get: () => writeCount.value + 2, set: (val) => { return writeCount.value = val + 2 } }) // computedCount2
import { ref, watch, watchEffect } from 'vue' const count = ref(0) // watchEffect会自动收集响应式依赖 watchEffect(() => console.log(count.value)) // 监听指定基础类型数据 watch(count, (now, prev) => { console.log(now, prev, 'count') }) const data = reactive({ tableData: [ { name: '姓名1' } ] }) // 监听reactive建立的响应式变量,能够直接监听对象,必须使用内联函数 watch(() => data.tableData, (now, prev) => { console.log(now, prev, 'tableData') })
import { reactive, provide , inject} from 'vue' const data = reactive({ tableData: [ { name: '姓名1' } ] }) // 根级/父级组件 // provide 这里若是提供的是响应式变量,inject也会触发响应 provide('provideName', 'provideData') provide('provideReactive', data.tableData) // 子级/孙级组件 setup () { const provideData = inject('provideName') const provideReactive = inject('provideReactive') return { provideData, provideReactive } }
Vue3.0生命周期 说明 对应的Vue2.0生命周期 setup | 初始化数据阶段的生命周期,介于beforeCreate与created之间 至关于beforeCreate、created的合并 onBeforeMount | 组件挂载前 beforeMount onMounted | 实例挂载完毕 mounted onBeforeUpdate | 响应式数据变化前 beforeUpdate onUpdated | 响应式数据变化完成 updated onBeforeUnmount | 实例销毁前 beforeDestroy onUnmounted | 实例已销毁 destroyed onErrorCaptured | 错误数据捕捉 --