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实现
Feb 25 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
vue中使用微信公众号js-sdk踩坑记录
Mar 29 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
JS实现容器模块左右拖动效果
Jan 14 Javascript
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
基于匀速运动的实例讲解(侧边栏,淡入淡出)
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
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
5 cool javascript apps
2007/03/24 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Python中print和return的作用及区别解析
2019/05/05 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
python 串行执行和并行执行实例
2020/04/30 Python
python调用百度API实现人脸识别
2020/11/17 Python
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
软件设计的目标是什么
2016/12/04 面试题
简历中个人求职的自我评价模板
2013/11/29 职场文书
运动会致辞稿50字
2014/02/04 职场文书
家装业务员岗位职责
2015/04/03 职场文书
新入职员工工作总结
2015/10/15 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL