【卷起来】VUE3.0教程-02-模板语法

🍁 项目目录结构

在上面的案例中,我们创建出了一个vue项目,项目结构如下:

  • .vscode:vscode工具的配置文件
  • node_modules:Vue 项目的运行依赖文件
  • public:资源文件夹(浏览器图标)
  • src:源码文件夹
  • .gitignore:git忽略文件
  • index.html : 首页,入口HTML文件
  • package.json :属性版本依赖文件
  • README.md :注释文件
  • vite.config.js :VUE的配置文件

🍁 VUE 模板语法

🌾 基础案例

在讲解模板语法之前,我们先将src中components目录下的文件删除,同时将App.vue中的代码删除成如下格式,:

<script >

</script>

<template>

</template>

编写如下代码,并将main.js中的 import './assets/main.css'删掉:

<script >
  export default{
    data(){
      return {
        msg: "vue 我学定了!耶稣也拦不住!"
      }
    }
  }
</script>

<template>
    <h2 style="color: red;">{{msg}}</h2>
  
 </template>

最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法 (即双大括号):

<h2 style="color: red;">{{msg}}</h2>

双大括号标签会被替换为相应组件实例中 msg 属性的值。同时每次 msg 属性更改时它也会同步更新。

运行之后,显示效果:

🌾 原始html

双大括号会将数据解释为纯文本,而不是 HTML。若想插入 HTML,你需要使用 v-html指令

<script >
  export default{
    data(){
      return {
        msg: "vue 我学定了!耶稣也拦不住!",
        showHtml: "<span style='color:green'>你知道我这几个月是怎么过来的吗?</span>"
      }
    }
  }
</script>

<template>
    <h2 style="color: red;">{{msg}}</h2>
    <p>纯文本:{{showHtml}}</p>
    <p>v-html: <span v-html="showHtml"></span></p>
 </template>

运行效果:

🌾 Attribute绑定

双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind指令


<template>
    <!-- <div id="{{dynamicId}}">我是加皇帝</div> -->
    <div v-bind:id="dynamicId">我是大皇帝</div>
</template>

<script >
  export default{
    data(){
      return {
        "dynamicId":"active"
      }
    }
  }
</script>

v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。如果绑定的值是 null 或者 undefined,那么该 attribute 将会从渲染的元素上移除。

因为 v-bind 非常常用,我们提供了特定的简写语法:

<div :id="dynamicId"></div>

🌾 布尔型Attribute

布尔型 attribute 依据 true / false 值来决定 attribute 是否应该存在于该元素上。disabled 就是最常见的例子之一。

v-bind 在这种场景下的行为略有不同:

<template>
    <button :disabled="isButtonDisabled">Button</button>
</template>

<script >
  export default{
    data(){
      return {
        isButtonDisabled : true
      }
    }
  }
</script>

当 isButtonDisabled 为真值或一个空字符串 (即 <button disabled="">) 时,元素会包含这个 disabled attribute。而当其为其他假值时 attribute 将被忽略。

🌾 动态绑定多个值

如果你有像这样的一个包含多个 attribute 的 JavaScript 对象:

  const objectOfAttrs = {
    id:"demo",
    class:"demo_class"
  }

通过不带参数的 v-bind,你可以将它们绑定到单个元素上:

<template>
    <button :disabled="isButtonDisabled">Button</button>
    <div v-bind="objectOfAttrs">O(∩_∩)O哈哈</div>
</template>

<script setup>
  const objectOfAttrs = {
    id:"demo",
    class:"demo_class"
  }

</script>

最终展示效果:

🌾 Javascript表达式

Vue 实际上在所有的数据绑定中都支持完整的 JavaScript 表达式:

如下面代码所示:

{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

这些表达式都会被作为 JavaScript ,以当前组件实例为作用域解析执行。具体代码如下:

<script >
  export default{
    data(){
      return {
        msg: "vue 我学定了!耶稣也拦不住!",
        showHtml: "<span style='color:green'>你知道我这几个月是怎么过来的吗?</span>",
        // 绑定数字类型
        number:521,
        // 绑定布尔类型
        ok:true,
        // 绑定字符串类型
        message:"甜甜的恋爱"
      }
    }
  }
</script>

<template>
    <!-- 发生运算 -->
    <h3>小甜甜{{number-1}}!</h3>
    <!-- 使用三目运算符 -->
    <h3>你也喜欢我把?{{ok?'YES':'No'}}</h3>
    <!-- 调用方法 -->
    <h3>我们在一起就是->{{message.split('').reverse().join('')}}</h3>
    <h2 style="color: red;">{{msg}}</h2>
    <p>纯文本:{{showHtml}}</p>
    <p>v-html: <span v-html="showHtml"></span></p>
 </template>

🌾指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 ( v-for 和 v-on 是例外情况,稍后我们再讨论)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。回顾我们在介绍中看到的例子:

<p v-if="seen">现在你看到我了</p>

<script >
  export default{
    data(){
      return {
        seen:true
      }
    }
  }
</script>

这里, v-if 指令将根据表达式 seen 的值的真假来插入/移除 <p> 元素。

🌾 参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。例如, v-bind 指令可以用于响应式地更新 HTML attribute:

<a v-bind:href="url"> 看看我是谁? </a>

在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。

🌾 数据绑定

Vue中有2中数据绑定的方式:

  • 单向绑定:v-bind 数据只能从data流向页面
  • 双向绑定:v-model 数据不仅能从data流向页面,还可以从页面流向data
<template>
    <div id="root">
        单向绑定:<input type="text" :value="name"><br/>
        双向绑定:<input type="text" v-model="name"><br>
        最终name的值: {{name}}
    </div>
 </template>

<script >
  export default{
    data(){
      return {
        name: "阿良"
      }
    }
  }
</script>

注意:

  • 双向绑定 一般都应用在表单类元素上,如:input、select、textarea等
  • v-model实际上是v-model:value的简写,因为v-model默认收集的就是value值

----------------------------------------------------------------------

​分享不易,耗时耗力,喜欢的同学给个关注和赞吧

承接毕设指导,技术答疑,学习路上想要找私人教练的同学可以私信我

更多学习资料,公众号:墨轩学习网,B站:墨轩大楼

----------------------------------------------------------------------

另:有下图需求的,可以私信我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听潮阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值