基本结构
- template
基本HTML语法
- script
实例化的Vue对象
1 | var sth = new Vue({}); |
- css
样式
Vue对象基本结构
- data
数据域
- methods
用来定义功能函数
- watch
用来定义数据监视函数
Demo如下:
1 | new Vue({ |
模版指令
数据渲染
v-text && v-html &&
1 | <p>{{ a }}</p> |
脚本部分
1 | new Vue({ |
模块显隐性
v-if && v-show
区别
v-if:为假时直接不渲染该块;
v-show:类似于CSS中display:none;
1 | <p v-if="isShow"></p> |
脚本部分
1 | new Vue({ |
渲染循环列表
v-for
1 | <ul> |
脚本部分
1 | new Vue({ |
事件绑定
v-on <==> @
1 | <button v-on:click="doThis"></button> |
1 | methods: { |
属性绑定
v-bind <==> :
1 | <!-- imgSrc 为字符串 --> |
组件化
组件的引入与注册
- 引入组件后使用前需要注册,使用components
注册组件后使用时候将驼峰转为中线形式原因:
ComponentA之所以要转换成component-a
因为在HTML中,标签的标签名是大小写不敏感的,而在javascript中变量名是大小写敏感的
换句话说,在HTML中,ComponentA和componenta算是同一个标签
而在javascript中,ComponentA和componenta却不是同一个变量
要解决这种差异问题,就必须得在两种标准之间做一个转换,所以vuejs就使用了将驼峰法(camelCase)转换到短横线法(kebab-case)
- 父向子组件传值props传值(props与data,methods等同级)
- 子向父组件传值自定义事件 || $children || $refs
- $on() 监听事件
- $emit() 在他上面触发时间
考虑到树结构的层次复杂性
$dispatch() 派发事件,事件沿着父链冒泡(VUE2.0已弃用)$broadcast() 广播事件,事件向下传到给所有后代(VUE2.0已弃用)