先安装cli脚手架,命令如下:

npm install -g @vue/cli
$vue -V //使用命令查看cli版本
@vue/cli 4.3.1 //当前cli版本

初始化Vue项目,命令如下:

vue create "项目名称" //创建项目
>Manully select features //手动选择
Babel,Router,Vuex,CSS Pre-processors,Linter / Formatter //选择这些模块

剩下的直接回车

升级项目,命令如下:

cd "项目"
vue add vue-next //安装

该命令会完成: ·安装Vue3.0依赖 ·更新Vue3.0 webpack loader配置,使其能够支持 .vue文件构建(重要) ·创建Vue3.0 的模板代码 ·自动升级Vue Router ·自动生成Vue Router和Vuex模板代码

启动项目

基于ReadMe.md,其中的命令启动项目。

项目过程问题

使用composition API的provide和inject实现组件间传值 注意!!provide和inject只能在setup()函数中使用

import {provide} from 'vue' //引入provide
provide("data","send") //父组件传值
let send = inject("data") //子组件接收
return {
  send //返回使用
}

Vue3.0新特性

Vue3.0的设计目标是更快,更小,并更好的支持TypeScript 新特性包括

composition
Multiple root elements
Suspense
Multiple V-models
Reactivity
Teleport
Transition
Remove Filter
App configuration

1、Composition API

Vue3.0中模板带有setup()函数,用于处理数据,需要使用ref函数声明数据(也可以直接声明函数),return返回在模板中使用。

import {ref} from 'vue'
export default{
   setup() {
      const count = ref(0)
      const inc = () =>{
          count.value++
      }
      return { 
          count,
          inc
      }
   }
}

composition主要有两大好处: 1.清晰的代码结构2.消除重复逻辑 小结:composition API主要针对闭包的应用,通过其他函数中声明值,并使用watch函数监视,在需要的组件引入,达到代码复用。

2、Multiple root elements

Vue2.0中template的根元素只能取一个,要用div包含。 Vue3.0中取消了这一限制: 在template中使用任意数量的标签

3、Suspense

Suspense使用与前后端数据交互时,提供默认内容加载,当数据返回时配合使用v-if来控制数据显示。 Suspense简化了这个过程:它提供了default和fallback状态:

<Suspense>
    <template #default>
      <div v-for="item in articleList" :key="item.id">
        <article>
          <h2>{{ item.title }}</h2>
          <p>{{ item.body }}</p>
        </article>
      </div>
    </template>
    <template #fallback>
      Articles loading...
    </template>
</Suspense>

4、Multiple v-models

一个表单可以绑定多个V-model

<Form>
    v-model:name="name"
    v-model:age = "age"
</Form>

5、Reactivity

3.0响应式系统全部用Typescript重构,利用代理(Proxy)和反射(Reflect)来替换Vue2.0的Object.defineProperty 耦合度降低,分类清晰。 支出通过修改数组下标的时候进行响应。

6、Portals