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中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
Apr 02 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
javascript如何定义对象数组
Jun 07 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
Aug 02 Javascript
微信小程序 label 组件详解及简单实例
Jan 10 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue实现点击按钮切换背景颜色的示例代码
Jun 23 Javascript
详细分析React 表单与事件
Jul 08 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
快速入手Python字符编码
2016/08/03 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
Python socket模块方法实现详解
2019/11/05 Python
python线程信号量semaphore使用解析
2019/11/30 Python
CSS3 边框效果
2019/11/04 HTML / CSS
生产管理的三大手法
2013/11/11 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
市场部经理岗位职责
2014/04/10 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
Golang的继承模拟实例
2021/06/30 Golang