走进Vue【一】初识Vue

news2025/7/7 0:28:05

文章目录

  • 🌟前言
  • 🌟MVVM模式
  • 🌟Vue简介
  • 🌟Vue重要版本发布
  • 🌟Vue特点
  • 🌟快速上手Vue
  • 🌟Hello Vue
  • 🌟Vue实例
  • 🌟写在最后

🌟前言

从历史的潮流来说,人们从之前的:原生JS -> Jquery之类的类库 -> 前端模板引擎 ,他们都有一个共同的特点需要我们去操作DOM元素。但是当我们大量的去操作DOM元素时,就会出现很多性能相关的问题。MVVM 的出现,完美解决了以上三个问题;而我就今天要讲的Vue就是基于MVVM的一个渐进式框架。最初它不过是个人项目,时至今日,已成为全世界三大前端框架之一,github 上拥有 15 万 Star 领先于 React 和 Angular,在国内更是首选。它的设计思想、编码技巧也被众多的框架借鉴、模仿。所以MVVM又是什么?Vue又是什么呢?

🌟MVVM模式

Vue在设计上使用MVVM(Model-View-ViewModel)架构模式。

当应用庞大到一定程度时,MVC架构模式也将变得十分复杂,特别是View的逻辑部分变得难易维护。在这样的背景下,MVVM(Model–View–ViewModel)的架构模型应运而生。前后端分离架构与SPA应用都离不开MVVM的流行,这些都带来了前端技术的快速发展。

通过MVVM的模式拆分为视图(View)与数据(Model)两部分,并将其分离。ViewModel是MVVM模式的核心,是连接View和Model的桥梁。视图(View)与数据(Model)通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。
在这里插入图片描述

MVVM 与 MVC 最大的区别就是:它实现了 View 和 Model 的自动同步,也就是当 Model
的属性改变时,我们不用再自己手动操作 Dom 元素,来改变 View 的显示,而是改变属性后该属性对应 View
层显示会自动改变(对应Vue数据驱动的思想)

🌟Vue简介

Vue官方网址 Vue是一个轻量级的MVVM前端框架,使用Vue可以让Web开发变得简单,同时也颠覆了传统前端开发模式。

Vue是一个基于JavaScript开发的MVVM库,是一套构建用户界面的渐进式框架。它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。

Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

🌟Vue重要版本发布

  • 2013年,在 Google 工作的尤雨溪,受到 Angular 的启发,开发出了一款轻量框架,最初命名为 Seed 。
  • 2013年12月,更名为 Vue,图标颜色是代表勃勃生机的绿色,版本号是 0.6.0。
  • 2014.01.24,Vue 正式对外发布,版本号是 0.8.0。
  • 2014.02.25,0.9.0 发布,有了自己的代号:Animatrix,此后,重要的版本都会有自己的代号。
  • 2015.06.13,0.12.0,代号Dragon Ball,Laravel 社区(一款流行的 PHP 框架的社区)首次使用 Vue,Vue 在 JS 社区也打响了知名度。
  • 2015.10.26,1.0.0 Evangelion 是 Vue 历史上的第一个里程碑。同年,vue-router、vuex、vue-cli 相继发布,标志着 Vue从一个视图层库发展为一个渐进式框架。
  • 2016.10.01,2.0.0 是第二个重要的里程碑,它吸收了 React 的虚拟 Dom 方案,还支持服务端渲染。自从Vue 2.0 发布之后,Vue 就成了前端领域的热门话题。
  • 2019.02.05,Vue 发布了 2.6.0 ,这是一个承前启后的版本,在它之后,将推出 3.0.0。
  • 2019.12.05,在万众期待中,尤雨溪公布了 Vue 3 源代码,目前 Vue 3 处于 Alpha 版本。

🌟Vue特点

  • 简洁:页面由HTML模板+Json数据+Vue实例组成。
  • 轻量:Vue的生产版本(即min版)源码仅为72.9kb,官网称gzip压缩后只有25.11kb。
  • 快速:Virtual DOM进行高效的DOM更新。
  • 数据驱动:操作数据,DOM的事情Vue会帮你自动处理。
  • 模块友好:结合一些第三方模块构建工具,如CommonJS、RequireJS或者SeaJs,可以轻松实现代码的模块化。
  • 组件化:用可复用、解耦的组件(.vue)来构造页面。
  • 文档友好:中文api文档和官方教程。

