架构图以及vue的简介

news2025/2/24 16:17:10

架构图

前后端分离总架构图

前端架构设计图

MVVM 架构模式

MVVM 的简介

MVVM 由 Model,View,ViewModel 三部分构成,Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。

在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

MVVM 模式图

vue

1. 学习 vue 的前提

  • 你只需要了解关于 HTML、CSS 和 JavaScript 的中级知识,就能进行开发。
  • vue用于构建用户界面的渐进式框架,渐进式代表的含义是:主张最少。每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
  • Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。你可以在底层数据逻辑的地方用OO和设计模式的那套理念,也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。
  • 我们没必要一上来就搞懂Vue的每一个部件和功能,先从核心功能开始学习,逐渐扩展。 同时,在使用中,我们也没有必要把全部件能都拿出来,需要什么用什么就是了,而且也可以把Vue很方便的与其它已有项目或框架相结合

2. vue 的简单介绍

Vue.js 可以说是MVVM 架构的最佳实践,是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架。专注于 MVVM 中的 ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS 库,API 简洁

3. vue 热加载

因为vue的双向数据绑定特性以及技术的成形,实现了项目的热加载,改完页面代码能立即在浏览器方面显示效果,提高开发效率

4. vue 的双向数据绑定的原理

Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现数据绑定的。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

Observer 数据监听器,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者,内部采用Object.defineProperty的getter和setter来实现。

Compile 指令解析器,它的作用对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数。

Watcher 订阅者, 作为连接 Observer 和 Compile 的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数。

Dep 消息订阅器,内部维护了一个数组,用来收集订阅者(Watcher),数据变动触发notify 函数,再调用订阅者的 update 方法。

5. vue 引用与后台的交互

在访问一个 API 并展示其数据,基于 promise 的 HTTP 客户端 axios 则是其中非常流行的一种,

首先,我们要通过 npm/Yarn 或一个 CDN 链接安装 axios,

我们有很多种方式可以从 API 请求信息,但是最好首先确认这些数据看起来长什么样,以便进一步确定如何展示它。为此,我们会调用一次这个 API 并输出结果,以便我们能够看清楚它。如 CoinDesk 的 API 文档所述,请求会发送到 https://api.coindesk.com/v1/bpi/currentprice.json。所以,我们首先创建一个 data 里的属性以最终放置信息,然后将会在 mounted 生命周期钩子中获取数据并赋值过去:

new Vue({
 el: '#app',
 data () {
   return {
     info: null
  }
},
 mounted () {
   axios
    .get('https://api.coindesk.com/v1/bpi/currentprice.json')
    .then(response => (this.info = response))
}
})
<div id="app">
{{ info }}
</div>

我们得到的东西是这样的:

{
  "USD": {
    "code": "USD",
    "symbol": "&#36;",
    "rate": "5,255.3433",
    "description": "United States Dollar",
    "rate_float": 5255.3433
  },
  "GBP": {
    "code": "GBP",
    "symbol": "&pound;",
    "rate": "4,061.1927",
    "description": "British Pound Sterling",
    "rate_float": 4061.1927
  },
  "EUR": {
    "code": "EUR",
    "symbol": "&euro;",
    "rate": "4,699.5277",
    "description": "Euro",
    "rate_float": 4699.5277
  }
}

当然这个只是一个非常简单的示例,在项目开发过程中,我们会基于axios做一些封装,包括错误处理,请求拦截,请求优化等等

6. vue 常用的网站

vue官方文档:https://cn.vuejs.org/v2/guide/

vue资源精选:http://vue.awesometiny.com/

vue GitHub地址:https://github.com/vuejs/vue

基于vue和element构建的后台前端解决方案:https://panjiachen.github.io/vue-element-admin-site/zh/

vue 项目说明

vue项目网上有非常多的成名模板,我推荐一个,想深入学习建议多多浏览下面的地址

vue和element构建的后台前端解决方案:<https://panjiachen.github.io/vue-element-admin-site/zh/

目录结构

├── build # 构建相关 ├── static # 静态资源 │ │── img # 图片 │ │── favicon.ico # favicon图标 │ └── index.html # html模板 │ │── Tinymce # 富文本 ├── src # 源代码 │ ├── api # 所有请求 │ ├── assets # 主题 字体等静态资源 │ ├── components # 全局公用组件 │ ├── directive # 全局指令 │ ├── icons # 项目所有 svg icons │ ├── lang # 国际化 language │ ├── layout # 全局 layout │ ├── router # 路由 │ ├── store # 全局 store管理 │ ├── styles # 全局样式 │ ├── utils # 全局公用方法 │ ├── views # views 所有页面 │ ├── App.vue # 入口页面 │ ├── main.js # 入口文件 加载组件 初始化等 │ └── permission.js # 权限管理 ├── tests # 测试 ├── .env.xxx # 环境变量配置 ├── .eslintrc.js # eslint 配置项 ├── .gitignore # git 配置项 ├── .babelrc # babel-loader 配置 ├── .travis.yml # 自动化CI配置 ├── vue.config.js # vue-cli 配置 └── package.json # package.json

