vue模板语法: 插值语法和指令语法以及v-bind指令使用

迷南。 2023-09-27 09:54 268阅读 0赞

准备工作

首先新建一个页面,写好基本的代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. </div>
  13. <script type="text/javascript">
  14. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  15. Vue.config.productionTip = false
  16. </script>
  17. </body>
  18. </html>

插值语法

首先是简单的插值语法

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. <h1>插值语法</h1>
  13. <h3>你好,{
  14. {
  15. name}}</h3>
  16. <hr/>
  17. </div>
  18. <script type="text/javascript">
  19. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  20. Vue.config.productionTip = false
  21. new Vue({
  22. el:'#root',
  23. data:{
  24. name:'jack'
  25. }
  26. })
  27. </script>
  28. </body>
  29. </html>

在这里插入图片描述

指令语法

首先我们写一个正常的跳转

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. <h1>插值语法</h1>
  13. <h3>你好,{
  14. {
  15. name}}</h3>
  16. <hr/>
  17. <h1>指令语法</h1>
  18. <a href="https://www.baidu.com"/>点我去百度1</a>
  19. </div>
  20. <script type="text/javascript">
  21. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  22. Vue.config.productionTip = false
  23. new Vue({
  24. el:'#root',
  25. data:{
  26. name:'jack'
  27. }
  28. })
  29. </script>
  30. </body>
  31. </html>

在这里插入图片描述
点击是可以正常跳转到百度的
在这里插入图片描述
当然跳转的链接我们不能写死,我们换成插值语法试试

很明显是不行的,而且控制台还报错了,说的是现在不支持这种写法了,应该换种写法

在这里插入图片描述
所以我们不用插值语法,换种语法试试,修改代码

v-bind:简单使用

v-bind:动态的给标签属性动态绑定值,把属性的值当做js表达式去执行

使用vue指令 v-bind,这样就那内容当做js表达式去执行了,所以就去去找对应的url变量,也就是我们在vue的data中的值
在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. <h1>插值语法</h1>
  13. <h3>你好,{
  14. {
  15. name}}</h3>
  16. <hr/>
  17. <h1>指令语法</h1>
  18. <a v-bind:href="url"/>点我去百度1</a>
  19. </div>
  20. <script type="text/javascript">
  21. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  22. Vue.config.productionTip = false
  23. new Vue({
  24. el:'#root',
  25. data:{
  26. name:'jack',
  27. url:'https://www.baidu.com'
  28. }
  29. })
  30. </script>
  31. </body>
  32. </html>

这样我们再试下页面跳转,发现没问题了
在这里插入图片描述
在这里插入图片描述

v-bind:可以简写:

v-bind:可以简写为:,不是说所有指令都可以简写成一个冒号

  1. <!-- v-bind:正常格式-->
  2. <a v-bind:href="url" />点我去百度1</a>
  3. <!-- v-bind:简写成: -->
  4. <a :href="url" :x='hello'/>点我去百度1</a>

在这里插入图片描述
全部代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. <h1>插值语法</h1>
  13. <h3>你好,{
  14. {
  15. name}}</h3>
  16. <hr/>
  17. <h1>指令语法</h1>
  18. <!-- v-bind:正常格式-->
  19. <a v-bind:href="url" />点我去百度1</a>
  20. <!-- v-bind:简写成: -->
  21. <a :href="url" :x='hello'/>点我去百度1</a>
  22. </div>
  23. <script type="text/javascript">
  24. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  25. Vue.config.productionTip = false
  26. new Vue({
  27. el:'#root',
  28. data:{
  29. name:'jack',
  30. url:'https://www.baidu.com',
  31. hello:'12'
  32. }
  33. })
  34. </script>
  35. </body>
  36. </html>

总结

vue模板共有两大类

1 插值语法

功能:用于解析标签体内容,

写法:{ {xxx}},xxx是js表达式,且可以直接读取到data中的所有属性

2 指令语法

功能:用于解析标签(包括标签属性,标签体内容,绑定事件。。。)

举例:v-bind:href=”xxx”或简写为:href=“xxx”,xxx同样要写js表达式

备注:vue中有很多指令,且形式都是v-???,只有v-bind:可以简写为:,此处我们只是拿v-bind举个例子

3 使用场景

插值语法往往指向于标签体内容,标签题就是开始标签和结束标签直接的内容,比如

#

指令语法往往指向于标签属性

代码升级解决data中多个相同的key

此时修改代码。我们在data中定义多个相同的key,用于不同的展示
在这里插入图片描述
这个时候页面插值都会以最后一个key为准
在这里插入图片描述

那么如何解决这个问题呢

第一种:

很简单,我们修改key的名称,把第二个name换成name2,同时修改插值
在这里插入图片描述
第二种:使用不同的层级,这种比较第一种就解决方案更加利于维护

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>初始vue</title>
  6. <!-- 引入vue.js -->
  7. <script type="text/javascript" src="../js/vue.js"></script>
  8. </head>
  9. <body>
  10. <!-- 准备一个容器 -->
  11. <div id="root">
  12. <h1>插值语法</h1>
  13. <h3>你好,{
  14. {
  15. name}}</h3>
  16. <hr/>
  17. <h1>指令语法</h1>
  18. <!-- v-bind:正常格式-->
  19. <a v-bind:href="url" />点我去{
  20. {
  21. school.name}}1</a>
  22. <!-- v-bind:简写成: -->
  23. <a :href="Date.now()" :x='hello'/>点我去{
  24. {
  25. school.name}}</a>
  26. </div>
  27. <script type="text/javascript">
  28. // 设置为 false 以阻止 vue 在启动时生成生产提示。
  29. Vue.config.productionTip = false
  30. new Vue({
  31. el:'#root',
  32. data:{
  33. name:'jack',
  34. url:'https://www.baidu.com',
  35. hello:'abc',
  36. school:{
  37. name:'百度'
  38. }
  39. }
  40. })
  41. </script>
  42. </body>
  43. </html>

在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,268人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue指令语法

     除了插值语法(解析标签体的内容)之外,还有指令语法(解析标签:包括标签属性,标签体内容,绑定事件等等),这两者一起构成了Vue的模板语法 >  指令语法  标签中的属性,