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


Posted in Javascript onOctober 17, 2017

前言

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与TypeScript集成配置最简教程(推荐)

进阶

配置官方推荐的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)
 }
}

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

Javascript 相关文章推荐
一段非常简单的让图片自动切换js代码
Nov 10 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
node.js中的http.response.removeHeader方法使用说明
Dec 14 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 Javascript
微信小程序 实战小程序实例
Oct 08 Javascript
微信小程序实现运动步数排行功能(可删除)
Jul 05 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
iview同时验证多个表单问题总结
Sep 29 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 #Javascript
javascript 中模板方法单例的实现方法
Oct 17 #Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 #Javascript
react中的ajax封装实例详解
Oct 17 #Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 #Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 #Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 #Javascript
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php 验证码制作(网树注释思想)
2009/07/20 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
php设计模式之单例模式代码
2016/06/11 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python sorted函数的小练习及解答
2019/09/18 Python
python实发邮件实例详解
2019/11/11 Python
python_mask_array的用法
2020/02/18 Python
Python对象的属性访问过程详解
2020/03/05 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
经销商会议欢迎词
2014/01/11 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
研究生导师推荐信
2015/03/25 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书