最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

    正文概述 掘金(用户1548941426154)   2021-05-08   445

    Vue 3.0 项目初始化

    Vue 3.0 项目初始化过程和 Vue 2.0 类似,具体步骤如下:

    Vue 项目初始化

    第一步,安装 vue-cli:

    npm install -g @vue/cli
    

    第二步,初始化 vue 项目:

    vue create vue-next-test
    

    输入命令后,会出现命令行交互窗口,这里我们选择 Manually select features:

    Vue CLI v4.3.1
    ? Please pick a preset: 
      default (babel, eslint) 
    ❯ Manually select features 
    

    随后我们勾选:Router、Vuex、CSS Pre-processors 和 Linter / Formatter,这些都是开发商业级项目必须的:

    Vue CLI v4.3.1
    ? Please pick a preset: Manually select features
    ? Check the features needed for your project: 
     ◉ Babel
     ◯ TypeScript
     ◯ Progressive Web App (PWA) Support
     ◉ Router
     ◉ Vuex
     ◉ CSS Pre-processors
    ❯◉ Linter / Formatter
     ◯ Unit Testing
     ◯ E2E Testing
    

    项目创建完毕后,目录结构如下:

    .
    ├── README.md
    ├── babel.config.js
    ├── package-lock.json
    ├── package.json
    ├── public
    │   ├── favicon.ico
    │   └── index.html
    └── src
        ├── App.vue
        ├── assets
        │   └── logo.png
        ├── components
        │   └── HelloWorld.vue
        ├── main.js
        ├── router
        │   └── index.js
        ├── store
        │   └── index.js
        └── views
            ├── About.vue
            └── Home.vue
    

    升级 Vue 3.0 项目

    目前创建 Vue 3.0 项目需要通过插件升级的方式来实现,vue-cli 还没有直接支持,我们进入项目目录,并输入以下指令:

    cd vue-next-test
    vue add vue-next
    

    执行上述指令后,会自动安装 vue-cli-plugin-vue-next 插件(查看项目代码),该插件会完成以下操作:

    • 安装 Vue 3.0 依赖
    • 更新 Vue 3.0 webpack loader 配置,使其能够支持 .vue 文件构建(这点非常重要)
    • 创建 Vue 3.0 的模板代码
    • 自动将代码中的 Vue Router 和 Vuex 升级到 4.0 版本,如果未安装则不会升级
    • 自动生成 Vue Router 和 Vuex 模板代码

    完成上述操作后,项目正式升级到 Vue 3.0,注意该插件还能支持 typescript,用 typescript 的同学还得再等等。

    Vue 3.0 基本特性体验

    下面我们从项目开发的角度逐步体验 Vue 3.0 的开发流程

    创建路由

    项目开发中,我们通常需要创建新页面,然后添加路由配置,我们在 /src/views 目录下创建 Test.vue:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    之后在 /src/router/index.js 中创建路由配置:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    初始化 Vue Router 的过程与 3.0 版本变化不大,只是之前采用构造函数的方式,这里改为使用 createRouter 来创建 Vue Router 实例,配置的方法基本一致,配置完成后我们还需要在 App.vue 中增加链接到 Test.vue 的路由:

     

     

     

     

    启动项目:

    npm run serve
    

    在浏览器中访问项目地址,此时已经可以跳转到 Test 页面:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    状态和事件绑定

    Vue 3.0 中定义状态的方法改为类似 React Hooks 的方法,下面我们在 Test.vue 中定义一个状态 count:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    Vue 3.0 中初始化状态通过 setup 方法,定义状态需要调用 ref 方法。接下来我们定义一个事件,用来更新 count 状态:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    这里的 add 方法不再需要定义在 methods 中,但注意更新 count 值的时候不能直接使用 count++,而应使用 count.value++,更新代码后,点击按钮,count 的值就会更新了.

     

    计算属性和监听器

    Vue 3.0 中计算属性和监听器的实现依赖 computed 和 watch 方法:

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    计算属性 computed 是一个方法,里面需要包含一个回调函数,当我们访问计算属性返回结果时,会自动获取回调函数的值:

    const doubleCount = computed(() => count.value * 2)
    

    监听器 watch 同样是一个方法,它包含 2 个参数,2 个参数都是 function:

    watch(() => count.value, 
      val => {
        console.log(`count is ${val}`)
      })
    

    第一个参数是监听的值,count.value 表示当 count.value 发生变化就会触发监听器的回调函数,即第二个参数,第二个参数可以执行监听时候的回调

    获取路由

    Vue 3.0 中通过 getCurrentInstance 方法获取当前组件的实例,然后通过 ctx 属性获得当前上下文,ctx.$router 是 Vue Router 实例,里面包含了 currentRoute 可以获取到当前的路由信息

    <script>
      import { getCurrentInstance } from 'vue'
    
      export default {
        setup () {
          const { ctx } = getCurrentInstance()
          console.log(ctx.$router.currentRoute.value)
        }
      }
    </script>
    

     

    Vuex 集成

    Vuex 的集成方法如下:

    定义 Vuex 状态

    第一步,修改 src/store/index.js 文件:

    import Vuex from 'vuex'
    
    export default Vuex.createStore({
      state: {
        test: {
          a: 1
        }
      },
      mutations: {
        setTestA(state, value) {
          state.test.a = value
        }
      },
      actions: {
      },
      modules: {
      }
    })
    

    Vuex 的语法和 API 基本没有改变,我们在 state 中创建了一个 test.a 状态,在 mutations 中添加了修改 state.test.a 状态的方法: setTestA

    引用 Vuex 状态

    第二步,在 Test.vue 中,通过计算属性使用 Vuex 状态:

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

    这里我们通过计算属性来引用 Vuex 中的状态:

    const a = computed(() => ctx.$store.state.test.a)
    

    ctx 是上节中我们提到的当前组件实例

     

    更新 Vuex 状态

    更新 Vuex 状态仍然使用 commit 方法,这点和 Vuex 3.0 版本一致:

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

    Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

     

     

    这里我们点击 update a 按钮后,会触发 update 方法,此时会通过 ctx.$store.commit 调用 setTestA 方法,将 count 的值覆盖 state.test.a 的值

    总结

    通过我第一时间体验 Vue 3.0-beta 版本后,感觉 Vue 3.0 已经具备了商业项目开发的必备条件,语法精炼,不管是代码可读性还是运行效率都非常赞。


    起源地下载网 » Vue3.0发布了初始版本, 抢先体验新特性,API全部函数化

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元