百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

网站开发模式演进历程(网站的开发形式)

myzbx 2025-03-23 21:41 22 浏览

我们现在基本每天都会浏览网站,那么网站的开发其实经历了几个较大的演进历程,接下来从特定视角介绍一下主要开发模式的演化过程。

  • 静态网站
  • 动态网站
  • 服务端渲染与客户端渲染结合
  • 前后端分离

静态网站

早期的网站基本上都是静态的,所谓静态并不是页面是静止的,没有动画效果,而是把网站所有的网页开发好之后直接上线部署到服务器上,那么这些页面就固定放到服务器之上,如果上线时是100个页面,那么如果不更新,该网站就是写死的100个页面了,这就是所谓的“静态网站”。静态网站的内容主要包括HTML、CSS、javascript代码,图片、字体文件、音频、视频等资源。其交互流程如下图所示:

静态网页访问流程

  • 客户端向服务器发送请求
  • Nginx根据请求路径获取网页内容
  • 将页面内容传输给客户端
  • 客户端展示网页效果

静态网站有明显的局限性:

  1. 如果需要更新页面的内容,比如说,每个页面添加一条广告信息,会很麻烦,需要一个一个页面进行修改,工作量比较大,尤其是大规模的网站,这种方式基本不可行。
  2. 无法实现交互效果,比如登录,发表评论、点赞等功能。

动态网站

鉴于静态网站的问题,后来就诞生了动态网站技术、比如PHP、JSP、ASP等。所谓的动态网站也不是页面有动画,而是指页面是通过技术手段动态生成的。比如银行的账单页面,张三和李四会看到不同的数据,但是在服务器中仅仅一个动态页面就够了,当张三和李四分别访问该动态页面时,会分别动态生成两个不同的HTML页面,动态性体现在HTML的动态生成上。

以PHP动态网站技术为例,具体流程如下

  • 客户端访问服务器的php页面
  • Nginx根据请求路径找到php文件
  • Nginx把php文件交给php运行环境进行编译,转换成静态HTML页面,然后交给Nginx
  • Nginx把动态生成的HTML页面返回给客户端
  • 浏览器展示页面效果

服务端渲染与客户端渲染结合

无论是静态网站还是动态网站,当浏览器发送请求之后,如果服务器返回内容的时间比较慢(可能是网络问题),那么浏览器只能等待,处于阻塞状态,呈现出的效果就是长时间白屏,在当今快节奏的生活模式下,坐高铁、吃快餐......这些习惯已根深蒂固,当一个页面3秒左右不出来,我们甚至都不愿意去等。

所以为了改善用户体验,2005诞生了一种技术Ajax,他可以使浏览器在不阻塞的情况下,向服务器发送请求,用户是无感知的,当服务器返回数据后,页面再根据数据进行局部更新。有了Ajax这种技术,再配合jQuery,基本上就成了前端的主要开发模式,这也是此后jQuery近10年的辉煌时期(当然现在有了更好的选择—Vue/React/Augular)。

接下来需要着重解释一个概念:渲染。所谓的渲染就是把数据填充到HTML标签的过程。

还是以查看账单的场景为例,账单数据一般都是存储在数据库中,那么php代码会从数据库中查询出数据然后拼接到HTML标签代码中,这个过程发生在服务器,所以称之为服务端渲染。流程如下图所示:

客户端请求得到服务端渲染的HTML页面之后先进行展示,如果用户触发操作要更新页面,还可以通过Ajax请求获取后端返回的数据(当前基本上是JSON格式的数据),从而实现页面的局部更新。比较典型的场景有触底加载更多列表内容的效果,当页面滚动到底部的时候,页面上面的内容不会消失,而是在底部显示Ajax请求的一页新的数据,这种效果体验非常好。那么服务器如果仅仅返回JSON数据,页面端会通过javascript代码把数据填充到HTML标签中进行显示,这种数据填充标签的过程发生在浏览器,即所谓的客户端渲染

jQuery时代基本上是服务端渲染和客户端渲染结合使用,一般主页面采用服务端渲染,主页展示之后,后续页面局部更新操作一般基于Ajax,采用客户端渲染方式,从而提升交互体验。

前后端分离

随着互联网的持续繁荣,客户端基于Ajax渲染的业务场景越来越复杂,那么把JSON数据拼接到HTML标签中的代码实现越来越繁琐,代码变得难以维护。虽然出现了像art-template之类的前端模版引擎,从某种程度上有所改善,但是像事件处理还是需要自己去操作,并未从根本上解决问题。

好在2009年一种技术的诞生奠定现今前端更加繁荣的开发模式:Node.js

Node.js可以让javascript运行在非浏览器环境,并且提供了对接底层操作系统API的能力。经过十多年的发展,这个生态已经非常繁荣。新兴的前端框架基本都是构建在Node.js生态之上,包括目前比较流行的AngularJS、Vue、React。

新兴前端框架,比如以React为例,基本上颠覆了前端代码的开发模式,将程序员从繁琐的DOM操作中解脱出来,而仅仅需要关注数据处理和业务操作,从而大大简化了前端的代码实现。此外更重要的一点就是,前后端从项目结构和开发流程上彻底分离,让前端和后端可以更加专注(其实都可以少掉点儿头发),而之前很多后端基本都是做全栈的工作。

在这种前后端分离的开发模式下,具体流程如下

