vue3使用typescript,ts开发vue

  vue3使用typescript,ts开发vue

  最近需要结合ts的使用对原有的vue项目进行改造。本文阐述了安装vue组件的准备工作。详细介绍了示例代码,具有一定的参考价值。感兴趣的朋友可以参考一下。

  :

目录

   1.引入Typescript2,配置文件webpack configuration 3,使项目识别。ts4和编写vue组件。data () props中定义的数据传递值完整的代码案例。最近,原来的vue项目需要使用ts进行改造。这应该是中大型项目的发展趋势。看到一个不错的入门教程,结合起来做了一点拓展记录。本文从安装到vue组件编写进行讲解,适合入门。

  

1、引入Typescript

  npm安装vue-类-组件vue-属性-装饰-保存

  npm安装ts-loader类型脚本ts lint ts lint-loader ts lint-config-standard-save-dev

  Vue-class-component:扩展Vue以支持typescript,并通过声明原始vue语法来支持ts。

  Vue-property-decorator:基于vue-class-component扩展更多的decorator。

  Ts-loader:使webpack能够识别Ts文件。

  Tsint-loader: tsint用于约束文件编码。

  tsint-ts lint-config-standard:ts lint配置标准样式的约束。

  

2、配置文件webpack配置

  根据项目的配置不同,如果vue cli 3.0创建的项目需要在vue.config.js中配置,如果是3.0以下则需要在webpack.base.conf中配置(webpack.base.conf文件中更改了以下说明)

  补充。ts to resolve.extensions,以便在不编写代码的情况下将ts文件引入代码。ts后缀。

  解决:{

  扩展名:[。js ,。vue ,。json ,。ts],

  别名:{}

  }

  在模块规则中添加ts规则

  模块:{

  规则:[

  {

  测试:/\。ts美元/,

  排除:/node_modules/,

  强制:“前”,

  加载程序:“tslint-loader”

  },

  {

  测试:/\。tsx?$/,

  加载程序:“ts-loader”,

  排除:/node_modules/,

  选项:{

  appendTsSuffixTo: [/\。vue$/]

  }

  }

  ]

  }

  Tsconfig.json配置

  Ts-loader将检索文件中的Tsconfig.json,并根据其规则解析ts文件。详细配置请参考https://www.tslang.cn/docs/handbook/tsconfig-json.html。

  粘贴测试项目tsconfig.json文件。

  {

  //编译选项

  编译器选项:{

  //输出目录

  outDir :。/output ,

  //有没有可以用来调试的sourceMap?

   sourceMap: true,

  //在严格模式下解析

   strict: false,

  //采用模块系统

  模块: esnext ,

  //如何处理模块

  moduleResolution“:”节点,

  //编译输出目标ES版本

  目标: es5 ,

  //允许从没有默认导出集的模块进行默认导入。

  allowSyntheticDefaultImports :true,

  //将每个文件视为单独的模块

   isolatedModules: false,

  //启用装饰器

  “实验记录员”:对,

  //启用设计类型元数据(用于反射)

   emitedecoratormeta data :true,

  //当表达式和声明中有隐含的any类型时,会报告错误

   noImplicitAny: false,

  //当并非函数的所有返回路径都有返回值时,会报告错误。

   noImplicitReturns: true,

  //从tslib导入外部帮助库:如__extends、__rest等。

   importHelpers :对,

  //在编译期间打印文件名

   listFiles: true,

  //删除注释

   removeComments: true,

   suppressImplicitAnyIndexErrors :true,

  //允许编译javascript文件

  allowJs: true,

  //解析非相对模块名的基目录

  baseUrl“:”。/,

  //指定特殊模块的路径

  路径:{

  jquery: [

   node _ modules/jquery/dist/jquery

  ]

  },

  //编译时需要引入的库文件列表

  lib: [

  多姆,

  es2015 ,

  es2015.promise

  ]

  }

  }

  Tslint.json配置

  在目录中新增tslint.json文件,由于我们前面安装了tslint-config-standard,所以可以直接用ts棉绒-配置-标准中规则,文件如下:

  {

  扩展: tslint-config-standard ,

  全局:{

  要求:对

  }

  }

  

3、让项目识别.ts

  由于以打字打的文件默认并不支持*.某视频剪辑软件后缀的文件,所以在某视频剪辑软件项目中引入的时候需要创建一个vue-shim.d.ts文件,放在根目录下

  声明模块"*"。vue {

  从“Vue”导入Vue

  导出默认某视频剪辑软件

  }

  

4、vue组件的编写

  某视频剪辑软件组件里大多数的方法改成通过@xxx(装饰器)来表明当前定义的为什么数据,类似尼日利亚中的注入。而业务逻辑射流研究…的部分就可以直接采用分时(同分时)的写法了。

  基本写法

  模板模板和样式风格的写法不变,脚本的模块进行了改变,基本写法如下:

  脚本语言

  从" vue-属性-装饰"导入{ Component,Vue };

  @组件

  导出默认类测试扩展Vue {

  };

  /脚本

  lang=ts :脚本张声明下当前的语言是分时(同分时)

  @组件:注明此类为一个某视频剪辑软件组件

  导出默认类测试扩展Vue:导出当前组件类是继承某视频剪辑软件的

  

data()中定义数据

  数据中的数据由原来的数据()方法改成直接在对象中定义

  导出默认类测试扩展Vue {

  公共消息1:string=黑马鱼;

  公共消息2: string=真好看;

  }

  

props传值

  小道具的话就没有数据那么舒服了,因为他需要使用装饰器了,写法如下

  @Prop()

  普帕:字符串

  @Prop()

  propB:编号

  $emit传值

  不带参数

  //原来写法:这个emit(bindSend )

  //现在直接写this.bindSend()

  //多个定义

  @Emit()

  bindSend():string{

  返回此消息

  }

  方法带参数

  //原来写法:这个emit(bindSend ,msg)

  //现在直接写:this.bindSend(消息)

  //多个下面的定义

  @Emit()

  宾森德(消息:字符串){

  //做某事

  }

  发射带参数

  //这里的试验是改变组件引用的@事件名称这时候要写@测试而不是@bindSend2

  @Emit(测试)

  私有bindSend2(){

  }

  看观察数据

  //原来的写法观察:{}

  @Watch(propA ,{

  深:真的

  })

  测试(新值:字符串,旧值:字符串){

  console.log(propA值改变了新值);

  }

  计算计算属性

  public get computedMsg(){

  返回这里是计算属性这条消息

  }

  公共集computedMsg(消息:字符串){

  }

  

完整代码案例

  模板

  "测试容器"

  { {消息}}

  输入类型=按钮值=点击触发父级方法@click=bindSend/

  输入类型=按钮值=点击触发父级方法@click=handleSend/

  输入类型=按钮值=点击触发父级方法@click=bindSend2/

  !你好/你好

  /div

  /模板

  脚本语言

  从" vue-属性-装饰"导入{组件,道具,Vue,手表,发射};

  从导入你好./你好世界。vue ;

  //注明此类为一个某视频剪辑软件组件

  @组件({

  组件:{

  你好

  }

  })

  导出默认类测试扩展Vue {

  //原有数据中的数据在这里展开编写

  公共消息:string= asd

  //原有小道具中的数据展开编写

  @Prop({

  类型:数量,

  默认值:1,

  必填:假

  })

  普帕?数字

  @Prop()

  propB:字符串

  //原有计算

  public get computedMsg(){

  返回这里是计算属性这条消息

  }

  公共集computedMsg(消息:字符串){

  }

  //原有的看属性

  @Watch(propA ,{

  深:真的

  })

  公共测试(新值:字符串,旧值:字符串){

  console.log(propA值改变了新值);

  }

  //以前需要给父级传值的时候直接方法中使用发射就行了,当前需要通过发射来处理

  @Emit()

  private bindSend():string{

  返回此消息

  }

  @Emit()

  private bindSend1(msg:string,love:string){

  //如果不处理可以不写下面的,会自动将参数回传

  //msg= love ;

  //返回消息;

  }

  //原有放在方法中的方法平铺出来

  公共handleSend():void {

  this.bindSend1(this.message,爱);

  }

  //这里的emit中的参数指示父级接受什么,类似于前面的$emit(“父级定义的方法”)

  @Emit(test )

  私有bindSend2(){

  返回“这可以通过测试接受”;

  }

  }

  /脚本

  关于vue项目中ts(typescript)的入门教程这篇文章到此为止。有关vue typescript的更多相关介绍性内容,请搜索我们之前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

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

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