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中清空数组的三种方法分享
Apr 07 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
JavaScript闭包详解
Feb 02 Javascript
15款jQuery分布引导插件分享
Feb 04 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
Node.js 使用命令行工具检查更新
Jun 08 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
Jul 26 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 Javascript
Javascript原生ajax请求代码实例
Feb 20 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 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如何统计Nginx日志的User Agent数据
2019/03/06 PHP
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
微信小程序wepy框架笔记小结
2018/08/08 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
Python 文件重命名工具代码
2009/07/26 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
详解Django中的form库的使用
2015/07/18 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
python绘制高斯曲线
2021/02/19 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
应届生自荐信范文
2014/02/21 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
绿化工程实施方案
2014/03/17 职场文书
三严三实学习心得体会
2014/10/13 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python