TypeScript在Vue中的尝试

Vue官方文档中,对TypeScript做支持,目前我们可以使用TypeScript的语法,进行Vue项目的开发。
https://cn.vuejs.org/v2/guide/typescript.html

vue-class-component介绍

这个插件是vue官方维护的插件,目前支持基于class的语法规则。

1、直接在类中申明data数据。
旧的方式:

export default {
	data: function() {
		return { 
			message: "mapbar_front"
		}
	}
}

使用class的方式

import Component from 'vue-class-component'

@Component({});
export default class Login extends Vue {
	message = "mapbar_front";
}

2、props属性
旧的方式,对props的使用:

export default {
	props: ['propsMsg']
}

使用class的方式,直接在修饰器中进行申明:

import Component from 'vue-class-component'

@Component({
	props: {
		propsMsg: String
	}
});
export default class Login extends Vue {
	message = "mapbar_front";
}

3、组件的普通函数、周期函数问题
旧的组件描述的方式中,周期函数直接写在组件属性上,而普通函数,则是写在组件的methods属性中,统一管理。

export default {
	// 这是组件的周期函数
	created: function() { 
		console.log('created')
	},
	methods: { 
		// 这是普通函数
		getUserInfo: function() { 
			// request请求
		}
	}
}

在class方式的类中,无论是钩子函数,还是普通函数,一律是class的成员函数中:

@Component
export default class Login extends Vue{
	created () {
		console.log('created!');
	}
	getUserInfo: function() { 
		// request请求
	}
}

4、计算属性问题
旧的方式中,计算属性专门在computed属性中来实现。

export default {
	data: function() {
		return { 
			name: 'mapbar_front'
		}
	},
	computed: { 
		computedName: function() { 
			return this.name
		}
	}
}

在class的方式中,使用getter、setter的方式,来实现computed的操作。

@Component
export default class Login extends Vue{
	name = "mapbar_front"
	get computedName () {
		return this.name;
	}
}

5、关于混入mixins
就的方式的混入,是提前定义好混入对象。

let mymixin = {
	data: function() {
		return { 
			name: "mapbar_front"
		}
	}
}
export default {
	mixins: [mymixin]
}

使用class的方式,是直接定义一个混入类。

import Vue from 'vue';
import Component, { mixin } from 'vue-class-component';

@Component
class MyMixins extends Vue {
	name = "mapbar_front";
}

export default class Login extends mixin(MyMixins) {
	created: function() {
		console.log(123);
	}
}

关于class方式的vue写法的不足。

1、虽然这样的方式,解决了大部分的vue项目开发的问题,但是假如我们想操作dom,一般使用的是ref的方式,但是class的方式是不支持直接访问ref所代表的dom的。所以这样的方式,还是有不足的地方。

2、TypeScript的方式,支持的类型校验,在Vue的组件中,没有体现出来,这也是Vue本身的不足之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值