此为常见的目录结构,在实际开发过程中,会因为项目的差异,目录有些小的改动。

项目启动

在终端

# 进入项目目录(假设项目名为:vue-element-admin)
cd vue-element-admin

# 安装依赖
npm install

# 本地开发 启动项目
npm run dev

# 启动完成我们就能在,提示的地址中,浏览或开发项目(例如地址为:http://127.0.0.1:9528)
http://127.0.0.1:9528

url****到页面显示的过程

浏览器端显示HTML的过程

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

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

相关文章

养老院管理系统(Java+Web+MySQL)

目 录 摘 要 1 Abstract 2 第一章 绪论 6 一、 选题的依据及意义 6 二、 国内外现状研究 6 三、 研究目的 7 四、 本文研究的主要内容 7 五、 本文章节安排 7 六、 本章小结 8 第二章 设计技术与开发环境 9 一、 相关技术介绍 9 &#xff08;一&#xff09; JSP简介 9 &#xf…

在vue中使用echarts

欢迎大家加入我的社区&#xff1a;http://t.csdn.cn/Q52km 社区中不定时发红包 文章目录1、安装2、在vue中引入&#xff08;全局引入&#xff09;3、在vue中的使用4、模板代码放在哪个位置5、完整的一个vue页面实例&#xff1a;6、实现效果7、可能遇到的问题&#xff0c;下载不…

vue3 解决各场景 loading过度 ,避免白屏尴尬!

Ⅰ、前言 当我们每次打卡页面&#xff0c;切换路由&#xff0c;甚至于异步组件&#xff0c;都会有一个等待的时间 &#xff1b;为了不白屏&#xff0c;提高用户体验&#xff0c;添加一个 loading 过度动画是 非常 常见的 &#xff1b;那么这几种场景我们应该把 loading 加在哪…

Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)

theme: smartblue 持续创作&#xff0c;加速成长&#xff01;这是我参与「掘金日新计划 6 月更文挑战」的第6天&#xff0c;点击查看活动详情 本文简介 点赞 关注 收藏 学会了 使用 Vue 开发时&#xff0c;肯定会接触到 组件 的概念&#xff0c;无可避免的也会接触到 组件通…

Vue:Vue事件整理

文章目录前言一、Vue基本事件this对象传递参数总结二、事件修饰符三、键盘事件keyup/keydown四、ElementUi前言 本篇复习Vue中的事件处理&#xff0c;包含事件基本响应、事件修饰符、键盘事件等内容 一、Vue基本事件 Vue中&#xff0c;设置点击、鼠标滚动和键盘输入等相应事…

vue3【列表渲染】v-for 详细介绍(vue中的“循环”)

vue 常用语法——列表渲染 v-for文章简介v-for 主要内容&#x1f53a;item in itemsv-for 变量的作用域v-for 与对象在 v-for 里使用范围值&#x1f53a;<template> 上的 v-forv-for 与 v-if&#x1f53a;通过 key 管理状态&#x1f53a;组件上使用 v-forsummary下期预告…

前端设置页面字体尺寸跟随屏幕大小而进行变化

越来越多的前端项目现在需要这个操作&#xff0c;其操作的原因很简单&#xff0c;你的项目可能跑在小尺寸分辨率的电脑上&#xff0c;也有可能在大尺寸的会议平板上&#xff0c;更有甚者是在LED上。那么如何让你的项目根据屏幕分辨率的大小而自动变化&#xff0c;修改页面展示字…

运行调试前端项目之ts

本文分四个部分&#xff1a; 直接node或ts-node运行ts通过package.json文件运行tsts翻译为js后运行js在ide中运行和调试ts — vscode中&#xff0c;配置launch.json文件&#xff0c;来调试ts&#xff0c;与js调试一致 — idea、webstorm中&#xff0c;安装“run configuration…

vue3 超好用的富文本编辑器

