vue3 typescript实战,vue+typescript实战教程

  vue3 typescript实战,vue+typescript实战教程

  本文主要介绍Vue3结合TypeScript项目的开发实践总结,通过示例代码详细介绍,具有一定的参考价值,感兴趣的朋友可以参考一下。

  

目录

  概述1。组合API 1,ref和reactive的区别?2.周期函数3、存储使用4、路由器使用2、关注点分离3、类型脚本支持

  

概述

  Vue3出来有一段时间了,在团队里也进行了很多商业实践和自己的一些思考。

  总的来说,Vue3无论是在底层原理上,还是在实际业务发展上,都取得了很大的进步。

  用proxy代替之前Object.defineProperty的API,性能更加优秀,也解决了vue之前在处理对象和数组方面的缺陷;diff算法中使用了静态标记,大大提高了Vue的执行效率。

  在使用层面,我们从options Api变成了composition Api。慢慢地,在实际业务中,我们放弃了最初孤立地编写数据、方法和计算。更专注的Compositon Api,关注的是相关业务的聚合。同时,在组合Api中,为了防止过于沉重的业务逻辑,提供了分离关注点的方式,大大提高了我们代码的可读性。

  全面支持TypeScript,类型验证已经成为Vue3未来大型项目开发的质量保证。同时也是面对趋势——前端的未来是打字稿!

  

1、compositon Api

  compositon Api的精髓体现在代码中,就是一个设置函数。在此设置功能中,返回的数据将用于此组件的模板中。这个返回的对象,一定程度上代表了之前vue2中的数据属性。

  从“vue”导入{ defineComponent,ref };

  导出默认定义组件({

  名称:礼物,

  setup() {

  const counter=ref(0);

  返回{

  计数器

  }

  }

  })

  此时,对于大多数初学者来说,可能的疑惑是,我能定义选项Api的编写吗,比如data、computed、watch、methods等。

  这里我需要明确一点,Vue3是这个options Api的编写方法,完全兼容Vue2,但是从概念上来说,更推荐用setup的方式来编写我们的组件。原因如下:Vue3的存在是为了解决Vue2本身的问题,而Vue2的问题是缺乏聚合会导致代码越来越臃肿!设置的方式可以生成数据、方法逻辑、依赖关系等。聚合在一起,更方便维护。

  也就是说,在未来,我们应该尽量不要单独编写数据、计算、观察、方法等。不是说Vue3不支持,而是违背了Vue3的理念。

  属性,即组件的子组件。这个配置在Vue2和3之间差别不大。Vue2怎么用,Vue3还是那么用。

  

1、ref 和 reactive的区别?

  函数方面,ref和reactive都是响应式数据!

  在语法层面,两者是有区别的。ref定义的响应数据需要通过[data]进行更改。价值;由反应需求[数据]定义的数据。[属性]更改数据。

  const act title:ref string=ref( activity name );

  const actData=reactive({

  列表:[],

  总计:0,

  curentPage: 1,

  页面大小:10

  });

  行动;标题;value=“活动名称2”;

  actData.total=100

  但是在应用层面,还是有区别的。一般来说,我们使用ref来定义单一常见数据类型的响应。在表单的场景中,描述对象的场景如key:value of a form,使用reactive;在某些场景下,某个模块的一组数据通常是以反应式的方式定义的。

  那么,一定要用reactive来定义对象吗?其实不是的。没关系。根据自己的业务场景,具体问题具体分析!Ref强调一个数据的值的变化,reactive强调一个定义对象的某个属性的变化。

  

2、周期函数

  周期函数,在Vue3中,单独使用,用法如下:

  从“vue”导入{ defineComponent,ref,on mounted };

  导出默认定义组件({

  名称:礼物,

  setup() {

  const counter=ref(0);

  onMounted(()={

  //处理业务,一般做数据请求。

  })

  返回{

  计数器

  }

  }

  })

  

3、store使用

  在Vue2中,你其实可以通过这个直接得到。$store,但在Vue3中,没有这个概念。用法如下:

  从“vuex”导入{ use store };

  从“vue”导入{ defineComponent,ref,computed };

  导出默认定义组件({

  名称:礼物,

  setup() {

  const counter=ref(0);

  const store=use store();

  const storeData=computed(()=store);//配合computed获取store的值。

  返回{

  计数器,

  storeData

  }

  }

  })

  

4、router的使用

  在Vue2中,路线由此编程。$router,但在Vue3中,它是这样使用的:

  从“vuex”导入{ use store };

  从“vue-router”导入{ user outer };

  从“vue”导入{ defineComponent,ref,computed };

  导出默认定义组件({

  名称:礼物,

  setup() {

  const counter=ref(0);

  const router=user outer();

  const onClick=()={

  router . push({ name: add gift });

  }

  返回{

  计数器,

  单击事件

  }

  }

  })

  

2、关注点分离

  关注点分离应该分为两层意思:第一层意思是Vue3本身的设置把相关的数据和处理逻辑放在一起,是一种关注点的聚合,方便我们看业务代码。

  第二层意味着当设置变大时,我们可以在设置内提取一个相关的业务,从而分离出第二层的关注点。

  从“vuex”导入{ use store };

  从“vue-router”导入{ user outer };

  从“vue”导入{ defineComponent,ref,computed };

  从导入用户商品列表。/merchant . js ;

  导出默认定义组件({

  名称:礼物,

  setup() {

  const counter=ref(0);

  const router=user outer();

  const onClick=()={

  router . push({ name: add gift });

  }

  //在这个例子中,我们将与获取商家列表相关的业务分开。那就是下面的merchant.ts。

  const { merchant list }=use merchant list();

  返回{

  计数器,

  onClick,

  商人

  }

  }

  })

  merchant.ts

  从“@/api/rights/gift”导入{ get merchantlist };

  从“vue”导入{ ref,on mounted };

  导出默认函数useMerchantList(): Recordstring,any {

  const merchantList=ref([]);

  const fetchMerchantList=async()={

  let RES=wait get merchantlist({ });

  merchantList.value=res?数据?孩子;

  };

  on mounted(fetchMerchantList);

  返回{

  商人

  };

  }

  

3、TypeScript支持

  这部分内容,准确的说是TS的内容,但是和Vue3项目的开发息息相关,所以如果真的要用Vue3,还是要了解TS的用法。

  不过这部分我不会介绍TS的基本语法,主要是在业务场景下如何组织TS。

  使用TS进行业务开发的一个核心思想就是先关注数据结构,然后根据数据结构开发页面。以前的前端开发模式是先写页面,再关注数据。

  例如,要写一个礼物列表页面,我们可能需要定义一些接口。总之,我们需要注意页面数据的接口,接口返回的数据类型,接口的参数类型等等。

  //礼物创建、编辑、列表中的每一项都会是这个数据类型。

  接口IGiftItem {

  id:string number;

  名称:字符串;

  desc:弦乐;

  【key: string】:任意;

  }

  //全局对应的类型定义

  //而且一般来说,我们不知道接口返回的类型是什么(可能是null,可能是对象,也可能是数组),所以我们用范式来定义接口。

  界面IResT {

  代码:数字;

  msg:字符串;

  数据:T

  }

  //接口返回数据类型定义

  界面IGiftInfo {

  list:ArrayIGiftItem;

  pageNum:数字;

  pageSize:数字;

  合计:数量;

  }

  在公共接口请求中,我们通常使用TS来定义数据请求、数据请求的req类型和数据请求的res类型。

  导出常量getGiftlist=(

  参数:Recordstring,any

  ):PromiseIResIGiftInfo={

  返回Http.get(/apis/gift/list ,params);

  };

  关于Vue3结合TypeScript项目开发实践的总结,本文到此为止。更多相关Vue3 TypeScript开发内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: