项目开发的架构模式与异步请求(AJAX)

ops/2024/10/30 19:15:40/

一、项目开发的架构模式

1. 架构模式的分类

在项目开发中,架构模式通常分为以下两种类型:

  • B/S架构(浏览器/服务端)
  • C/S架构(客户端/服务端)

例如,QQ和微信的设计均基于C/S架构。这种架构的本质在于数据的共享与交互,通常需要数据库来做凭据或记录。

2. 访问地址的来源

架构设计时,访问地址由服务端提供,技术架构的选择必须支持Web服务,以遵循HTTP/HTTPS协议。以下是几种常见的技术栈:

  • Go
    • Gin
    • Beego
    • Inris
  • Java
    • JSP/Servlet
    • Struts/Struts2
    • Spring MVC
    • Spring Boot

3. 服务端地址路由的目的

服务端的路由地址主要用于获取资源或数据。可以将其分为以下两类:

  • 资源
    • 适合单体架构:动态资源(HTML)和静态资源(CSS/JS/图片)。
  • 数据
    • 适合前后端分离架构:数据以JSON等格式在前后端之间传输。

二、同步请求与异步请求

1. 同步请求

同步请求的处理通常通过表单进行,用户的操作会导致页面跳转。例如,在登录流程中,成功后跳转到首页,失败则返回合理的提示。同步请求的缺陷包括:

  • 页面交互需要在多个页面间完成,导致用户体验不佳。
  • 服务器负担较重,可能造成性能问题。

2. 异步请求

异步请求(AJAX)是一种更为高效的网络请求方式。AJAX的优势在于不需要重新加载整个页面,就能与服务器交换数据并更新部分网页内容。AJAX依赖JavaScript事件来触发请求。

3. AJAX的工作原理

AJAX的核心组件是XMLHttpRequest对象,以下是其主要组成部分:

  • onreadystatechange:监听请求状态变化。
  • open:设置请求的类型(GET/POST)和URL。
  • send:发送请求。

4. AJAX的具体实现

以下是一个使用AJAX进行异步请求的简单示例:

准备Mock数据
{"message": "ok","status": 200,"data": {"username": "飞哥","age": 20}
}
HTML与JavaScript代码
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
</head>
<body><div id="myDiv"><h2>使用 AJAX 获取服务端数据</h2></div><button type="button" onclick="loadData()">加载服务端数据</button><script>function loadData(){var xmlhttp = new XMLHttpRequest();xmlhttp.onreadystatechange = function(){if (xmlhttp.readyState == 4 && xmlhttp.status == 200){document.getElementById("myDiv").innerHTML = xmlhttp.responseText;}}xmlhttp.open("GET", "/json/data.json", true);xmlhttp.send();}</script>
</body>
</html>

封装AJAX请求

为了提高复用性,可以将AJAX请求进行封装:

var ajax = function(url, method, successFn, failFn){var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');request.open(method, url);request.onreadystatechange = () => {if (request.readyState === 4) {if (request.status == 200) {successFn(request.response);} else if (request.status >= 400) {failFn(request, request.status);}}};request.send();
};function loadData() {ajax("/model/data.json", "get", function(res) {console.log(res);});
}

http://www.ppmy.cn/ops/129676.html

相关文章

计算机毕业设计 | vue+springboot调查问卷管理系统(附源码+论文)

1&#xff0c;研究目的 在进入21世纪以后&#xff0c;互联网得到了蓬勃的发展&#xff0c;电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后&#xff0c;传统问卷还存在很多弊端&#xff1a; 问卷分发起来比较困难&#xff0c;并且分发试卷耗费大量的金钱和时…

【漏洞复现】74cms v4.2.1 v4.2.129 后台getshell漏洞

漏洞描述 厂商:74cms 下载地址:http://www.74cms.com/download/index.html 关于版本: 新版的74cms采用了tp3.2.3重构了,所以可知底层是tp,74cms新版升级是后台升级的,所以先将将升级方法。 注:此漏洞不用升级至最新版本也可使用。 免责声明 技术文章仅供参考,任何个…

前沿技术与未来发展第一节:C++与机器学习

第六章&#xff1a;前沿技术与未来发展 第一节&#xff1a;C与机器学习 1. C在机器学习中的应用场景 C在机器学习中的应用优势主要体现在高效的内存管理、强大的计算能力和接近底层硬件的灵活性等方面。以下是 C 在机器学习领域的几个主要应用场景&#xff1a; 1.1 深度学习…

Matlab 车牌识别技术

1.1设计内容及要求&#xff1a; 课题研究的主要内容是对数码相机拍摄的车牌&#xff0c;进行基于数字图像处理技术的车牌定位技术和车牌字符分割技术的研究与开发&#xff0c;涉及到图像预处理、车牌定位、倾斜校正、字符分割等方面的知识,总流程图如图1-1所示。 图1-1系统总…

jenkins自动化构建vue(web)项目并部署(项目实战)

安装nodejs插件 系统管理>插件管理 安装完成 配置node 新建任务 根据自己情况来设置是否需要丢弃旧的构建&#xff0c;我保存了5天和5次 cd /var/jenkins_home/workspace/hainan_road_web/SDGS-YHJC/sdgs-ui npm config set registry https://registry.npmmirror.com n…

06回归与相关

文章目录 1.Simple linear regression&#xff08;1&#xff09;影响因子&#xff08;2&#xff09;线性回归的假定 2.Simple linear correlation&#xff08;1&#xff09;相关性的解释&#xff08;2&#xff09;不同的相关性 方差分析 组间差异和 分类变量解释连续变量的情况…

ssm基于ssm框架的滁艺咖啡在线销售系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 3 2.1 MYSQ…

【Linux】线程锁同步互斥生产消费模型

目录 认识锁及其接口 从原理角度理解锁 从实现角度理解锁 Linux线程同步 条件变量 写一个测试代码 生产者消费者模型 基于 BlockingQueue 的生产者消费者模型 POSIX信号量 基于环形队列的生产消费模型 实际上&#xff0c;线程的大部分资源都是共享的&#xff0c;把多…