Ⅰ. 前言 quillEditor 毫无疑问一款非常强大的 富文本编辑器 在 vue 中一个也非常好用 &#xff0c;而且也十分轻量的&#xff1b; 然而如今的vue3 我们该如何使用它呢 &#xff1a; Ⅱ.vue3 中 安装 quillEditor ① 下载 npm install vueup/vue-quillalpha --save② 在ma…

vite首次打开界面加载慢问题/解决

写在前面 网上都说vite要比webpack快&#xff0c;但个人感受&#xff0c;默认情况下, vite项目的启动确实比webpack快&#xff0c;但如果某个界面是首次进入&#xff0c;且依赖比较多/比较复杂的话&#xff0c;那就会比较慢了。 这篇文章就是用来记录&#xff0c;关于vite慢的…

java实现文件的下载和删除(返回输出流至前端)

文章目录引言实现步骤下载文件删除文件删除目录&#xff08;及目录下全部文件&#xff09;实现代码测试引言 最近需求中有使用到文件的下载功能&#xff0c;在之前的学习过程中我没有去注重过文件处理方面的学习&#xff0c;所以写起来还是有点吃力&#xff0c;将写出的工具类…

浏览器的组成部分

什么是浏览器&#xff1f; Web 浏览器简称为浏览器&#xff0c;是一种用于访问互联网上信息的应用软件。浏览器的主要功能是从服务器检索 Web 资源并将其显示在 Web 浏览器窗口中。 Web 资源通常是 HTML 文档&#xff0c;但也可能是 PDF、图像、音频、视频或其他类型的内容。…

IDEA2022创建Web项目配置Tomcat(图文说明)

下面是在idea上面配置一个Tomcat的项目环境。 1.首先创建普通的一个Java项目&#xff0c;不要选择JavaEE 2.创建完成后按照下图所示&#xff0c;依次选择 File -> Add Framework Support -> Web Application -> 在WEB-INF文件夹下创建classes和lib文件夹 3.下面配置…

若依前后端分离版:增加新的登录接口,用于小程序或者APP获取token,并使用若依的验证方法

LoginController类 具体代码 /*** app 登录*/AnonymousAccessPostMapping("login")public AjaxResult login(RequestBody LoginBody loginBody) {AjaxResult ajax AjaxResult.success();// 生成令牌String token loginService.login(loginBody.getUsername(), logi…

【项目实战】登录与注册业务的实现(前端+后端+数据库)

本示例基于Vue.js和mint UI实现。 目录 一、数据库的创建 二、后端接口与数据库的连接 三、前端代码实现 1.注册页相关代码 2.注册页效果 3.登录页相关代码 4.登录页效果 四、注册登录演示 五、项目文件结构 一、数据库的创建 此处以Navicat软件进行创建&#xff0c;新…

刚去公司,发现node版本过高,如何将node版本降低?

我们可以安装nvm&#xff0c;node版本管理器来实现。 1、nvm是什么&#xff1f; nvm&#xff08;node.js version management&#xff09;&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过…

uniapp自动更新

一uniapp自动更新流程逻辑 实现检测版本更新并下载新版本&#xff1a;通过后台返回更新版本的版本号和当前版本号做比较&#xff0c;不同则提示有新版本需要更新&#xff0c;下载地址又后台返回 uniapp自动更新设计思路 在服务端配置一个最新的应用版本号&#xff1b; 并将打包…

【jQuery从入门到精通】

文章目录jQuery简介jQuery下载与安装下载版本说明优点安装jQuery核心DOM对象和Jquery包装集对象dom对象的获取获取一个不存在的dom对象jQuery对象的获取获取一个不存在的jQuery对象DOM对象与jQuery对象的转换dom对象转jQuery对象jQuery对象转dom对象jQuery选择器基础选择器层次…

【ES6丨前端进阶基础 】二,ES6rest参数,Symbol第七种数据类型

CSDN话题挑战赛第2期 参赛话题&#xff1a;面试宝典 目录​​​​​​​ 前言 一&#xff0c;函数参数的默认值设置 二&#xff0c;rest参数 三&#xff0c;扩展运算符 扩展运算符应用 1.合并数组 2.数组的克隆 3.伪数组转化成真正的数组 四&#xff0c;Symbol第7种数…

vue脚手架(2022年9月份nodejs16.17.0版本)

vue脚手架(2022年9月份nodejs16.17.0版本) 目录 vue脚手架(2022年9月份nodejs16.17.0版本) 下载地址 环境变量设置 全局文件夹与缓存文件夹设置 修改国内的【阿里】镜像 查看vue信息 更新npm 新增环境变量 安装vue与router 安装vue脚手架 Vue项目创建 项目层级 …