Vue.js 从入门到实践1:环境搭建、数据绑定与条件渲染

一,Vue 模板语法与数据绑定

1.1文本插值

Vue.js最基本的数据绑定形式是文本插值,使用"Mustache"语法(双大括号):

html 复制代码
<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello Vue!"
    };
  }
};
</script>

双大括号支持JavaScript表达式:

html 复制代码
<template>
  <div>
    <p>{{ message.split("").reverse().join("") }}</p>
  </div>
</template>

字符串处理方法说明:

  • split(""):将字符串分割为字符数组
  • reverse():反转数组顺序
  • join(""):将数组合并为字符串
1.2原始HTML渲染

双大括号会转义HTML标签,使用v-html指令可渲染原始HTML:

html 复制代码
<template>
  <div>
    <p>纯文本: {{ rawHtml }}</p>
    <p>属性: <span v-html="rawHtml"></span></p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rawHtml: "<a href='https://itbaizhan.com'>百战程序员</a>"
    };
  }
};
</script>

安全警告

  • 动态渲染HTML存在XSS攻击风险
  • 仅对可信内容使用v-html
  • 禁止用于用户提交内容
1.3文本插值基础

Vue.js 通过双大括号语法实现文本插值,支持变量和表达式:

html 复制代码
<template>
  <p>{{ message.split("").reverse().join("") }}</p>
</template>
<script>
export default {
  data() { return { message: "Hello Vue!" }; }
};
</script>
  • split("") 将字符串转为字符数组
  • reverse() 反转数组顺序
  • join("") 重组为字符串
1.4HTML 渲染指令

使用 v-html 指令渲染原始 HTML:

html 复制代码
<template>
  <span v-html="rawHtml"></span>
</template>
<script>
export default {
  data() { return { rawHtml: "<a href='#'>链接</a>" }; }
};
</script>

安全警告:避免对用户提交内容使用此指令,防止 XSS 攻击。

二,属性绑定语法:

v-bind 指令动态绑定属性,支持简写(冒号):

html 复制代码
<template>
  <div :id="dynamicId" :class="msg"></div>
</template>
<script>
export default {
  data() { return { dynamicId: "appoid", msg: "active" }; }
};
</script>
2.1布尔属性处理

布尔属性根据绑定值决定存在性:

html 复制代码
<template>
  <button :disabled="isDisabled">按钮</button>
</template>
<script>
export default {
  data() { return { isDisabled: true }; }
};
</script>
2.2多属性绑定

对象语法实现批量绑定:

html 复制代码
<template>
  <div v-bind="attributeObject"></div>
</template>
<script>
export default {
  data() {
    return {
      attributeObject: {
        id: "appoid",
        class: "active",
        title: "动态标题"
      }
    };
  }
};
</script>

三,条件渲染

3.1 v-if 指令

v-if 指令根据表达式的布尔值决定是否渲染元素。当条件为假时,元素不会出现在 DOM 中。

html 复制代码
<template>
  <div>
    <p v-if="flag">这段文字只有在 flag 为 true 时才会显示</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      flag: true
    };
  }
};
</script>
3.2 v-else 和 v-else-if

v-else 和 v-else-if 用于实现多分支条件逻辑,必须紧跟在 v-if 或 v-else-if 元素之后。

html 复制代码
<template>
  <div>
    <p v-if="score >= 90">优秀</p>
    <p v-else-if="score >= 80">良好</p>
    <p v-else-if="score >= 60">及格</p>
    <p v-else>不及格</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      score: 75
    };
  }
};
</script>
3.3 v-show 指令

v-show 通过 CSS 的 display 属性控制元素显示/隐藏,元素始终存在于 DOM 中。

html 复制代码
<template>
  <div>
    <p v-show="isVisible">这段文字通过 display CSS 属性控制显示/隐藏</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      isVisible: true
    };
  }
};
</script>
3.4 v-if 与 v-show 的区别
特性 v-if v-show
初始渲染 惰性渲染 始终渲染
切换开销 高(销毁/重建组件) 低(仅切换 CSS)
适用场景 条件不频繁变化 需要频繁切换的场景

四, 列表渲染

4.1 基本列表渲染

v-for 指令可以基于数组或对象渲染列表,支持使用 in 或 of 语法。

html 复制代码
<template>
  <div>
    <p v-for="(item, index) in names" :key="index">
      {{ index }}: {{ item }}
    </p>
    <p v-for="item of names" :key="item">
      {{ item }}
    </p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      names: ["百战程序员", "尚学堂", "IT"]
    };
  }
};
</script>
4.2 使用 key 的重要性

为每个列表项提供唯一的 key 属性,帮助 Vue 高效更新 DOM。

html 复制代码
<template>
  <div>
    <div v-for="item in items" :key="item.id">
      {{ item.name }}
    </div>
  </div>
</template>

五,组件化开发

5.1 创建和使用组件

组件化是 Vue 的核心特性,通过拆分功能提高代码复用性。

  1. 创建组件文件 IfDemo.vue
html 复制代码
<template>
  <div>
    <p v-if="visible">这是一个条件渲染组件示例</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      visible: true
    };
  }
};
</script>
  1. 在父组件中使用:
html 复制代码
<template>
  <div id="app">
    <IfDemo />
  </div>
</template>
<script>
import IfDemo from './components/IfDemo.vue';
export default {
  components: {
    IfDemo
  }
};
</script>

总结

  • 条件渲染:掌握 v-if、v-else、v-show 的区别及适用场景
  • 列表渲染:熟练使用 v-for,理解 key 的作用
  • 组件化:学会拆分组件的标准流程
  • 渐进式框架:根据需求逐步扩展 Vue 的功能
相关推荐
灵感__idea2 小时前
Hello 算法:贪心的世界
前端·javascript·算法
GreenTea4 小时前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
killerbasd5 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
吴声子夜歌5 小时前
ES6——二进制数组详解
前端·ecmascript·es6
码事漫谈6 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
ZC跨境爬虫6 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝6 小时前
svg图片
前端·css·学习·html·css3
橘子编程6 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
王夏奇6 小时前
python中的__all__ 具体用法
java·前端·python
叫我一声阿雷吧7 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint