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 相关文章推荐
Javascript中的Split使用方法与技巧
Mar 09 Javascript
js 禁用浏览器的后退功能的简单方法
Dec 10 Javascript
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
Mar 29 Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
Javascript数组操作函数总结
Feb 05 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 Javascript
js实现图片跟随鼠标移动效果
Oct 16 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php中define用法实例
2015/07/30 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
大专学生推荐信范文
2013/11/19 职场文书
小学毕业家长寄语
2014/01/19 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
消夏晚会主持词
2015/06/30 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技