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 两个窗体之间传值实现代码
Sep 25 Javascript
一些技巧性实用js代码小结
Oct 14 Javascript
JavaScript中的property和attribute介绍
Dec 26 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
May 08 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
Javascript中八种遍历方法的执行速度深度对比
Apr 25 Javascript
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
Vue中封装input组件的实例详解
Oct 17 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上传文件,创建递归目录的实例代码
2013/10/18 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
很好用的js日历算法详细代码
2013/03/07 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
如何基于python实现归一化处理
2020/01/20 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
TCP/IP的分层模型
2013/10/27 面试题
DTD的含义以及作用
2014/01/26 面试题
生产经理的自我评价分享
2013/11/07 职场文书
采购经理岗位职责
2014/02/16 职场文书
《狼》教学反思
2014/03/02 职场文书
岗位廉政承诺书
2014/03/27 职场文书
安全保证书范文
2014/04/29 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
2015新学期家长寄语
2015/02/26 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
Python实现照片卡通化
2021/12/06 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers