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获取textarea中的光标位置
May 06 Javascript
JS 对象介绍
Jan 20 Javascript
js 幻灯片的实现
Dec 06 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
BootStrap modal实现拖拽功能
Dec 01 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
May 06 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
基于匀速运动的实例讲解(侧边栏,淡入淡出)
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
短波问题解答
2021/02/28 无线电
php 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php实现webservice实例
2014/11/06 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
拖动一个HTML元素
2006/12/22 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
node.js遍历目录的方法示例
2018/08/01 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
Python实现的ini文件操作类分享
2014/11/20 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
连带责任保证书
2014/04/29 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL