vue与TypeScript集成配置最简教程(推荐)

 更新时间:2017年10月17日 09:50:28   作者:意大利番茄  
本篇文章主要介绍了vue与TypeScript集成配置最简教程(推荐),具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

Vue的官方文档没有给出与TypeScript集成的具体步骤,网上其他的教程不是存在问题就是与vue-cli建立的项目存在差异,让人无从下手。

下面我就给出vue-cli建立的项目与TypeScript集成的最简配置。

初始化项目

首先用vue-cli建立webpack项目。这里为了演示方便,没有打开router和eslint等,可以根据自身情况打开。

# vue init webpack vue-typescript

? Project name vue-typescript
? Project description A Vue.js project
? Author
? Vue build standalone
? Install vue-router? No
? Use ESLint to lint your code? No
? Setup unit tests with Karma + Mocha? No
? Setup e2e tests with Nightwatch? No

安装TypeScript相关依赖和项目其余依赖,用npm或cnpm

# cd /vue-typescript
# npm install typescript ts-loader --save-dev
# npm install

配置

修改目录下bulid/webpack.base.conf.js文件,在文件内module>rules添加以下规则

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

在src目录下新建一个文件vue-shims.d.ts,用于识别单文件vue内的ts代码

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

在项目根目录下建立TypeScript配置文件tsconfig.json

{
 "compilerOptions": {
  "strict": true,
  "module": "es2015",
  "moduleResolution": "node",
  "target": "es5",
  "allowSyntheticDefaultImports": true,
  "lib": [
   "es2017",
   "dom"
  ]
 }
}

重命名src下的main.jsmain.ts

修改webpack.base.conf.js下的entry>app为'./src/main.ts'

修改src下的App.vue文件,在

<script lang="ts">

测试

下面可以测试是否集成成功,编辑src/components/Hello.vue文件,修改

<script lang="ts">
 import Vue, {ComponentOptions} from 'vue'
 export default {
  name: 'hello',
  data() {
   return {
    msg: 'this is a typescript project now'
   }
  }
 } as ComponentOptions<Vue>
</script>

运行项目

# npm run dev

测试成功,现在是一个TypeScipt项目了

 

进阶

配置官方推荐的vue-class-component,https://cn.vuejs.org/v2/guide/typescript.html

安装开发依赖

# npm install --save-dev vue-class-component

修改ts配置文件,增加以下两项配置

"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,

改写我们的Hello组件

<script lang="ts">
 import Vue from 'vue'
 import Component from 'vue-class-component'
 @Component
 export default class Hello extends Vue {
  msg: string = 'this is a typescript project now'  
 }
</script>

使用vue-class-component后,初始数据可以直接声明为实例的属性,而不需放入data() {return{}}中,组件方法也可以直接声明为实例的方法,如官方实例,更多使用方法可以参考其官方文档

https://github.com/vuejs/vue-class-component#vue-class-component

import Vue from 'vue'
import Component from 'vue-class-component'
// @Component 修饰符注明了此类为一个 Vue 组件
@Component({
 // 所有的组件选项都可以放在这里
 template: '<button @click="onClick">Click!</button>'
})
export default class MyComponent extends Vue {
 // 初始数据可以直接声明为实例的属性
 message: string = 'Hello!'
 // 组件方法也可以直接声明为实例的方法
 onClick (): void {
  window.alert(this.message)
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解vue-element Tree树形控件填坑路

    详解vue-element Tree树形控件填坑路

    这篇文章主要介绍了vue-element Tree树形控件填坑路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Vue引入jquery实现平滑滚动到指定位置

    Vue引入jquery实现平滑滚动到指定位置

    这篇文章主要介绍了Vue引入jquery实现平滑滚动到指定位置的效果,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • 详解基于mpvue的小程序markdown适配解决方案

    详解基于mpvue的小程序markdown适配解决方案

    本篇文章主要介绍了详解基于mpvue的小程序markdown适配解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Vue3中引用本地图片路径的方法详解

    Vue3中引用本地图片路径的方法详解

    这篇文章主要为大家详细介绍了Vue3中引用本地图片路径的常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • vue2.0 自定义日期时间过滤器

    vue2.0 自定义日期时间过滤器

    本文给大家带来两种方法实现vue2.0 自定义日期时间过滤器,需要的的朋友参考下吧
    2017-06-06
  • vue项目中页面底部出现白边及空白区域错误的问题

    vue项目中页面底部出现白边及空白区域错误的问题

    这篇文章主要介绍了vue项目中页面底部出现白边及空白区域错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue实现a标签点击高亮方法

    vue实现a标签点击高亮方法

    下面小编就为大家分享一篇vue实现a标签点击高亮方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue中js实现点击复制文本到剪贴板的3种方案

    vue中js实现点击复制文本到剪贴板的3种方案

    今天遇到一个复制粘贴的需求,研究之后发现太简单了,这篇文章主要给大家介绍了关于vue中js实现点击复制文本到剪贴板的3种方案,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • solid.js响应式createSignal 源码解析

    solid.js响应式createSignal 源码解析

    这篇文章主要为大家介绍了solid.js响应式createSignal 源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Vue.js基础知识小结

    Vue.js基础知识小结

    本文主要介绍了Vue.js的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论