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中为元素加上name属性的方法
May 09 Javascript
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
Feb 26 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
May 28 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
Aug 02 Javascript
jQuery Ajax全解析
Feb 13 Javascript
jQuery操作css样式
May 15 jQuery
vue插件实现v-model功能
Sep 10 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 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实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
js实现选项卡效果
2020/03/07 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
文明寄语大全
2014/04/11 职场文书
博士生专家推荐信
2014/09/26 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
财务检查整改报告
2014/11/06 职场文书
毕业实习感受与体会
2015/05/26 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS