Vue单文件组件基础模板小结


Posted in Javascript onAugust 10, 2017

背景

相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多:

1.代码集中,便于开发、管理和维护

2.可复用性高,直接将vue文件拷贝到新项目中

我暂时就想到这两点,童鞋们可以在评论里帮我补充;因为有这么多优点,所以决定有必要将vue组件的常用配置项提炼出来,形成一个组件模板,方便日后项目开发复用

<template>
 <div>
  <h1>{{title}}</h1>
  <ChildComponents></ChildComponents>
 </div>
</template>
<script>
//子组件要提前引入,才可使用
import ChildComponents from './ChildComponents.vue'
//也可引入一些公共Js脚本或类库
import Cookie from '../lib/cookie.js'

//Js部分尽量采用ES6语法,webpack babel插件会转义兼容
export default {
 //组件私有数据(必须是function,而且要return对象类型)
 data () {
  return {
   title: '组件标题',
   firstName: '',
   lastName: '',
  }
 },
 //父组件传递过来的数据(两种方式声明:1.数组 2.对象)
 //数组方式
 props: ['age'],
 //对象方式
 /*props: {
  age: {
   type: Number,
   default: 0,
   required: true,
   validator: function (value) {
    return value >= 0
   }
  }
 }*/
 //计算属性
 computed: {
  fullName () {
   return this.firstName + this.lastName
  }
 },
 //监听
 watch: {
  title (preVal, newVal) {
    console.log(`改变之前的值:${preVal};改变之后的值:${newVal}`)
  }
 },
 //函数集,自己封装,便于开发使用
 methods: {
  getCurrentDate () {
   return new Date().toLocaleDateString()
  }
 },
 //生命周期钩子:实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用
 beforeCreated () {
  console.log('component before created')
 },
 //生命周期钩子:组件实例完成创建之后调用
 created () {
  console.log('component created')
 },
 //生命周期钩子:组件实例渲染完成时调用
 mounted () {
  console.log('component mounted')
 },
 //要用到哪些子组件(如果组件已是最小粒度,那么可省略该属性)
 components: {
  ChildComponents
 }
}
</script>
<style lang="scss" scoped>
/**使用scss编写样式,既可提高开发效率,也方便维护
* scoped省略后,该样式片段会应用到页面全局
* 支持import语法引入css文件
*/
@import "../base/reset.css";
div {
 h1 {
  color: #c23a3f;
 }
}

</style>

结语

以上组件模板中的配置不是最全的,但都是最常用的,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
Js操作Select大全(取值、设置选中等等)
Oct 29 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
基于jQuery Ajax实现上传文件
Mar 24 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
基于JavaScript实现淘宝商品广告效果
Aug 10 #Javascript
Vue数组更新及过滤排序功能
Aug 10 #Javascript
Webpack性能优化 DLL 用法详解
Aug 10 #Javascript
详解React Native网络请求fetch简单封装
Aug 10 #Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 #jQuery
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 #Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 #jQuery
You might like
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python中线程和进程有何区别
2020/06/17 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
学习雷锋活动总结
2014/04/29 职场文书
西安兵马俑导游词
2015/02/02 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
学术会议通知
2015/04/15 职场文书
预备党员党支部意见
2015/06/02 职场文书
申请吧主发表的感言
2015/08/03 职场文书
自考生自我评价
2019/06/21 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Python 全局空间和局部空间
2022/04/06 Python