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#的异同
May 31 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
javascript 循环调用示例介绍
Nov 20 Javascript
JS创建类和对象的两种不同方式
Aug 08 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
Feb 27 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
javascript数组去重小结
Mar 07 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
Sep 07 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
May 15 Javascript
vue 使用高德地图vue-amap组件过程解析
Sep 07 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
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实现爬取和分析知乎用户数据
2016/01/26 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
Python3实现购物车功能
2018/04/18 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
pandas数据处理进阶详解
2019/10/11 Python
python里反向传播算法详解
2020/11/22 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
应届毕业生求职信
2014/05/26 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
赡养老人协议书范本
2015/08/06 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS
go goth封装第三方认证库示例详解
2022/08/14 Golang