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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
Angular.JS中的this指向详解
May 17 Javascript
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
Angular CLI在Angular项目中如何使用scss详解
Apr 10 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
Jun 23 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
Dec 06 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
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/06/13 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
常用js脚本
2006/12/03 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
JS功能代码集锦
2016/05/04 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python 全文检索引擎详解
2017/04/25 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
新员工入职感言
2014/02/01 职场文书
老师对学生的寄语
2014/04/09 职场文书
罚款通知怎么写
2015/04/22 职场文书
新教师教学工作总结
2015/08/14 职场文书
交通安全学习心得体会
2016/01/18 职场文书
小学教师教学反思
2016/02/24 职场文书
竞聘书的秘诀
2019/04/02 职场文书