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 相关文章推荐
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
js中parseInt函数浅谈
Jul 31 Javascript
cookie的secure属性详解
Apr 08 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
jQuery 3.0 的 setter和getter 模式详解
Jul 11 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
Nov 02 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
Bootstrap模态框案例解析
Mar 05 Javascript
Javascript操作select控件代码实例
Feb 14 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
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
财务会计专业推荐信
2013/11/30 职场文书
大学生创业感言
2014/01/25 职场文书
经典广告词大全
2014/03/14 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
班主任自我评价范文
2015/03/11 职场文书
小学中队长竞选稿
2015/11/20 职场文书
小学信息技术教学反思
2016/02/16 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python