全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue2 Vue-cli中使用Typescript的配置详解

前言

因为最近公司的团队热衷于vue框架,新项目想着练练typescript,于是开始了vue+ts的踩坑之路...本文意在为和我有一样想法的伙伴们省去踩坑的时间,下面话不多说了,来一起看看关于Vue2 Vue-cli中利用Typescript需要的配置是什么吧。

一、初步配置

首先安装官方插件vue-class-component,vue-property-decorator,配置webpack。
webpack配置如下:

修改入口文件

entry: {
 app: './src/main.ts'
}

resolve部分:

extensions: ['.js', '.vue', '.json', '.ts', '.tsx']

配置loader

{
 test: /\.tsx?$/,
 loader: 'ts-loader',
 exclude: /node_modules/,
 options: {
  appendTsSuffixTo: [/\.vue$/],
 }
 }

配置tsconfig.json

{
 "include": [
 "src/**/*"
 ],
 "exclude": [
 "node_modules"
 ],
 "compilerOptions": {
 "allowSyntheticDefaultImports": true,
 "experimentalDecorators": true,
 "allowJs": true,
 "module": "es2015",
 "target": "es5",
 "moduleResolution": "node",
 "experimentalDecorators": true,
 "isolatedModules": true,
 "lib": [
  "dom",
  "es5",
  "es2015.promise"
 ],
 "sourceMap": true,
 "pretty": true
 }
}

二、实战!

配好配置只是第一步,在项目里跑起来才是王道。

在vue文件的script标签里添加lang='ts'

因为ts-loader不像配过loader的webpack一样知道vue,html等文件是什么东西,你跑起来后会报模块无法解析的错误,所以还需要配置.d.ts声明文件

vue的如下配置

declare module "*.vue" {
 import Vue from 'vue';
 export default Vue;
}

你也可以为其它的非js模块配置.d.ts文件如html(告诉ts-loader把html理解成字符串)

declare module "*.html" {
 let template: string;
 export default template;
}

配置好之后ts就能理解这些模块了

从vue-property-decorator引入需要用到的模块

(一般只用到Component, Vue, Watch, Prop这四个,其它3个没用到也没研究,知道的大佬可以解释下。)

import { Component, Vue, Watch } from 'vue-property-decorator'

这里拿之前写的sidbar的代码当个栗子:

class HoverTopElem {
 leaveTop: number = -200
 top: number = null
 height: number = null

 show(e) {
 this.top = e.target.getBoundingClientRect().top
 this.height = e.target.clientHeight
 }
 hidden() {
 this.top = this.leaveTop
 }
}

@Component({
 name: 'sidebar',
 template: template,
 components: {
 sidebarItem
 }
})
export default class Sidebar extends Vue {
 SidebarMenu: any = SidebarMenu
 hoverTopElem: HoverTopElem = new HoverTopElem()
 activeListItemName: string = null
 activeRouteItemRoute: string = null

 get _activeRouteItemRoute(): string {
 return this.$route.path
 }

 @Watch('_activeRouteItemRoute', { immediate: true })
 onRouteChanged(val: any) {
 this.activeRouteItemRoute = val
 }

 changeList(param) {
 this.activeListItemName = param
 }

 changeRoute(param) {
 this.activeRouteItemRoute = param
 }
}

元数据写在@Component配置里,像名字,用到的组件啥的,然后说下之前vue里用到的各个实例属性方法在这里怎么用:

data: 这个是最常用的,像上面的SidebarMenu(这里一共声明了4个),注意这里声明的变量一定要赋一个值,没有就null,不能是undefined,不然这个数据就不是响应的。因此HoverTopElem类里的属性也是要有初始值,不然这些属性也不是响应的

computed: 这里就是get函数,注意tsconfig.jsonp不配置"target": "es5"这里会报错

prop: vue-property-decorator里面有Prop模块,也可以在元数据声明这个prop,然后在类里声明一下这个变量就可以了,个人推荐第一种

watch: vue-property-decorator里的Watch模块

methods: 方法像data一样直接写在类里就可以了(注意不要和周期钩子同名)

各种生命周期钩子: 直接写就行

路由钩子见vue-class-component文档

至此,基本就可以像原来一样写vue组件了。

当然如果要想和原来一样写ts,还需要配置tslint,不然一些ts语法不会被识别,像public修饰符之类的,因为ts还不是很熟练就没想着配,有兴趣的朋友可以试试。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# vue  # cli  # typescript  # vue2  # vue项目中使用ts(typescript)入门教程  # 详解TypeScript+Vue 插件 vue-class-component的使用总结  # Vue 中使用 typescript的方法详解  # Vue3项目中配置TypeScript和JavaScript的兼容  # 就可以  # 还需要  # 会报  # 写在  # 大佬  # 在这里  # 就能  # 才是  # 也没  # 说了  # 和我  # 要有  # 不多  # 不是很  # 之路  # 就行  # 就没  # 要想  # 不像  # 有兴趣 


相关文章: 定制建站哪家更专业可靠?推荐榜单揭晓  建站之星如何快速生成多端适配网站?  孙琪峥织梦建站教程如何优化数据库安全?  网站按钮制作软件,如何实现网页中按钮的自动点击?  图册素材网站设计制作软件,图册的导出方式有几种?  如何获取开源自助建站系统免费下载链接?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站主机与服务器功能差异如何区分?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  开心动漫网站制作软件下载,十分开心动画为何停播?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  设计网站制作公司有哪些,制作网页教程?  购物网站制作公司有哪些,哪个购物网站比较好?  C#怎么创建控制台应用 C# Console App项目创建方法  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  做企业网站制作流程,企业网站制作基本流程有哪些?  Android自定义控件实现温度旋转按钮效果  如何获取免费开源的自助建站系统源码?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  广德云建站网站建设方案与建站流程优化指南  建站主机类型有哪些?如何正确选型  浅析上传头像示例及其注意事项  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何选择网络建站服务器?高效建站必看指南  如何在阿里云虚拟服务器快速搭建网站?  如何选择域名并搭建高效网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  威客平台建站流程解析:高效搭建教程与设计优化方案  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建站之星备案是否影响网站上线时间?  魔方云NAT建站如何实现端口转发?  建站之星北京办公室:智能建站系统与小程序生成方案解析  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  盐城做公司网站,江苏电子版退休证办理流程?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  建站主机是否属于云主机类型?  在线教育网站制作平台,山西立德教育官网?  如何快速完成中国万网建站详细流程?  如何在西部数码注册域名并快速搭建网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。