vue cli4.0项目引入typescript的方法


Posted in Javascript onJuly 17, 2020

现有的项目是采用vue cli4.0脚手架生成的,现在想要引入typescript。

1.执行安装命令

npm install --save-dev typescript
npm install --save-dev @vue/cli-plugin-typescript

2.根目录下新建 tsconfig.json

{
 "compilerOptions": {
 "target": "esnext",
 "module": "esnext",
 "strict": true,
 "importHelpers": true,
 "moduleResolution": "node",
 "experimentalDecorators": true,
 "esModuleInterop": true,
 "allowSyntheticDefaultImports": true,
 "sourceMap": true,
 "baseUrl": ".",
 "allowJs": false,
 "noEmit": true,
 "types": ["webpack-env"],
 "paths": {
  "@/*": ["src/*"]
 },
 "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
 },
 "exclude": ["node_modules"]
}

3.新增 shims-vue.d.ts
根目录下新建 shims-vue.d.ts,让 ts 识别 *.vue 文件,文件内容如下:

declare module '*.vue' {
 import Vue from 'vue';
 export default Vue;
}

4.修改入口文件后缀

src/main.js => src/main.ts

5.改造 .vue 文件

src/main.js => src/main.ts

加上 lang=ts 可以让webpack识别此段代码为 typescript

6.使用装饰器插件

vue-class-component:强化 Vue 组件,使用 TypeScript装饰器 增强 Vue 组件,使得组件更加扁平化

vue-property-decorator:在 vue-class-component 上增强更多的结合 Vue 特性的装饰

Demo:

import { Vue, Component ,Watch} from 'vue-property-decorator';
@Component({
 components: { Loading }
})
export default class App extends Vue{
 old_back:object=null,
 transitionName:string = "slide-right";
 get ...mapState("base", ["loadingStatus"]);
 @Watch('$route')
 onChangeValue(to:object, from:object){
  // console.log('$route', to, from)
  const noBack = to.meta.noBack; // 监听路由变化时的状态为前进还是后退
  // 去终节点左,从终节点过来右
  if (to.meta.last) {
  this.transitionName = "slide-left";
  } else if (from.meta.last) {
  this.transitionName = "slide-right";
  } else if (from.meta.leaf) {
  // 从其它叶子页面过来的,往右
  this.transitionName = "slide-right";
  } else {
  if (noBack) {
   // 去到不需要返回的界面往右
   this.transitionName = "slide-right";
  } else {
   this.transitionName = "slide-left";
  }
  }
 }
 @Watch('loadingStatus')
 onChangeValue(newVal: string){
  if (newVal) {
  setTimeout(_ => {
   this.setLoading(false);
  }, 1500);
  }
 }
  // 弹出系统提示对话框
 showAlert(msg:string) {
  plus.nativeUI.alert(
  msg,
  function() {
   // console.log("User pressed!");
  },
  "报警详情",
  "确定"
  );
 }
}

到此这篇关于vue cli4.0项目引入typescript的文章就介绍到这了,更多相关vue cli4.0引入typescript内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
javascript的内存管理详解
Aug 07 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
Angular2+如何去除url中的#号详解
Dec 20 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 Javascript
js实现省级联动(数据结构优化)
Jul 17 #Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 #Javascript
jquery实现有过渡效果的tab切换
Jul 17 #jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 #Javascript
vue 点击其他区域关闭自定义div操作
Jul 17 #Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
Jul 17 #Javascript
利用Vue的v-for和v-bind实现列表颜色切换
Jul 17 #Javascript
You might like
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
分享python数据统计的一些小技巧
2016/07/21 Python
python 网络编程常用代码段
2016/08/28 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python生成n个元素的全组合方法
2018/11/13 Python
python3实现名片管理系统
2020/11/29 Python
Django保护敏感信息的方法示例
2019/05/09 Python
Python切图九宫格的实现方法
2019/10/10 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
大学应届毕业生个人求职信
2013/09/23 职场文书
晚宴邀请函范文
2014/01/15 职场文书
霸王洗发水广告词
2014/03/14 职场文书
企业党员个人自我评价
2014/09/20 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang