vue英文官网推荐了一个叫vue-class-component的包,可以以class的模式写vue组件。vue-class-component(以下简称Component)带来了很多便利:

1.methods,钩子都可以直接写作class的方法

2.computed属性可以直接通过get来获得

3.初始化data可以声明为class的属性

4.其他的都可以放到Component装饰器里

举个小例子

@Component({props: {firstName: String,lastName: String},components: {'component-a': ComponentA}
})
export class XXXX extends Vue {firstName: string;lastName: string;//初始datamiddleName = 'middle';//computed 属性get fullName() {return this.firstName + this.lastName;}//methodhello() {alert(`Hello ${this.fullName}!`);}//钩子mounted() {this.hello();}
}

现在尽管可以以class的模式来写vue的组件了,但自动补全,代码提示等功能还是没有,要想获取好的代码提示还得是原语言啊,js代码在.ts,.js文件写,scss在.scss写,html在.html写。

最终vue组件以以下方式写感觉挺爽,很顺

import Vue from 'vue';
import Componet from 'vue-class-component';require('./XXX.template.scss');@Component({template: require('./XXX.template.html'),props: {firstName: String,lastName: String},components: {'component-a': ComponentA}
})
export class XXXX extends Vue {firstName: string;lastName: string;//初始datamiddleName = 'middle';//computed 属性get fullName() {return this.firstName + this.lastName;}//methodhello() {alert(`Hello ${this.fullName}!`);}//钩子mounted() {this.hello();}
}

现在各个文件回归它的本职工作了,哈哈哈,不过现在打包时有点小问题,

[Vue warn]: You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

解决方法也很简单,在webpack配置文件里 加上

alias: {'vue': 'vue/dist/vue.esm.js'
}

即可。好的,现在代码补全,语法提示什么功能都回来了。

vue-class-component 以class的模式写vue组件相关推荐

  1. Vue复习知识点(理解MVVM模式、Vue实例配置的各选项、Vue的各种内置指令....)

    Vue复习知识点 一.理解MVVM模式 VVM是一种设计模式,它将应用程序分为三个部分:模型(Model).视图(View)和视图模型(ViewModel).它的主要目的是将应用程序的界面逻辑与业务逻 ...

  2. vue filter对象_学习vue源码(3) 手写Vue.directive、Vue.filter、Vue.component方法

    一.Vue.directive Vue.directive(id,[definition]); 1)参数 { string } id{ Function | Object } [ definition ...

  3. vue 多点触控手势_手写 Vue 手势组件__Vue.js

    前言 最近需要使用手指捏合扩大的手势操作,找了几个组件,要么对 Vue 适配不好,要么量级太大,决定自己手写手势操作. 项目与效果预览 思路 直接在 DOM 上绑定 touchstart .touch ...

  4. 在google应用商店下载的Vue.js Devtools在控制台(开发者模式)没有vue选项

    在google应用商店下载的Vue.js Devtools在控制台没有vue选项 第一种:图标不亮 第二种:图标亮,但是在下面的控制台选项中没有vue 第一种:图标不亮 首先,如果最上面那个vue图标 ...

  5. 手牵手教你写 Vue 插件

    碎碎念 上一篇文章,我们介绍了如何构建一个 react 插件,今天我们说说如何构建 vue 插件 准备工作 由于与上一篇 react 插件文章使用的是相同的结构,代码测试.持续集成及发布 npm 包也 ...

  6. Vue 源码之手写Vue Router

    Vue 源码之手写Vue Router 源码地址:https://github.com/CONOR007/Handwritten-routing 一.Vue Router的两种模式 hash模式实现原 ...

  7. 教你从零写vue穿梭框

    教你从零写vue穿梭框 1. 前言 2. 制作选择组件(select-input) 2. 制作vue穿梭框组件(table-transfer) 4. 将选择组件和穿梭框组件结合使用 4.1 点击选择组 ...

  8. Vue教程6【完结】【vue-router】路由,路由传参,编程式路由导航,缓存路由组件,路由守卫,路由模式,vue ui组件库

    vue-router 了解 vue插件库,用来实现SPA应用(单页面) 整个页面只有一个完整的页面 点击页面中导航链接,不会刷新页面,只做局部更新 数据通过ajax请求 路由的理解 一组映射关系(ke ...

  9. vue2.0中组建里面套用组件_vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码...

    具体代码如下所示: document var aaa=vue.extend({//继承出来一个vue类aaa template:' 我是标题3 ' }); var a=new aaa();//a跟vm ...

最新文章

  1. 一文解析|首个上榜科创板的机器人企业,江苏北人“闯关记”
  2. react-native 组件之间传值
  3. Delphi下遍历文件夹下所有文件的递归算法
  4. zblog php版调用代码,zblogphp调用指定单篇文章代码升级版
  5. 谈谈 Android 中的 PathClassLoader 和 DexClassLoader
  6. nodejs常用模块-url
  7. Android -- startActivityForResult和setResult
  8. 创建自己的oracle解释计划
  9. 2020 数学建模 A题
  10. Java简单项目:家庭记账系统
  11. Python之sep与end
  12. python对excel筛选提取文本中数字_Python,从Excel列中提取数字并作为outpu写入
  13. Python爬取码市项目
  14. 每日一犬 · 哈瓦那犬
  15. 报错:Cannot use v-for on stateful component root element because it renders multiple elements.
  16. 数据挖掘 顶级期刊_数据挖掘领域顶级会议期刊及其分析
  17. 知乎python练手的_Python新手应该如何练手?知乎5600赞答案告诉你!
  18. 手机APP开发:学JAVA转安卓APP开发是不是很容易?
  19. JMeter Sampler之BeanShellSampler的使用
  20. NAT之SNAT和DNAT

热门文章

  1. HTML5安全风险详析之三:WebSQL攻击
  2. Java虚拟机性能监测工具Visual VM与OQL对象查询语言
  3. Centos系统添加系统用户操作记录审计
  4. linux 之静默安装oracle
  5. 开发环境配置--Ubuntu+Qt4+OpenCV(二)
  6. java抽象类的说明
  7. Hibernate怎么提升数据库查询的性能 (1)
  8. 企业级备份方案系列PART3:SCDPM 2012备份/恢复Exchange2010
  9. NBR100多IP出口解决方案的配置方法
  10. 转贴:从现在电力短缺看今后劳动力短缺和高校破产