在这种前后端分离的模式下,前后与后端的对接仅仅需要约定一种接口(接口细节包括请求地址,请求方式、请求参数,后端返回的结果),那么这种接口是与技术无关的,所以前后的技术选型可以自由设计,前端可以选择React、Vue等都可以,后端可以选择java、PHP、python等亦无所谓。

对于前端来说,一个很大的变化,就是前端项目可以单独实现工程化,可以独立设计、开发、测试、部署上线以及运维等。所以这套流程靠后端已经不太容易兼职搞定了,所以前端工程师这个岗位才有了一席之地,并且可以与后端工程师分庭抗礼。

相关推荐

Luminati代理动态IP教程指南配置代理VMLogin中文版反指纹浏览器

介绍如何使用在VMLogin中文版设置Luminati代理。首先下载VMLogin中文版反指纹浏览器(https://cn.vmlogin.com)对于刚接触Luminati动态ip的朋友,是不是不懂...

文档中图形及子图形的处理(word中的图形对象有何特点)

【分享成果,随喜正能量】走得越远,见识越多,认识的人越多,你就越能体会到,人这一辈子,你真的在意的,同时又在意你的人,就那么几个,这几个人,就是你全部的世界。三两知己,爱人在侧,父母康健,听起来平淡无...

Python爬虫破解滑动验证码教程(python绕过滑动验证码)

破解滑动验证码通常需要结合图像识别和模拟人类操作,以下是分步骤的解决方案:1.分析验证码类型缺口识别型:背景图带缺口,滑块图带凸块轨迹验证型:除了位置还需模拟人类移动轨迹2.获取验证码图片方法一:...

「教程」5 分钟带你入门 kivy(新手kp教学)

原创:星安果AirPythonkivy语言通过编写界面UI,然后利用Python定义一些业务逻辑,可以移植很多功能模块到移动端直接执行。下面对kivy常见用法做一个汇总。1、什么是...

比呀比: Fossil Estate Canvas EW 男式复古邮差包 $70.99

Fossil是一个来自美国的全球性生活时尚品牌,始建于1984年,专注于时尚配件,是第一个将手表的价值与款式完美结合的美国品牌,如今Fossil已跃身成为美国最受欢迎的品牌之一。这款FossilE...

智能教学:如何在网上授课(网上授课怎么弄)

摘要:因为担心传统课堂可能会传播冠状病毒,许多大学已经开始在网上授课。耶鲁-新加坡国立大学的讲师凯瑟琳·谢伊·桑格(CatherineSheaSanger)解释了如何快速而有效地做到这一点。当新型冠...

wxPython库教程系列之图片:托盘图标和图片缩放、移动

1概要:=====1.1托盘图标设置1.2普通图片显示:原图显示,缩放显示,窗口与图片大小相互适应。1.3按钮图片设置1.4移动图片和zoom菜单按钮联动设置2托盘图标:========2...

UE4渲染目标开发教程(ue4渲染效果图质量怎么样)

渲染目标(RenderTarget)是你可以在运行时写入的纹理。在引擎方面,它们存储基础颜色、法线和环境光遮蔽等信息。在用户方面,渲染目标主要用作一种辅助相机。你可以将场景捕捉指向某物并将图像存储到...

比呀比: Fossil 化石 Canvas NS 男士复古帆布斜挎包 $57.59

FossilCanvasNS男士复古帆布斜挎包,尺寸约为26.5*11*33厘米。采用100%纯棉帆布面料,融合了休闲与百搭的外形,在经典的款型呈现复古质感。内设1个拉链袋,2个搭扣数码产品袋和...

比呀比: Timberland 添柏岚 Canvas Cord Case 帆布旅行手包 $5.99

Timberland添柏岚这款耐用帆布旅行手包,虽然一眼过去,觉得不咋地,但是品牌和质量还是妥妥滴,非常适合装一些零零碎碎的小东西,便于携带,多色可选,重点是价格更是感动价啊。目前这款包在6pm报价...

提炼文章/知识资料,两键转换成小红书图片

现在AI的功能已经越来越强大了,通过AI可以提高我们不少工作效率。刚好前几天做了一个几乎“一气呵成”,把长文章转成小红书卡片的流程Demo,分享给大家。之前发过两篇利用AI把长文章转成小红书图片...

python海龟绘图turtle(一):画布和窗体

海龟绘图(turtle)是python的一个有趣的内置模块,是python语言的标准库之一,是入门级的图形绘制函数库。海龟绘图(turtle)可以根据编写的控制指令(代码),让一个小“海龟”在屏幕上来...

在文档中添加画布及图片(word中如何添加画布)

【分享成果,随喜正能量】宁可正而不足,不可邪而有余。相识满天下,知心能几人。书七成,戏三分,牛皮灯影胡编成。布施不如还债,修福不如避祸。勿以恶小而为之,勿以善小而不为。。《VBA之Word应用》,是我...

知识管理神器 Obsidian,终于有了白板功能!

沙牛提示阅读本文需要3分钟,Obsidian白板功能来了!如果你喜欢本文,就分享给你的小伙伴!01白板继双链笔记之后,这一年,白板类工具开始火了起来。顾名思义,白板类工具,它给了你一张无限尺寸...

虚拟背景第一弹!教你如何在家中优雅地“学在交大”!

交大将于3月2日正式开始线上教学(3月1日举行线上教学第一课|视频直播课)目前正处于网课试课阶段交大在线课程教学以ZOOM、Canvas等作为主平台平台的虚拟背景功能可以具特别的环境效果更好地沉浸课堂...