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 相关文章推荐
JS 建立对象的方法
Apr 21 Javascript
ext checkboxgroup 回填数据解决
Aug 21 Javascript
几个javascript操作word的参考代码
Oct 26 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
jQuery bind事件使用详解
May 05 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
Oct 19 Javascript
JS实现仿PS的调色板效果完整实例
Dec 21 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
May 22 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
Jul 18 Javascript
js实现移动端轮播图滑动切换
Dec 21 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
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
Javascript实现的分页函数
2006/12/22 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python执行使用shell命令方法分享
2017/11/08 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
如何让python的运行速度得到提升
2020/07/08 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
python识别围棋定位棋盘位置
2021/07/26 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