渐进式js框架
image.png

v-cloak

image.png

  1. <style>
  2. [v-cloak]{
  3. display:none
  4. }
  5. </style>
  6. <div id="app">
  7. <div v-cloak>
  8. {{msg}}
  9. </div>
  10. </div>
  11. <script>
  12. var vm = new Vue({
  13. el:'#app',
  14. data() {
  15. return {
  16. msg:'hello'
  17. }
  18. },
  19. })
  20. </script>

v-text

  1. <span v-text='msg'></span>
  2. <span>{{msg}}</span>

v-html

注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译 。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。只在可信内容上使用 v-html,永不用在用户提交的内容上。image.png

  1. <div v-html='msg1'></div>
  2. <script>
  3. var vm = new Vue({
  4. el:'#app',
  5. data() {
  6. return {
  7. msg:'hello',
  8. msg1:'<h1>v-html</h1>'
  9. }
  10. },
  11. })
  12. </script>

v-pre

显示原始信息跳过编译过程

v-once

只显示一次,如果信息后续无须再修改,可减少性能消耗

v-model

双向数据绑定
image.png
image.png

v-on

事件绑定

v-on:click 简写 @click
事件参数传递
image.png
image.png

事件修饰符

image.png
image.png
image.png

按键修饰符

image.png

自定义按键修饰符

  1. <input type="text" @keyup.a='keydown'>
  2. <script>
  3. Vue.config.keyCodes.a = 65//自定义
  4. methods: {
  5. keydown(e){
  6. console.log(e.keyCode)//获取对应的键值
  7. }
  8. },
  9. </script>

image.png

v-bind

属性绑定(动态处理属性值)

image.png
v-model底层实现原理
image.png

动态参数

  1. <a v-bind:[attributeName]="url"> ... </a>
  2. 这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的 Vue 实例有一个 data 属性 attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href
  3. 同样地,你可以使用动态参数为一个动态的事件名绑定处理函数:
  4. <a v-on:[eventName]="doSomething"> ... </a>
  5. 在这个示例中,当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus
  6. 对动态参数的值的约束
  7. 动态参数预期会求出一个字符串,异常情况下值为 null。这个特殊的 null 值可以被显性地用于移除绑定。任何其它非字符串类型的值都将会触发一个警告。
  8. 对动态参数表达式的约束
  9. 动态参数表达式有一些语法约束,因为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。例如:
  10. <!-- 这会触发一个编译警告 -->
  11. <a v-bind:['foo' + bar]="value"> ... </a>
  12. 变通的办法是使用没有空格或引号的表达式,或用计算属性替代这种复杂表达式。
  13. DOM 中使用模板时 (直接在一个 HTML 文件里撰写模板),还需要避免使用大写字符来命名键名,因为浏览器会把 attribute 名全部强制转为小写:
  14. <!--
  15. DOM 中使用模板时这段代码会被转换为 `v-bind:[someattr]`。
  16. 除非在实例中有一个名为“someattr”的 property,否则代码不会工作。
  17. -->
  18. <a v-bind:[someAttr]="value"> ... </a>

样式绑定

image.png

class样式处理

  1. <div v-bind:class="['active','error']">直接绑定</div>
  2. <div v-bind:class="[activeClass,errorClass,{test:istest}]">赋值</div>
  3. <div v-bind:class="arrClass">数组</div>
  4. <div v-bind:class="objClass">对象</div>
  5. <div class="base" v-bind:class="objClass">默认保留</div>
  6. <button @click='handle'>切换</button>
  7. var vm = new Vue({
  8. el:'#app',
  9. data() {
  10. return {
  11. activeClass:'active',//赋值
  12. errorClass:'error',
  13. arrClass:['active','error'],//数组
  14. objClass:{//对象
  15. active : true,
  16. error : true
  17. },
  18. istest: true
  19. }
  20. },
  21. methods: {
  22. handle(){
  23. this.objClass.error = !this.objClass.error
  24. }
  25. },

style样式处理

对象语法

image.png

数组语法

image.png

v-if

分支结构

v-else

v-else-if

v-show

image.png

v-for

循环结构
image.pngimage.png
image.png
image.png
为什么使用v-for时必须添加唯一的key?