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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
jQuery+ajax实现顶一下,踩一下效果
Jul 17 Javascript
javascript真的不难-回顾一下基础知识
Jan 15 Javascript
详解JavaScript函数
Dec 01 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
Dec 05 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
Vue图片裁剪组件实例代码
Jul 02 Vue.js
JavaScript原型链中函数和对象的理解
Jun 16 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中in_array函数用法分析
2014/11/15 PHP
php防止sql注入简单分析
2015/03/18 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python能自学吗
2020/06/18 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
护士实习自我鉴定
2013/10/22 职场文书
区域总监的岗位职责
2013/11/21 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
作文评语集锦
2014/12/25 职场文书
工程质检员岗位职责
2015/04/08 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
Pillow图像处理库安装及使用
2022/04/12 Python
Nginx配置使用详解
2022/07/07 Servers