基于Vue的多页应用的Typescript实践
Talk is cheap, show me the code
Typescript是JavaScript的超集,可以看做对JavaScript的一种强类型约束语言,与C#或Java的写法非常的相似,所以对从后端转前端的童鞋可以说是十分友好的。
最近提炼了公司的基于Vue的多页应用的脚手架项目,也想正好支持一些Typescript,增加多一些的选择。
Webpack
添加ts-loader和tslint-loader
|
|
在module rules中添加ts支持:
|
|
tsconfig.json
添加tsconfig.json 也是一个配置文件, 与package.json同级即可。
|
|
main.js -> main.ts
- 将每个独立项目中的入口js文件改成ts即可,但是有一点需要注意,引入Vue文件的时候需要加上.vue后缀,否则编辑器识别不到
- webpack脚本中,utils中获取多入口方法,改为识别.ts
vue-shims.d.ts
在src中添加typings文件夹
|
|
添加vue-shims.d.ts文件
|
|
这是因为,TypeScript并不支持Vue文件,所以需要告诉TypeScript*.vue文件交给vue编辑器来处理。
vue-class-component
之后需要改造你的Vue组件写法了
ECMAScript / TypeScript decorator for class-style Vue components.
Note:
methods can be declared directly as class member methods. methods方法,直接写成class的成员方法即可
Computed properties can be declared as class property accessors. computed属性要被声明成class的属性访问器
Initial data can be declared as class properties (babel-plugin-transform-class-properties is required if you use Babel). initial data要被声明为class的属性
data, render and all Vue lifecycle hooks can be directly declared as class member methods as well, but you cannot invoke them on the instance itself. When declaring custom methods, you should avoid these reserved names. data, render函数和Vue的声明周期函数也会被直接声明为class的成员方法
For all other options, pass them to the decorator function.