Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

时间:2023-03-10 03:40:40
Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

Typescript 在前端圈已经逐渐普及,Vue 2.5.0 改进了类型声明,使得对 TypeScript 更加友好

不过要想在项目中直接使用 TypeScript  仍然需要对项目进行一些改造

PS: 建议使用  Visual Studio Code 进行开发

vue-cli 3.0 可以直接创建 typescript 项目,不过目前还只有 beta 版,有兴趣的朋友可以尝试一下

一、安装依赖

首先还是用 vue-cli 生成项目

vue init webpack demo

然后安装必要依赖项:typescript、ts-loader、vue-class-component

npm install typescript vue-class-component -D
npm install ts-loader@3.3.1 -D

上面安装 ts-loader 的时候,指定了版本 3.3.1

这是因为在写这篇博客的时候(2018-03-14),在安装 ts-loader 的最新版 4.0.1 的情况下,启动项目会报错

另外还有几个库可以按需引入:

tslint: 规范 ts 代码,需要配合 tsllint-loader 使用,最好再加上 tslint-config-standard;

vue-property-decorator:  vue-class-component 的扩展,添加了几个结合 Vue 特性的装饰器(@Emit,@Prop 等);

vuex-class: 在 vue-class-component 基础上加强了对 vuex 的支持。

二、配置 Webpack

然后修改 ./build/webpack.base.conf.js 文件:

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

在 resolve.extension 中添加 ‘.ts’,使引入 ts 文件时不用写 .ts 后缀

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
appendTsSuffixTo: [/\.vue$/]
}
}

在 module.rules 中添加 webpack 对 ts 文件的解析

三、其他配置

在项目根目录下创建 tsconfig.json 文件:

// tsconfig.json
{
"compilerOptions": {
// 与 Vue 的浏览器支持保持一致
"target": "es5",
// 这可以对 `this` 上的数据属性进行更严格的推断
"strict": true,
// 如果使用 webpack 2+ 或 rollup,可以利用 tree-shake:
"module": "es2015",
"moduleResolution": "node"
}
}

完整的 tsconfig.json 配置项可以参考官方文档

在 ./src 目录创建 vue-shim.d.ts 文件,让 ts 识别 .vue 文件:

// vue-shim.d.ts
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}

四、文件改造

将 src 目录下的所有 js 文件后缀改为 .ts

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

然后将 webpack 配置文件 ./build/webpack.base.conf.js 中的入口 entry 修改为 main.ts

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

改造之后的 ts 文件不会识别 .vue 文件,所以在引入 .vue 文件的时候,需要手动添加 .vue 后缀

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

所有 .vue 文件中,都需要在 <script> 中添加 lang="ts" 标识

要让 TypeScript 正确推断 vue 组件选项中的类型,还需要引入 vue,并使用 Vue.extend 定义组件

Vue 爬坑之路(十)—— Vue2.5 + Typescript 构建项目

至此基本改造已经完成,执行 npm run dev 就能正常启动项目

五、基于类的 Vue 组件改造

上面改造 .vue 文件的时候,只是简单的使用了 Vue.extend 方法,组件内部还是采用原生的 vue 写法

这在实际开发的时候并不能良好的使用 typescript 特性,所以还需要利用 vue-class-component 继续改造

首先在 tsconfig.json 中添加配置项,然后重启项目

// 允许从没有设置默认导出的模块中默认导入
"allowSyntheticDefaultImports": true,
// 启用装饰器
"experimentalDecorators": true

然后改造 .vue 文件的 <script> 部分,以 HelloWorld.vue 为例:

// HelloWorld.vue

<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component' // @Component 修饰符注明了此类为一个 Vue 组件
@Component({})
export default class Hello extends Vue {
msg: String = 'Welcome to Your Vue.js App'
}
</script>

组件内部不再采用 Vue 的格式,一开始也许不易接受,可以参考官方的迁移示例

// Vue 文件格式示范

<template>
<div>
<input v-model="msg">
<p>prop: {{propMessage}}</p>
<p>msg: {{msg}}</p>
<p>helloMsg: {{helloMsg}}</p>
<p>computed msg: {{computedMsg}}</p>
<button @click="greet">Greet</button>
</div>
</template> <script>
import Vue from 'vue'
import Component from 'vue-class-component' @Component({
props: {
propMessage: String
}
})
export default class App extends Vue {
// initial data
msg = // use prop values for initial data
helloMsg = 'Hello, ' + this.propMessage // lifecycle hook
mounted () {
this.greet()
} // computed
get computedMsg () {
return 'computed ' + this.msg
} // method
greet () {
alert('greeting: ' + this.msg)
}
}
</script>

六、使用TSlint 规范代码

如果对代码格式有着严格的要求,建议引入 tslint 来规范代码,首先安装以下依赖

npm init tslint tslint-loader tslint-config-standard -D

然后在 ./build/webpack.base.conf.js 的 module.rules 中添加规则

aaarticlea/png;base64,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" alt="" />

{
test: /\.ts$/,
exclude: /node_modules/,
enforce: 'pre',
loader: 'tslint-loader'
}

在项目根目录创建配置文件 tslint.json

// tslint.json
{
"extends": "tslint-config-standard",
"globals": {
"require": true
}
}

这时已经可以启动项目了,如果出现了这样的警告

aaarticlea/png;base64,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" alt="" />

只需要在 main.ts 里面,将实例化的 Vue 赋值给一个对象就好

aaarticlea/png;base64,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" alt="" />

只是这里的 tslint 校验规则是直接引入的 standard 规范,如果需要自定义

贴一篇网上找的 tslint.json 的配置项说明(来源:http://blog.****.net/zw52yany/article/details/78688837)

extends: 内设配置项名称
rules: 规则
{
//ts专用
adjacent-overload-signatures : true, // Enforces function overloads to be consecutive.
ban-comma-operator:true, //禁止逗号运算符。
ban-type: [true, ["object","User {} instead."],["string"]] //禁止类型
member-access: [true , "no-public"||"check-accessor"|| "check-constructor" || "check-parameter-property" ] , //类成员必须声明 private public ....
member-order: [true, {order:....}], //类声明排序
no-any: true,//不需使用any类型
no-empty-interface:true //禁止空接口 {}
no-import-side-effect: [true, {"ignore-module": "(\\.html|\\.css)$"}], //禁止导入带有副作用的语句
no-inferrable-types:[true, "ignore-params", "ignore-properties"], //不允许将变量或参数初始化为数字,字符串或布尔值的显式类型声明。
no-internal-module:true, //不允许内部模块
no-magic-numbers: [true,,,], //不允许在变量赋值之外使用常量数值。当没有指定允许值列表时,默认允许-1,0和1
no-namespace: [ true,"allpw-declarations"], //不允许使用内部modules和命名空间
no-non-null-assertion: true , //不允许使用!后缀操作符的非空断言。
no-parameter-reassignment: true, //不允许重新分配参数
no-reference: true, // 禁止使用/// <reference path=> 导入 ,使用import代替
no-unnecessary-type-assertion: true, //如果类型断言没有改变表达式的类型就发出警告
no-var-requires: true, //不允许使用var module = require("module"),用 import foo = require('foo')导入
only-arrow-functions:[true,"allow-declarations","allow-named-functions"], //允许箭头表达式,不需要传统表达式 ; 允许独立的函数声明 ;允许表达,function foo() {}但不是function() {}
prefer-for-of:true, //建议使用for(..of)
promise-function-async: true, 要求异步函数返回promise
typedef: [true, "call-signature", "parameter", "member-variable-declaration"], //需要定义的类型存在
typedef-whitespace: true, //类型声明的冒号之前是否需要空格
unified-signatures: true, //重载可以被统一联合成一个 //function 专用
await-promise: true, //警告不是一个promise的await
ban: [
true,
"eval",
{"name": "$", "message": "please don't"},
["describe", "only"],
{"name": ["it", "only"], "message": "don't focus tests"},
{
"name": ["chai", "assert", "equal"],
"message": "Use 'strictEqual' instead."
},
{"name": ["*", "forEach"], "message": "Use a regular for loop instead."}
],
curly: true, //for if do while 要有括号
forin:true, //用for in 必须用if进行过滤
import-blacklist:true, //允许使用import require导入具体的模块
label-postion: true, //允许在do/for/while/swith中使用label
no-arg:true, //不允许使用 argument.callee
no-bitwise:true, //不允许使用按位运算符
no-conditional-assignmen: true, //不允许在do-while/for/if/while判断语句中使用赋值语句
no-console:true, //不能使用console
no-construct: true, //不允许使用 String/Number/Boolean的构造函数
no-debugger: true, //不允许使用debugger
no-duplicate-super: true, //构造函数两次用super会发出警告
no-empty:true, //不允许空的块
no-eval: true, //不允许使用eval
no-floating-promises: true, //必须正确处理promise的返回函数
no-for-in-array: true, //不允许使用for in 遍历数组
no-implicit-dependencies: true, //不允许在项目的package.json中导入未列为依赖项的模块
no-inferred-empty-object-type: true, //不允许在函数和构造函数中使用{}的类型推断
no-invalid-template-strings: true, //警告在非模板字符中使用${
no-invalid-this:true, //不允许在非class中使用 this关键字
no-misused-new: true, //禁止定义构造函数或new class
no-null-keyword: true, //不允许使用null关键字
no-object-literal-type-assertion:true, //禁止objext出现在类型断言表达式中
no-return-await:true, //不允许return await
arrow-parens: true, //箭头函数定义的参数需要括号
}