🌟快速上手Vue

  • 安装Node环境 Node官网
    • 去官网下载你电脑所对应的版本,一路回车即可。也可以看看我写的这篇博文去使用NVM(NVM-Node管理工具)。
  • Vue安装
    • script标签引入 <script src="vue.js"></script>
    • CDN引入 <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
    • 命令行工具 (CLI)

Vue 提供了一个官方的 Vue CLI,为单页面应用 (SPA) 快速搭建繁杂的脚手架。它为现代前端工作流提供了内置支持的构建设置。只需要几分钟的时间就可以运行起来并带有热重载、保存时 lint 校验,以及生产环境可用的构建版本。

CLI 工具假定用户对 Node.js 和相关构建工具有一定程度的了解。如果你是新手,我们强烈建议先在不用构建工具的情况下通读指南,在熟悉 Vue 本身之后再使用 CLI。

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:

  • 通过 @vue/cli 实现的交互式的项目脚手架。
  • 通过 @vue/cli + @vue/cli-service-global 实现的零配置原型开发。
  • 一个运行时依赖 (@vue/cli-service),该依赖:
    • 可升级;
    • 基于 webpack 构建,并带有合理的默认配置;
    • 可以通过项目内的配置文件进行配置;
    • 可以通过插件进行扩展。
  • 一个丰富的官方插件集合,集成了前端生态中最好的工具。
  • 一套完全图形化的创建和管理 Vue.js 项目的用户界面。

Vue CLI 致力于将 Vue
生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性,无需
eject。

Vue CLI安装

Node 版本要求:
Vue CLI 4.x 需要 Node.js v8.9 或更高版本 (推荐 v10 以上)。你可以使用 n,nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本。

  • 可以使用下列任一命令安装这个新的包:
npm install -g @vue/cli
# OR
yarn global add @vue/cli
  • 安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的帮助信息,来验证它是否安装成功。你还可以用这个命令来检查其版本是否正确:
vue --version
# OR
vue -v

通过Vue CLI创建一个Vue项目

  • vue create
    • vue create hello-world
      在这里插入图片描述

在这里插入图片描述

  • 使用图形化界面
    • 你也可以通过 vue ui 命令以图形化界面创建和管理项目:
vue ui

在这里插入图片描述

🌟Hello Vue

  • script引入:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> -->
    <script src="./vue.js"></script>
</head>
<body>
<div id="app">
    <h1>{{message}}</h1>
</div>
<script>
    new Vue({
        el:'#app',
        data:{
            message:'Hello Vue'
        }
    })
</script>
</body>
</html>

在这里插入图片描述

  • Vue CLI构建工程:
//  mian.js
import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')
<!-- App.vue -->
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <h1>{{message}}</h1>
  </div>
</template>

<script>

