谷粒商城实战笔记-36-前端基础-Vue-介绍HelloWorld

news2024/12/23 11:15:33

文章目录

  • 一,MVVM 思想
    • 直接操作DOM的示例
    • 使用Vue和MVVM的示例
    • MVVM与DOM操作的主要区别
  • 二,Vue 简介
  • 三,第一个Vue项目
    • 1 新建项目
    • 2 安装依赖
    • 3 使用Vue

这一节的主要内容是演示Vue的简单使用。

一,MVVM 思想

  • M:即 Model,模型,包括数据和一些基本操作
  • V:即 View,视图,页面渲染结果
  • VM:即 View-Model,模型与视图间的双向操作(无需开发人员干涉)

在 MVVM 之前,开发人员从后端获取需要的数据模型,然后要通过 DOM 操作 Model 渲染到 View 中。

当视图改变后,我们还需要通过 DOM 获取 View 中的数据,然后同步到Model 中。

MVVM 中的 VM 要做的事情就是把 DOM 操作完全封装起来,开发人员不用再关心 Model 和 View 之间是如何互相影响的:

  • 只要我们 Model 发生了改变,View 上自然就会表现出来。
  • 当用户修改了 View,Model 中的数据也会跟着改变。

把开发人员从繁琐的 DOM 操作中解放出来,把关注点放在如何操作 Model 上。

直接操作DOM的示例

假设我们有一个简单的计数器应用,我们希望每次点击按钮时,页面上显示的数字增加1。

<!-- index.html -->
<div id="app">
    <p>Count: <span id="count">0</span></p>
    <button id="increment">Increment</button>
</div>

<script>
    document.getElementById('increment').addEventListener('click', function () {
        var countElement = document.getElementById('count');
        var currentCount = parseInt(countElement.textContent, 10);
        countElement.textContent = currentCount + 1;
    });
</script>

在这个例子中,直接通过getElementById获取DOM元素,并在事件处理器中修改这些元素的内容。虽然这种方法简单直观,但在复杂的用户界面和状态管理中,它容易导致代码冗长且难以维护。

使用Vue和MVVM的示例

同样的计数器应用,使用Vue框架和MVVM模式,代码看起来会更简洁且易于理解:

<!-- index.html -->
<div id="app">
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            count: 0
        },
        methods: {
            increment: function () {
                this.count++;
            }
        }
    });
</script>

在这个Vue版本的示例中,不再直接操作DOM,而是通过定义data属性和methods来描述应用的状态和行为。Vue框架负责监听状态变化并自动更新视图,这使得代码更加简洁,逻辑更加清晰,也更容易扩展和维护。

MVVM与DOM操作的主要区别

  1. 数据绑定:在MVVM模式下,数据和视图之间是双向绑定的,数据的更改会自动反映在视图上,反之亦然。而在直接操作DOM的情况下,你需要手动更新DOM以反映数据的变化。

  2. 代码结构:MVVM模式鼓励将数据、逻辑和视图分开,这使得代码更加模块化和可测试。直接操作DOM往往会导致代码混合在一起,增加理解和维护的难度。

  3. 性能优化:Vue等MVVM框架通常会缓存和批处理DOM更新,从而提高性能。直接操作DOM可能需要更多的CPU资源,尤其是在频繁更新DOM的情况下。

综上所述,虽然直接操作DOM在某些简单场景下可能是合适的,但在构建复杂和动态的Web应用时,MVVM模式和Vue这样的框架提供了更高效、更优雅的解决方案。

二,Vue 简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

总之,Vue能简化前端开发,提升开发效率。

官网:https://cn.vuejs.org/
参考:https://cn.vuejs.org/v2/guide/
Git 地址:https://github.com/vuejs

三,第一个Vue项目

1 新建项目

新建文件夹vue2并在vscode中打开,因为我们要使用npm对前端工程进行管理,所以使用下面的命令初始化项目:

npm init -y

初始化完成后,在工程根目录下会自动生成一个文件package.json

在这里插入图片描述

2 安装依赖

执行如下命令安装vue依赖。

npm install vue@^2

安装完成后,会在工程根目录下多出一个node_modules的文件夹。

在这里插入图片描述

packag.json文件中新增了关于vue的依赖声明。

在这里插入图片描述

3 使用Vue

第一步,在工程根目录下,创建index.html文件。

在这里插入图片描述

第二步,引入vue。

<script src="./node_modules/vue/dist/vue.js"></script>

第三步,创建一个简单的view。

<div id="app">
   <h1>{{name}},非常帅</h1>
</div>
  • <div id="app">:这是一个普通的HTML <div> 元素,用作Vue应用的根元素。Vue实例将挂载到这个元素上。
  • <h1>{{name}},非常帅</h1>:这是一个标题元素,其中包含一个插值表达式 {{name}}插值表达式是Vue中用于数据绑定的一种方式,它允许你将数据模型中的值渲染到DOM中。

插值表达式 {{name}}

  • {{ }} 是Vue的插值语法,用于将变量的值插值到模板中。
  • name 是一个变量名,它代表Vue实例中的数据属性。在这个例子中,name 应该是一个在Vue实例中定义的属性。

第四步,在script标签中创建Vue实例

JavaScript中创建一个Vue实例,并将其挂载到具有 id="app" 的元素上。

     new Vue({
       el: '#app',
       data: {
         name: '张二强'
       }
     });

  • el 属性指定了Vue实例应该挂载的元素。
  • data 属性是一个对象,定义了Vue实例的数据属性。在这个例子中,name 是一个数据属性,它的值将被渲染到模板中。

渲染结果

在这里插入图片描述

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <h1>{{name}},非常帅</h1>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
      let vm = new Vue({
        el: '#app',
        data: {
          name: "张二强"
        }
      })
    </script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础vrrp(虚拟路由冗余协议)

一、VRRP 虚拟路由冗余协议 比如交换机上联两个路由器&#xff0c;由两个路由虚拟出一台设备设置终端设备的网关地址&#xff0c;两台物理路由的关系是主从关系&#xff0c;可以设置自动抢占。终端设备的网关是虚拟设备的ip地址&#xff0c;这样&#xff0c;如果有一台路由设备…

c++模板初识

目录 一、 泛型编程 二、 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 1. 隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2.显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 5.模板参数的…

万物互联时代,手机丢了我们该怎么办?

万物互联时代&#xff0c;我们的手机丢了该怎么办&#xff1f;全身家当都在一部手机里&#xff0c;这个时候我们更要冷静&#xff0c;然后先尝试着打电话、发短信、定位找手机。 如果实在找不到的话&#xff0c;先借个电话号码把以下四件事给做好&#xff1a; ①挂失手机号&am…

《昇思25天学习打卡营第21天|Pix2Pix实现图像转换》

Pix2Pix 是一种图像转换模型&#xff0c;使用条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks&#xff0c;cGANs&#xff09;实现图像到图像的转换。它主要由生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;…

【UE5.1】NPC人工智能——04 NPC巡逻

效果 步骤 一、准备行为树和黑板 1. 对我们之前创建的AI控制器创建一个子蓝图类 这里命名为“BP_NPC_AIController_Lion”&#xff0c;表示专门用于控制狮子的AI控制器 2. 打开狮子蓝图“Character_Lion” 在类默认值中将“AI控制器类”修改为“BP_NPC_AIController_Lion” 3…

数据编织 Data Fabric:解决“数据孤岛”的新思路

一个不争的事实是&#xff0c;企业内部数据孤岛的形成&#xff0c;根因在于业务发展的复杂性与技术迭代的快速性导致。具体而言&#xff0c;随着企业业务快速增长&#xff0c;如新生产线的引入或外部公司的并购&#xff0c;这些活动往往伴随着新系统上线与独立数据体系的融入&a…

AI算法24-决策树C4.5算法

目录 决策树C4.5算法概述 决策树C4.5算法简介 决策树C4.5算法发展历史 决策树C4.5算法原理 信息熵&#xff08;Information Entropy&#xff09; 信息增益&#xff08;Information Gain&#xff09; 信息增益比&#xff08;Gain Ratio&#xff09; 决策树C4.5算法改进 …

产品经理-工作中5大类技术名词解析(19)

在产品经理与开发的团队协作中,如果自己知道一些专业术语,对业务的开展是有帮助的&#xff0c;很多时候,在沟通过程当中,就是因为自己不懂,所以才不知道怎么去做,想要什么样的结果 在力所能及的情况下,平时,多了解一些专业术语,是有好处的 数据结构 数据结构是技术人员将数据进…

LeetCode——被管绕的区域

题目描述 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O 组成&#xff0c;捕获 所有 被围绕的区域&#xff1a; 连接&#xff1a;一个单元格与水平或垂直方向上相邻的单元格连接。区域&#xff1a;连接所有 O 的单元格来形成一个区域。围绕&#xff1a;如果您可…

数据库系统概论:事务与并发一致性问题

随着网络应用的普及&#xff0c;数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面&#xff0c;旨在提高系统的吞吐量和响应时间&#xff0c;以满足多用户同时访问数据库的需求。然而&#xff0c;这…

GPT-4o模型开通使用教学,解除使用限制【Outlook版】

OpenAI的GPT-4o模型免费用户都可以使用&#xff0c;但是遗憾的是每三小时可以使用十次问答。 但是还是有好多同学连使用都不会&#xff0c;今天这篇文章教会你如何使用并解除使用限制。 大家可以使用Outlook邮箱。 打开outlook官网选择中间获得免费账户。 ​ 在接下来的邮…

AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理

AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【零样本和少样本学习】之一 [构建标记任务] / [ 基线模型 ] 的简单整理 一、简单介绍 二、零样本学习 (Zero-shot Learning) 和少样本学习…

【Qt】常用控件

文章目录 QWidgetenabledgeometrywindow framewindowTitlewindowIconqrc资源管理windowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类PushButtonRadioButtonCheckBoxSignals 显示类LabelLCDNumberProgressBarCalendar 输入类LineEditTextEditComboBoxSpinBoxDateTimeE…

55 、mysql的存储引擎、备份恢复以及日志备份、恢复

一、数据库的存储引擎&#xff1a; 1.1、存储引擎的概念 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实…

Python游戏开发之制作捕鱼达人游戏-附源码

制作一个简单的“捕鱼达人”游戏可以使用Python结合图形界面库&#xff0c;比如Pygame。Pygame是一个流行的Python库&#xff0c;用于创建视频游戏&#xff0c;它提供了图形、声音等多媒体的支持。以下是一个基础的“捕鱼达人”游戏框架&#xff0c;包括玩家控制一个炮台来射击…

小程序博客搭建分享,纯微信小程序原生实现

本项目代码已开源&#xff0c;具体见&#xff1a; 前端工程&#xff1a;vue3-ts-blog-frontend 后端工程&#xff1a;express-blog-backend 小程序源码&#xff1a;blog-weapp 数据库初始化脚本&#xff1a;关注公众号程序员白彬&#xff0c;回复关键字“博客数据库脚本”&…

【ML练习】决策树

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、决策树算法概述 二、代码实现 代码目标&#xff1a;我们希望通过鸢尾花数据&#xff0c;训练一个决策树模型&#xff0c;之后应用该模型&#xff0c;可以…

新的铸造厂通过 PROFIBUS 技术实现完全自动化

钢铁生产商某钢以其在厚钢板类别中极高的产品质量而闻名。其原材料&#xff08;板坯连铸机&#xff09;在钢铁厂本地生产&#xff0c;该厂最近新建了一座垂直连铸厂。该项目的一个主要目标是从一开始就完全自动化这座新工厂和整个铸造过程&#xff0c;以高成本效率实现最佳产品…

ue5 使用动画蒙太奇,混合上半身持枪姿势

ue5 使用动画蒙太奇 1.创建动画蒙太奇 添加上半身插槽&#xff0c;在添加持枪动画 搜索equip stand,t&#xff0c;添加进上半身插槽 2.设置动画蓝图 3.播放动画蒙太奇

AFAC2024-基于保险条款的问答 比赛日记 llamafactory qwen npu 910B1

AFAC2024: 基于保险条款的问答挑战——我的实战日记 概述 在最近的AFAC2024竞赛中&#xff0c;我参与了基于保险条款的问答赛道。这是一次深度学习与自然语言处理的实战演练&#xff0c;旨在提升模型在复杂保险文本理解与问答生成方面的能力。本文将分享我的参赛过程&#xf…