vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车

简介: vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车
  • 插值
  • 指令
  • 过滤器
  • 计算属性&监听属性
  • vue购物车

1.插值

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>插值</title>
    <style type="text/css">
      .f30{
        font-size: 30px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <p>文本</p>
      {{msg}}
      <p>html解析</p>
      <p>字体颜色变黄</p>
      <b v-html="msg2"></b>
      <p>字体变黄变大</p>
      <b :class="msg3" v-html="msg2"></b>
      <p>表达式</p>
      {{num+1}}<br />
      {{warn.substr(0,2)}}<br />
      <input v-model="ok"/>
      {{ok==1?'被抓了':'有内鬼'}}
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            msg:'hello 小兵',
            msg2:'<span style="color:yellow">hello 小兵</span>',
            msg3:'f30',
            num:6,
            warn:'条子来了',
            ok:1
          };
        }
      });
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>指令</title>
  </head>
  <body>
    <div id="app">
      <p>v-if/v-else-if/v-else</p>
      <input v-model="score"/><br />
      <b v-if="score<60">不及格</b>
      <b v-else-if="score>=60 && score<70">及格</b>
      <b v-else-if="score>=70 && score<80">一般</b>
      <b v-else-if="score>=80 && score<90">良好</b>
      <b v-else="">优秀</b>
      60以下 不及格
      60-70 及格
      70-80 一般
      80-90 良好
      90-100 优秀
      <p>v-show</p>
      v-if与v-show的区别<br />
      <b v-if="isShow">展示</b>
      <b v-show="isShow">展示</b>
      <p>v-for</p>
      <i v-for="a in arr">{{a}}&nbsp;&nbsp;</i>
      <i v-for="i,u in users">&nbsp;&nbsp;{{i}}</i>
      <select>
        <option v-for="h in hobby" :value="h.id">{{h.name}}</option>
      </select>
      <div id="" v-for="h in hobby"     >
        <input type="checkbox" name="hobby"  :value="h.id" />{{h.name}}
      </div>
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            score:34,
            isShow:false,
            arr:[1,2,3,4],
            users:[{
              name:'ab',id:1
            },{
              name:'ac',id:2
            },{
              name:'ad',id:3
            },{
              name:'ae',id:4
            }],
            hobby:[{
              name:'保健',id:1
            },{
              name:'理发',id:2
            },{
              name:'洗头',id:3
            },{
              name:'养生',id:4
            }]
          };
        }
      });
    </script>
  </body>
</html>

3.过滤器

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <script src="date.js" type="text/javascript" charset="utf-8"></script>
    <title>过滤</title>
  </head>
  <body>
    <div id="app">
      <p>局部过滤器基本应用</p>
      {{msg}}<br />
      {{msg | filterA}}
      <p>局部过滤器串行使用</p>
      {{msg}}<br />
      {{msg | filterA | filterB}}
      <p>局部过滤器传参</p>
      {{msg | filterC(3,10)}}<br />
      <p>全局过滤器</p>
      {{time}}<br />
      {{time | fmtDateFilter}}
    </div>
    <script type="text/javascript">
      Vue.filter('fmtDateFilter',function(value){
        return fmtDate(value);
      });
      new Vue({
        el:'#app',
        filters:{
                   'filterA':function(v){
             return v.substring(0,6);
           },
           'filterB':function(v){
               return v.substring(2,5);
            },
           'filterC':function(v,begin,end){
               return v.substring(begin,end);
            }
        },
        data(){
          return{
            msg:'小猪同学,你的好基友被抓了',
            time:new Date()
          };
        }
        ,methods:{
          test(){
            // 单击事件,双击事件
            alert('点我试试!!');
          }
        }
      });
    </script>
  </body>
</html>

4.计算属性&监听属性

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>计算属性监听属性</title>
    </style>
  </head>
  <body>
    <div id="app">
      <p>计算属性</p>
      单价:<input v-model="price"/>
      数量:<input v-model="num"/>
      小计:{{count}}
      <p>监听属性</p>
      千米:<input v-model="km"/><br />
      米:<input v-model="m"/><br />
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            price:78,
            num:1,
            km:1,
            m:1000
          };
        },
        computed:{
          count:function(){
            return this.price * this.num;
          }
        },
        watch:{
          km:function(v){
            // v指的是被监听的属性,是km
            this.m=parseInt(v) * 1000;
          },
          m:function(v){
            // v指的是被监听的属性,是m
            this.km=parseInt(v) / 1000;
          }
        }
      });
    </script>
  </body>
</html>

5.vue购物车

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>vue购物车</title>
  </head>
  <body>
    <div id="app">
      <div v-if="cart.length==0">
        <p>购物车为空</p>
      </div>
      <!-- //st实体,xb下标 -->
      <div v-else v-for="st,xb in cart" :key="xb">
        <p>名称:{{st.name}}</p>       
        <p>价格:{{st.price}}</p>
        <p>数量:{{st.num}}</p>
        <p>单价:{{st.price * st.num}}</p>
        <button @click="increaseQuantity(xb)">+</button>
        {{st.num}}
          <button @click="decreaseQuantity(xb)">-</button>
        <button @click="removeFramCart(xb)">移除</button>
      </div>
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            cart:[
              {id:1,name:'香蕉',price:10,num:1},
              {id:2,name:'橘子',price:20,num:1},
              {id:3,name:'西瓜',price:16,num:1},
            ],
          };
        },
        methods:{
          removeFramCart(xb){
              this.cart.splice(xb,1); 
          },
          increaseQuantity(xb) {
              this.cart[xb].num++;
          },
          decreaseQuantity(xb){
            if(this.cart[xb].num > 1){
              this.cart[xb].num--;
            }else{
              removeFramCart(xb);
            }
          },
        },
      });
    </script>
  </body>
</html>

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
5天前
|
JavaScript
Vue 指令速查表
【10月更文挑战第12天】Vue 指令速查表
|
15天前
|
监控 JavaScript 开发者
在 Vue 中,子组件为何不可以修改父组件传递的 Prop,如果修改了,Vue 是如何监控到属性的修改并给出警告的
在 Vue 中,子组件不能直接修改父组件传递的 Prop,以确保数据流的单向性和可预测性。如果子组件尝试修改 Prop,Vue 会通过响应式系统检测到这一变化,并在控制台发出警告,提示开发者避免这种操作。
|
17天前
|
JavaScript 开发者
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
【10月更文挑战第8天】vue指令的开发看这篇文章就够了!超详细,赶快收藏!
vue指令的开发看这篇文章就够了!超详细,赶快收藏!
|
14天前
|
人工智能 JavaScript 程序员
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
63 0
|
14天前
|
JavaScript 算法 前端开发
在Vue开发中v-if指令和v-show指令的使用介绍,v-if和v-for的优先级以及使用注意事项的介绍
在Vue开发中v-if指令和v-show指令的使用介绍,v-if和v-for的优先级以及使用注意事项的介绍
10 0
|
14天前
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
66 0
|
3天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
3天前
|
缓存 JavaScript 搜索推荐
Vue SSR(服务端渲染)预渲染的工作原理
【10月更文挑战第23天】Vue SSR 预渲染通过一系列复杂的步骤和机制,实现了在服务器端生成静态 HTML 页面的目标。它为提升 Vue 应用的性能、SEO 效果以及用户体验提供了有力的支持。随着技术的不断发展,Vue SSR 预渲染技术也将不断完善和创新,以适应不断变化的互联网环境和用户需求。
20 9
|
2天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
1天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
7 2