【Vue.js】渲染商品列表

Vue.js框架渲染商品列表

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue渲染商品列表</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="./goods.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        ul {
            width: 750px;
            height: 600px;
            margin: 20px auto;
            background: #f3f4f5;
        }

        ul li {
            width: 175px;
            height: 285px;
            background: #ffffff;
            border: 1px solid #e7e7e7;
            border-radius: 5px;
            float: left;
            margin: 10px 0 0 7px;
        }

        .img {
            width: 170px;
            height: 170px;
        }

        .price {
            margin: 15px 0 0 10px;
            font: bold 16px "Arial";
        }

        .price i {
            display: inline-block;
            width: 45px;
            height: 15px;
            background-image: repeating-linear-gradient(90deg, #dc459f 0, #cc75d8 100%);
            color: #ffffff;
            font: 11px/15px "微软雅黑";
            text-align: center;
            border-radius: 7.5px;

        }

        .desc {
            margin: 10px 15px 0 8px;
            font: 14px/16px "微软雅黑";
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
        }
    </style>
</head>

<body>
    <div id="app">
        <ul>
            <li v-for="item in goods">
                <!-- 1.image -->
                <a :href="item.url">
                    <img :src="item.img" alt="goods" :class="imgClass">
                </a>
                <!-- 2.price -->
                <div :class="priceClass">
                    <i>特卖价</i>
                    ¥{{item.price.toFixed(2)}}
                </div>
                <!-- 3.description -->
                <p :class="descClass">
                    {{item.name}}
                </p>
            </li>
        </ul>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                goods: goods,
                imgClass: 'img',
                priceClass: 'price',
                descClass: 'desc'
            }
        })
    </script>
</body>

</html>
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js渲染工作方式可以概括为以下几个步骤: 1. 解析模板:Vue.js通过解析模板生成虚拟DOM树,虚拟DOM树是一个内存中的数据结构,它描述了模板中的节点、属性和事件等信息。 2. 创建实例:Vue.js创建一个Vue实例,它包含了模板中的数据和方法,以及虚拟DOM树。 3. 挂载实例:Vue.js将Vue实例挂载到DOM元素上,这个过程称为挂载。 4. 响应式更新:当数据发生变化时,Vue.js会检测到变化,并且重新渲染虚拟DOM树。 5. 生成补丁:Vue.js会生成新的虚拟DOM树,并且与旧的虚拟DOM树进行比较,生成一份差异补丁,这个过程称为Diff算法。 6. 应用补丁:Vue.js将差异补丁应用到DOM元素上,更新视图。 具体来说,Vue.js渲染工作方式包含以下几个关键点: 1. 模板编译:Vue.js将模板编译成渲染函数,渲染函数是一个JavaScript函数,它接受数据对象作为参数,返回虚拟DOM树。 2. 虚拟DOM:Vue.js使用虚拟DOM来描述组件的状态和结构,虚拟DOM是一个轻量级的数据结构,它可以高效地进行DOM操作。 3. 响应式系统:Vue.js通过数据劫持和发布订阅模式实现响应式更新,当数据发生变化时,Vue.js会自动检测变化,并且重新渲染视图。 4. Diff算法:Vue.js使用Diff算法来比较新旧虚拟DOM树的差异,生成一份补丁,然后将补丁应用到DOM元素上,更新视图。 总的来说,Vue.js渲染工作方式是基于虚拟DOM和响应式系统的,它通过高效的算法和数据结构来实现快速的DOM操作和响应式更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值