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.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
Sep 14 Javascript
JS给swf传参数的实现方法
Sep 13 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
Js和VUE实现跑马灯效果
May 25 Javascript
Javascript var变量删除原理及实现
Aug 26 Javascript
js简单粗暴的发布订阅示例代码
Jan 23 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 Image Resize图片大小调整的函数代码
2011/01/17 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
python单例模式的多种实现方法
2019/07/26 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
采购主管的岗位职责
2013/12/17 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
个人职业及收入证明
2014/10/13 职场文书
英文邀请函
2015/02/02 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
校本研修个人总结
2015/02/28 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python