vue快速入门

Vue 基础简介

Vue.js 是一套用于构建用户界面的渐进式 JavaScript 框架,它具有以下特点:

  1. JS 框架:提供一套完整的工具和规范,助力高效开发。
  2. 简化 DOM 操作:开发者无需直接编写复杂的 DOM 操作代码,只需关注数据变化。
  3. 响应式数据驱动:当数据发生变化时,视图会自动更新。

环境准备

首先,通过 <script> 标签导入 Vue.js:

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.js"></script>

Vue 实例的两大核心元素

1. el:挂载点

通过 CSS 选择器设置 Vue 实例所管理的 HTML 元素。Vue 实例可以挂载在大部分双标签元素上,但建议不要挂载到 <body> 和 <html> 上。

2. data:数据对象

Vue 中用到的所有数据都定义在 data 对象中。data 中可以存储复杂类型的数据(如数组、对象),在渲染它们时,需遵守 JavaScript 语法。

html 复制代码
<div id="app">
    <p>{{ message }}</p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app", // id选择器,也可以使用class选择器等
    data: {
        message: "hello"
    }
})

Vue 指令详解

指令 (Directives) 是带有 v- 前缀的特殊属性,用于在表达式的值改变时,将某些行为应用到 DOM 上。

v-text

用于设置标签的纯文本内容(等同于 innerText)。

html 复制代码
<div id="app">
    <p v-text="message"></p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        message: "hello"
    }
})

v-html

用于在标签中嵌入 HTML 代码(等同于 innerHTML)。

html 复制代码
<div id="app">
    <!-- 如果是普通文本,效果和 v-text 一样 -->
    <!-- <p v-html="message"></p> -->
    
    <!-- 如果是 HTML 字符串,则会被渲染为 HTML 元素 -->
    <p v-html="link"></p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        // message: "hello"
        link: '<a href="http://baidu.com">百度</a>'
    }
})

v-on

用于为元素绑定事件,可以使用简写 @。

html 复制代码
<div id="app">
    <!-- 完整语法 -->
    <input type="button" value="事件绑定" v-on:click="handleClick">
    
    <!-- 简写语法 -->
    <input type="button" value="事件绑定" @click="handleClick">
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    methods: {
        handleClick: function() {
            // 方法体
            alert('按钮被点击了!');
        }
    }
})
常见事件
事件名 说明 触发时机
click 点击 鼠标点击元素时
dblclick 双击 鼠标双击元素时
mousedown 鼠标按下 在元素上按下鼠标按钮时
mouseup 鼠标松开 在元素上松开鼠标按钮时
mouseenter 鼠标进入 鼠标进入元素时(不冒泡)
mouseleave 鼠标离开 鼠标离开元素时(不冒泡)
mouseover 鼠标悬停 鼠标进入元素或其子元素时(冒泡)
mouseout 鼠标移出 鼠标移出元素或其子元素时(冒泡)
mousemove 鼠标移动 鼠标在元素内移动时
scroll 滚动 元素滚动条滚动时
resize 窗口调整 窗口大小变化时(通常用 window.addEventListener)
contextmenu 右键菜单 鼠标右键点击时(通常配合 .prevent 阻止默认菜单)

v-show 与 v-if

两者都用于根据表达式的真假,条件性地显示或隐藏元素,但原理不同。

  • v-show :通过操作元素的 CSS display 样式来控制显示和隐藏。元素始终会被渲染并保留在 DOM 中。
  • v-if:通过操作 DOM 元素来控制显示和隐藏。当条件为假时,元素及其子元素会被完全销毁和移除。

选择建议 :如果需要在显示与隐藏之间频繁切换 ,推荐使用 v-show(性能开销更小);如果在运行时条件很少改变 ,则使用 v-if 更合适。

html 复制代码
<div id="app">
    <!-- 使用 v-show -->
    <img v-show="isShow" src="示例图片地址1.jpg">
    <img v-show="age >= 18" src="示例图片地址2.jpg">
    
    <!-- 使用 v-if -->
    <img v-if="isShow" src="示例图片地址1.jpg">
    <img v-if="age >= 18" src="示例图片地址2.jpg">
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        isShow: true,
        age: 17
    }
})

v-bind

用于动态设置元素的属性(如 src、title、class 等),可以使用简写 :。

html 复制代码
<div id="app">
    <!-- 完整语法 -->
    <img v-bind:src="imgSrc">
    
    <!-- 简写语法 -->
    <span :title="message">将鼠标悬停在我上面</span>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        imgSrc: "https://example.com/image.jpg",
        message: "这是一个动态提示信息"
    }
})

v-for

用于根据一组数据遍历生成列表结构,语法为 item in items,并支持获取循环索引。

html 复制代码
<div id="app">
    <ul>
        <!-- 获取元素和索引 -->
        <li v-for="(item, index) in arr">
            {{ index + 1 }}. {{ item }}
        </li>
    </ul>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        arr: ["a", "b", "c"]
    }
})

v-model

实现表单元素与数据之间的双向数据绑定。当表单控件的值发生变化时,对应的数据也会自动更新,反之亦然。

html 复制代码
<div id="app">
    <input type="text" v-model="message">
    <p>你输入的内容是:{{ message }}</p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        message: "hello"
    }
})

网络应用:axios

Vue.js 结合网络请求库 axios 可以轻松开发网络应用。

首先导入 axios:

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

GET 请求示例

javascript 复制代码
axios.get('https://api.example.com/data?key1=value1&key2=value2')
    .then(function(response) {
        // 成功后的回调函数
        console.log('数据获取成功:', response.data);
    }, function(err) {
        // 失败后的回调函数
        console.error('请求失败:', err);
    });

POST 请求示例

javascript 复制代码
axios.post('https://api.example.com/data', {
    key1: 'value1',
    key2: 'value2'
})
    .then(function(response) {
        // 成功后的回调函数
        console.log('数据提交成功:', response.data);
    }, function(err) {
        // 失败后的回调函数
        console.error('提交失败:', err);
    });
相关推荐
仿生狮子4 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
Lvan的前端笔记7 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习8 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194059 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风9 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn11 小时前
框架性能优化
前端
雪芽蓝域zzs12 小时前
第 5 节:Marker 点击弹出 InfoWindow 信息窗口
vue.js
回眸&啤酒鸭12 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138412 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员12 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端