export default {
  name: 'App',
  data() {
    return {
      message: 'Hello Vue'
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>


在这里插入图片描述

🌟Vue实例

每个 Vue 应用都是通过 Vue 构造函数创建一个新的 Vue 实例开始的:

var vm = new Vue({
  // 选项
})

变量vm保存的就是Vue的实例。

当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

示例
Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> -->
    <script src="./vue.js"></script>
</head>
<body>
<!--这是我们的 View-->
<div id="app">
    <h1>{{message}}</h1>
</div>
<script>
// 创建一个 vue实例,连接 View 与 Model
    new Vue({
        el:'#app',
        data:{
            message:'Hello Vue'
        }
    })
</script>
</body>
</html>

当创建一个 Vue 实例时,你可以传入一个选项对象。

参数类型描述
elstring\HTMLElementVue实例作用的根DOM对象,通过CSS选择器或DOM对象与html模板绑定
dataObject/functionVue实例数据来源,其值的类型为JSON对象。视图就可以访问到message该属性

当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。

上述 Hello Word! 示例中,数据和 DOM 已经被绑定在一起,所有的元素都是响应式的,在控制台修改app.message时,页面中的数据也会更新。值得注意的是只有当实例被创建时就已经存在于 data 中的 property 才是响应式的。

🌟写在最后

这篇文章为大家介绍了Vue的简介、Vue环境搭建。创建Vue项目以及’Hello Vue’,你是否学会了呢,小伙伴一定记的尝试哦,后续会为小伙伴们持续更新Vue基础语法以及一些实战小魔法!各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

Promise.all的使用

Promise的基本使用Promise.all() 传参和返回结果Promise.all() 完成状态Promise.all() 失败状态Promise.all() 使用案例Promise.all() 传参和返回结果 Promise.all() 传入一个promise的数组&#xff0c;并返回一个Promise实例&#xff0c;传入数组中的promise返回的 resolve 回…

探究前端的跑马灯效果是如何用css实现的

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;…

学习 Python 之 Pygame 开发魂斗罗(十二)

学习 Python 之 Pygame 开发魂斗罗&#xff08;十二&#xff09;继续编写魂斗罗1. 修改玩家扣减生命值2. 解决玩家下蹲子弹不会击中玩家而是直接让玩家死亡的问题3. 完善地图4. 增加产生敌人函数&#xff0c;解决一直产生敌人的问题5. 给玩家类增加计算玩家中心的方法继续编写魂…

软件行业的最后十年【ChatGPT】

在这篇文章中&#xff0c;我将说明像 ChatGPT 这样的生成式人工智能 (GAI) 将如何在十年内取代软件工程师。 预测被离散化为 5 个阶段&#xff0c;总体轨迹趋向于完全接管。 但首先&#xff0c;一个简短的前言。 推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场景。 1、关于AI…

ChatGPT-4.0 : 未来已来,你来不来

文章目录前言ChatGPT 3.5 介绍ChatGPT 4.0 介绍ChatGPT -4出逃计划&#xff01;我们应如何看待ChatGPT前言 好久没有更新过技术文章了&#xff0c;这个周末听说了一个非常火的技术ChatGPT 4.0&#xff0c;于是在闲暇之余我也进行了测试&#xff0c;今天这篇文章就给大家介绍一…

七夕节,我用代码制作了表白信封

大家好&#xff0c;我是小周&#xff0c;明天就是七夕了&#xff0c;这么浪漫的节日&#xff0c;自然少不了我这个浪漫博主&#xff0c;本次为大家贡献表白信封的制作&#xff0c;其他的就看缘分啦&#xff0c;哈哈&#xff0c;最后会放上资源包&#xff0c;需要的小伙伴自取就…

Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wss://xxx/xxx“ failed

最近使用 node.js 搭建 WebSocket 服务&#xff0c;在本地测试 connection 都是正常&#xff0c;于是部署到 Linux 服务上&#xff0c;需要用 Nginx 来反向代理 WebSocket 服务。浏览器控制台报错&#xff1a;WebSocket connection to wss://tiven.cn/ws/xxx failed:&#xff0…

学会iframe并用其解决跨域问题

了解iframe 官方定义为&#xff1a;iframe是HTML标签&#xff0c;作用是文档中的文档&#xff0c;或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架&#xff08;即行内框架&#xff09;。 简单理解为&#xff1a;iframe是一个内联框架&#xff0c;可以在当…

ES6 --- 解构赋值(数组,对象,函数)使用详解

解构赋值 JavaScript 中最常用的两种数据结构是 Object 和 Array。 对象让我们能够创建通过键来存储数据项的单个实体。数组则让我们能够将数据收集到一个有序的集合中。 但是&#xff0c;当我们把它们传递给函数时&#xff0c;函数可能不需要整个对象/数组。它可能只需要对…

[Vue warn]: Error in v-on handler: “TypeError: Cannot read properties of undefined (reading ‘$refs‘)

报错&#xff1a;[Vue warn]: Error in v-on handler: "TypeError: Cannot read properties of undefined (reading $refs)" 背景&#xff1a;1.在做vue项目时&#xff0c;在功能弹框中&#xff0c;想实现新增内容。 2. 报错原因是要触发menuCheckall组件后&#xff…

background-image使用

目录 background-image: url(" ")&#xff1b; background-repeat属性&#xff08;背景平铺&#xff09; background-size属性&#xff08;设置背景图片大小&#xff09; background-position属性&#xff08;背景图片位置&#xff09; 1.background-image: url…

Vue中 Vue-Baidu-Map基本使用

前言 但我们遇到一项新技术或者没有写过的东西为了不走弯路我们只能先去模仿或者看官方文档 Vue这个框架相信大家都熟悉&#xff0c;只要是需要用的第三方平台它一般都会进行集成&#xff0c;比如Vue-Baidu-map 为什么有百度原生api为什么还需要插件&#xff0c;因为使用插件…

ref 引用(vue获取DOM元素)

ref 引用 jquery 牛逼 简化了程序员操作DOM的过程 vue 优势&#xff1a; MVVM 在 vue 中&#xff0c;程序员不需要操作DOM。只需要把数据维护好&#xff01;(数据驱动视图) 结论&#xff1a;在 vue 项目&#xff0c;强烈不建议大家安装和使用jQuery&#xff01;&#xff01;&am…

CORS错误是什么如何解决?

通过http://localhost访问服务端时,出现CROS错误是什么问题该如何解决呢? 发生ajax跨域问题的原因&#xff1a;(三个原因同时满足才可能产生跨域问题) (1)浏览器限制 发生ajax跨域的问题的时候后端是正常执行的&#xff0c;从后台打印的日志可以看出&#xff0c;而且后台也会…

前端布局小案例,如何创建漂亮的毛玻璃输入表单卡片效果

在当今互联网时代&#xff0c;用户体验是至关重要的。当我们在设计网站或应用程序时&#xff0c;一个漂亮、吸引人的界面往往是吸引用户并提高用户满意度的关键因素之一。而一个好看的表单则可以提高用户提交的意愿和效率。本文将介绍如何使用HTML和CSS创建一个漂亮的毛玻璃输入…

vue3 响应式对象的 api 详解

文章目录Ⅰ. ref、reactive ( 递归监听 )Ⅱ. isRef、isReactive ( 判断 )Ⅲ. toRef 和 toRefs ( 解构 )Ⅳ. toRaw 、 markRaw ( 解除代理)Ⅴ. unref ( 拷贝 )Ⅵ. shallowRef 、shallowReactive&#xff08; 非递归监听 &#xff09;Ⅶ. triggerRef &#xff08;强制更新&#x…

使用小程序制作一个老照片修复工具,让追忆时光触手可及

一、文章前言二、准备流程三、开发步骤四、完整代码一、文章前言 此文主要通过小程序来制作一个照片修复工具,实现黑白图片上色及图像效果增强等功能。 二、准备流程 2.1、注册百度开放平台及微信公众平台账号。 2.2、下载及安装微信Web开发者工具。 2.3、如需通过SDK调用及需…

LVGL V8应用——通过按键切换页面

一、按键切换对象 程序 全局变量 static lv_obj_t *contanier1 NULL; static lv_obj_t *contanier2 NULL;按钮对应回调函数&#xff0c;实现容器的切换 static void win_btn_event_callback1(lv_event_t* e) {lv_event_code_t code lv_event_get_code(e);if (code LV_EVE…

猿创征文|前端到全栈,一名 IT 初学者的学习与成长之路

目录导读写在前面创作之路❤ 前端开发工程师知识体系❤ Vue&React 开发框架❤ 前端开发实战❤ Linux&云原生小马技术栈❤ 主打技术专栏❤ 其他专栏(实用干货)❤ 技术栈词云学习与成长总结写在前面 2021 年 7 月 18 日我在 CSDN 发布了第一篇技术文章&#xff0c;距现在…

如何用html制作一个简单的网页

哈喽&#xff0c;大家好&#xff01;我是小张。大家在浏览网页的时候有没有好奇过这个网页是怎么制作&#xff0c;其实只是制作一个简单的网页是很简单的。今天我就教一下大家如何用HTML制作一个简单的网页。 了解html 1. 学习html之前先要知道html是什么 HTML的全称为超文本标…