typescript整合到vue中的详细介绍,ts+vue一梭子
通过vue-cli命令行安装vue项目,注意不要eslint
安装依赖
cnpm install typescript --save-dev
cnpm install ts-loader --save-dev
在vue配置文件 webpack.base.conf.js 中做修改
在rules中的js配置对象下面添加
{
test: /\.ts$/, 解析在vue文件中的ts脚本
loader: 'ts-loader', 使用 ts-loader 解析
exclude: /node_modules/, 无视node_modules
options: {
appendTsSuffixTo: [/\.vue$/], 设置vue文件可以使用ts
}
}
然后将entry改成如下
entry: {
app: './src/main.ts'
}
再把你的入口文件main.js文件后缀名改成ts
其余的配置不要动
新建指向文件
在项目的src跟目录中创建一个后缀为.d.ts的文件,此文件名称随意,我使用index
index.d.ts文件
写如下代码,表示声明一个模块,应用于所有的vue组件的import语句中
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}
这个文件一旦声明,ts-loader就会找到Vue
新建typescript配置文件
在项目根目录创建
tsconfig.json文件
添加如下配置
{
"compilerOptions": {
"module": "es2015", 指定模块是es2015的
"moduleResolution": "node", 指定路径解析方式用node
"target": "es5", 指定编译后的js使用es5版本
"allowSyntheticDefaultImports": true, 允许使用 import Vue from 'vue' 这类语法
"lib": [
"dom",
"es5",
"es2015.promise"
]
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
基本使用
<script lang="ts">
export default {
name: 'HelloWorld',
data (): object {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
vue内置类型使用
vue其实在你安装之后,默认已经帮你弄好了.d.ts文件,关于vue本身的验证他们都做好了,我们直接拿来用就可以了
<script lang="ts">
import Vue, { ComponentOptions } from 'vue';
interface HelloWorld extends Vue {
msg: string
}
export default {
name: 'HelloWorld',
data (): object {
return {
msg: 'Hello World!'
}
}
} as ComponentOptions<HelloWorld>
</script>
ComponentOptions这个东西是用来验证vue的内置的一些属性,比如name,data,methods,并不会往深层次验证
ComponentOptions<HelloWorld>相当于是验证了this,而data内部的值无法验证
<script lang="ts">
import Vue, { ComponentOptions } from 'vue';
interface HelloWorld extends Vue {
msg: string
}
export default {
name: 'HelloWorld',
data (): object {
return {
msg: 1111 /* 这样也是不会报错的*/
}
}
} as ComponentOptions<HelloWorld>
</script>
为了解决这个问题,需要用到vue-class-component插件
vue-class-component插件的使用
使用这个插件,你需要把组件定义成原生的js类和一个@Component修饰符
安装这个插件
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
@Component({
template: `
<div class="hello">
{{message}}
</div>`
})
export default class HelloWorld extends Vue {
message: string = 'Hello'
mounted(){
this.message = 'ye'
}
}
</script>
这种写法完美解决上面的问题,而且写法简洁
@Component是一个es7的修饰符,用来给类添加成员
要运行上面的代码,还要在tsconfig.json文件中添加配置
"experimentalDecorators": true
typescript整合到vue中的详细介绍,ts+vue一梭子的更多相关文章
- 转:Http协议中Cookie详细介绍
Http协议中Cookie详细介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了, ...
- Vue.js——vue-resource详细介绍
概述 Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery.vue-resource是Vue.js的一款插件,它可以通过 ...
- vue中$nextTick详细讲解保证你一看就明白
1.功能描述 今天我们要实现这个一个小功能: 页面渲染完成后展示一个div元素: 当点击这个div元素后: div元素消失: 出现一个input元素:并且input元素聚焦 想必大家我觉得简单,我们一 ...
- vue中的css作用域、vue中的scoped坑点
一.css作用域 之前一直很困扰css的作用域问题,即使是模块化编程下,在对应的模块的js中import css进来,这个css仍然是全局的.导致在css中需要加上对应模块的html的id/class ...
- 关于Vue中main.js,App.vue,index.html之间关系进行总结
在初始化的Vue项目中,我们最先接触到的就是main.js,App.vue,index.html这三个文件,我们从培训视频或者官方文档上可以了解到: index.html---主页,项目入口 App. ...
- vue中使用Ajax(axios)、vue函数中this指向问题
Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求.Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中. axios中文文档库:http ...
- vue中html、js、vue文件之间的简单引用与关系
有关vue文件记录:index.html在html中运用组件 <body> <app></app> <!-- 此处app的组件为入口js main.js中定义 ...
- 关于 vue中 export default 和 new Vue({})
对于刚开始学习vue的人(像我),一般都不会清楚的知道两者之间该怎么区分,甚至觉得两者是一样的. 那么,经过我的查证,发现两者之间是没有任何联系的. export default ES6 Module ...
- vue中keepalive怎么理解?---vue中文社区
vue中keepalive怎么理解? 说在前面: keep-alive是vue源码中实现的一个组件, 感兴趣的可以研究源码 https://github.com/vuejs/vue/blob/dev/ ...
随机推荐
- Bellman-Ford算法 O(NE)
Bellman-Ford算法 O(NE) 思路:枚举n-1次所有边,通过枚举所有边,将所有和已知点相连的点都设为已知,初始时起点为已知点. ;i<=n-;i++){ //n-1是次数,枚举n-1 ...
- 解决: PyInstaller打包后exe文件打开时出现failed to execute script
def resource_path(self, relative): if hasattr(sys, "_MEIPASS"): return os.path.join(sys._M ...
- 51nod 1672 贪心/队列
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672 1672 区间交 基准时间限制:1 秒 空间限制:131072 K ...
- 第二次ScrumMeeting
每个人的工作(有Issue的内容和链接):昨天已完成的工作,今天计划完成的工作:工作中遇到的困难. 团队成员 昨日完成任务 明日要完成的任务 易子沐 前端框架学习 issue16 搭建主页框架 iss ...
- 25 python socket网络编程
一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...
- Zijian-lv #3 树句节狗提
如你所见,这是一道狗题 一棵树,多次询问与一个点距离至少为 $k$ 的点的权值和 $n,q \leq 2525010$ sol: 长链剖分 需要注意的是这道题卡空间 我把我所有的 vector 换成链 ...
- uoj#87. mx的仙人掌
//Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++) #define Rep(i, ...
- 一步一步使用webpack+react+scss脚手架重构项目
前几天做了一个项目:[node]记录项目的开始与完成——pipeline_kafka流式数据库管理项目:因为开发时间紧迫,浅略的使用了一下react,感觉这个ui库非常的符合我的口味,现在趁着有空闲时 ...
- python基础准备
老男孩python全栈学习day1 第一讲python基础: 1.python起源:python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中 ...
- bzoj 4300 绝世好题——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4300 考虑 dp[ i ] 能从哪些 j 转移过来,就是那些 a[ j ] & a[ ...