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 相关文章推荐
extjs3 combobox取value和text案例详解
Feb 06 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
JS实现时间格式化的方式汇总
Oct 16 Javascript
jquery中$.post()方法的简单实例
Feb 04 Javascript
jQuery表单域属性过滤器用法分析
Feb 10 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
js实现微博发布小功能
Jan 12 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 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
php自动跳转中英文页面
2008/07/29 PHP
PHP 替换模板变量实现步骤
2009/08/24 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
PHP守护进程实例
2015/03/06 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python File readlines() 使用方法
2018/03/19 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
优秀员工个人的自我评价
2013/11/29 职场文书
酒店总经理工作职责
2013/12/13 职场文书
学生爱国演讲稿
2014/01/14 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
信息工作经验交流材料
2014/05/28 职场文书
个人授权委托书范本
2014/09/14 职场文书
党员评议个人总结
2014/10/20 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
MySQL普通表如何转换成分区表
2022/05/30 MySQL