当前位置: 首页 > Web前端 > HTML

Web开发相关概念

时间:2023-03-28 17:56:15 HTML

Web开发相关概念ProgrammingLanguageFrameworkDatabaseAPIFull-stackFull-stack:具备前后端能力PlanArchitectureDesignDevelopmentTestDeploymentMaintenanceWeb相关概念NetworkandInternetNetwork(网络)是指不少于两个设备通过有线或无线方式相互连接。当网络中的设备数量增加时,就需要使用网络交换机(switch)作为中介。交换机可以连接到其他交换机或终端设备。否则,网络中的终端设备需要成对连接,增加了网络的复杂度。互联网是一个全球互联的网络,也被称为“互联网络”。互联网采用B/S或C/S架构,浏览器或客户端访问互联网,互联网访问服务器并返回请求。Web服务器Server(server)是指运行应用程序或服务的计算机,它向客户端提供某种服务。数据中心通常包含大量连接到互联网并运行不同服务的服务器。数据中心有不同的系统来保持其运行、连接和冷却。许多网站使用离用户最近的数据中心来保证用户可以快速访问网站内容。根据服务器功能的不同,其硬件也有所不同。例如,存储大量图片的服务器需要大量的硬盘,而执行大量计算的服务器则需要更快的处理器。网络服务器(WebServer)存储和传递(deliver)用户请求的网站内容,如文本、图片、视频、应用数据等。Web服务器和浏览器(客户端)之间的通信是通过HTTP进行的。大多数网页都是用HTML编码的,内容可以是静态的也可以是动态的。大多数网络服务器都支持服务器端脚本语言来编码业务逻辑以进行通信。Web服务器处理请求和响应。网络服务器是一种具有以下功能的服务器:虚拟主机(Webhosting)内容管理系统(CMS)数据库(Databases)控制面板(ControlPanel)电子邮件(Email)网络服务器使用相同的软件和硬件来托管一个或更多这称为虚拟主机。Web服务器会限制不同用户的响应速度,防止某个用户占用资源。网站、网页和网络应用程序一个网站(website)是由一系列相互连接的网页(webpages)组成的。网页是一种可编辑的文本文档,它使用HTML、CSS和JavaScript来完成网页的编写。网站和Web应用程序之间的界限并不明确,这两个概念经常互换使用。它们的区别在于:交互性的强弱。网站更频繁地显示内容,Web应用程序更具交互性。当网络服务器向设备发送一个完整的网页时,设备将代码从上到下逐行解释为构建块,这就是用户所看到的。这个过程称为“页面呈现”。浏览器浏览器是使用户能够通过向Web服务器发送请求、接收响应并向用户呈现网页来浏览万维网的软件。浏览器的地址栏通过输入URL地址来定位网页和网站。URL地址通常包括协议、域名和文件路径。浏览器和服务器之间的通信协议是HTTP(HyperTransferTextProtocol/超文本传输??协议),发送时使用HTTP请求,返回时使用HTTP响应。浏览器使用cookie来存储用户信息,这使得用户在下次访问时可以被识别(记住用户名和密码)。还有其他cookie用于记录用户偏好、浏览模式等。还有所谓的第三方cookie,可以跨站点跟踪并收集用户信息并出售给其他公司。浏览器引擎浏览器引擎(browserengine),又称布局(layout)引擎、渲染(rendering)引擎,是所有浏览器的核心软件组件。它的主要任务是将HTML和其他文件转换为用户设备上的交互式和可视化内容。云计算云计算(cloud-computing)是指通过付费方式在互联网上获取所需的IT资源。用户可以从云服务提供商处获取计算资源、存储资源和数据库资源,而无需自己构建和维护物理数据中心。网站托管网站托管是指租用公司或服务提供商提供的服务器来托管用户的网站,用户不必自己搭建服务器或数据中心。几种不同的托管服务:共享托管共享托管与其他帐户/网站共享一个网络服务器,包括处理器、存储和带宽资源,这可能会降低您的应用程序的速度。这种方法适用于小型站点、低成本沙箱环境和有限的免费内容(广告等)。虚拟专用主机也称为VPS主机。VPS是运行在具有特定CPU、存储和带宽的物理服务器上的虚拟服务器。每个物理服务器下有多个VPS,每个VPS的资源是固定的,所以VPS之间互不干扰。这种类型的托管比共享托管更昂贵,网站的规模也更大。专用主机专用主机意味着所有硬件资源都为网站服务。比VPS贵。云主机在云主机中,网站运行在由物理服务器和虚拟服务器组成的云环境中。如果某台服务器出现故障,其他服务器可以保证网站的正常运行。这种方式的好处是可以不受硬件的限制,想用多少资源就用多少,成本也比较贵,但是网站的规模更大。动态内容和静态内容静态内容是指以保存在服务器上的形式返回给客户端的内容,如图片、视频等。动态内容是客户端向Web服务器向应用服务器发出HTTP请求后产生的内容。通常web服务器调用作为后端的应用服务器,返回给客户端。应用服务器应用服务器的处理比Web服务器复杂,一般包括:运行应用逻辑和与数据库交互检查权限如果应用服务器对每一个请求都进行响应,那么网站的性能会很差。Web服务器中通常有一个缓存来解决这个问题。当客户端发出请求时,web服务器会先检查请求的内容是否在缓存中,如果在,则直接返回,如果不在,则去应用服务器生成,返回给客户端并将副本保存到Web服务器。在经过一段时间的请求后,Web服务器会保存并更新某个缓存。此功能也称为“网络加速”。单页应用程序在JavaScript框架出现之前,网站几乎都是多页应用程序。但是从Web服务器在一个响应中返回整个页面会降低网站的性能。如果应用程序复杂,网络连接速度慢,用户体验会很差。一个单页面应用程序(SinglePageApplication/SPA)并不是只有一个网页,而是服务器只向浏览器发送一个HTML页面,其他内容会根据用户的使用情况动态更新。SPA允许用户根据用户操作重写当前网页,而不是下载新网页。SPA有两种提供代码和资源的服务:捆绑:服务器将所有需要的HTML、CSS和JS文件发送给浏览器。即所有视图都发送给浏览器lazy-loading懒加载/codesplittingcodesplitting:服务器只发送刚好满足需要的HTML、CSS和JS资源,其他资源在需要的时候再下载。即向浏览器发送必要的视图。传统的WebAPP会返回整个页面,然后由浏览器渲染;SPA会把页面当作一个视图View和一个模板Template,然后将JSON发送给浏览器,浏览器会动态加载JSON的内容。互联网的核心技术协议IP在互联网上传输数据时,需要一个IP地址作为传输的目的地。IP(InternetProtocol)也叫网际协议,常用的有两个版本,IPv4和IPv6。其中,IPv4使用“.”。分隔数字,一共有4个组成部分,例如:192.0.2.235;IPv6用“:”分隔数字,一共有8个组成部分,例如:4527:0a00:1567:0200:ff00:0042:8329。Internet上传输的数据是一系列称为IP数据包(packet/datagram数据报)的信息。IP数据包由以下部分组成:IPHeader包头:由目的地址和源地址以及一些附加信息组成IPData数据:具体要传输的数据IP数据包在传输时可能出现以下情况:数据包没有按预定顺序到达Damageddatapacketslostduringtransmission为了解决上述问题,IP数据包还包含其他协议的信息,例如:TCP(TransmissionControlProtocol/传输控制协议)和UDP(User数据报协议/用户数据报协议)。TCP可以解决以上三个问题,但会造成一定的传输延迟,必须用于按顺序到达的数据,如文本、图片等。UDP只能解决数据包传输损坏的问题,对于流媒体(视频)、录音等能承受一定损失的数据,数据报可能乱序到达或根本不到达。HTTPHTTPS是一种比HTTP更安全的协议,它使用密码来加密数据。HTTP是一种用于浏览器和服务器之间传输HTML文档、CSS样式、图片、文件等的协议。HTTP是基于请求-响应的。HTTP请求请求行所有HTTP请求都以请求行开头。请求行由HTTP方法、请求的资源和HTTP协议版本组成。GET/HTTP/1.1HTTP请求由请求行、请求头和请求体组成。GET/HTTP/1.1Host:developer.mozilla.orgAccept-Lanuage:en方法描述了客户端想要访问资源的方式。常用的方法有4种:GET:从Web服务器获取数据POST:向Web服务器发送数据PUT:更新Web服务器数据DELETE:删除Web服务器数据路径描述了资源在服务器上的存储位置。最常用的版本是1.1和2.0。请求标头包含有关请求的其他信息。请求标头请求标头区分大小写,以:结尾,并带有一个值。主机:example.comUser-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10.9;rv:50.0)Gecko/20100101Firefox/50.0Accept:*/*Accept-Language:enContent-type:text/jsonHostHeader:表示服务器的主机和请求的来源User-AgentHeader:告知web服务器请求者所在的应用程序,通常包括操作系统、版本和浏览器Acceptheader:通知web服务器客户端接受资源的内容类型Accept-Languageheader:表示客户端首选的语言Content-typeheader:表示发送请求中的内容类型body(requestbody)HTTP请求可选地包含请求体,通常使用POST或PUT方法传输数据。POST/usersHTTP/1.1Host:example.com{"key1":"value1""key2":"value2""array1":["value3","value4"]}PUT/users/1HTTP/1.1Host:example.comContent-type:text/json{"key1":"value1"}HTTP响应当Web服务器完成对HTTP请求的处理后,它会发送HTTP响应。状态行HTTP响应以状态行开头,指示处理是否成功。状态行由HTTP版本、状态代码和原因短语组成。原因短语是状态代码的文本表示。HTTP/1.1200OKDate:sat,01Jan202222:04:01GMTServer:Apache/2.4.52(CentOS)mod_ssl/2.8.31OpenSSL/1.1.1mLast-Modified:Mon,01Nov202109:01:13GMTContent-Length:50Content-Type:text/htmlresponseheader下面有一个messagebody,里面包含了要返回的内容。状态码状态码(Statuscodes)和状态信息(Statusmessage)在响应头中,表示对请求的响应状态,状态码的范围是100到599。状态码的第一位表示它所属的类别属于。状态码有5种:Informationalmessage100-199:通常包含来自服务器的临时(Provisonal/Interim)响应,常见的是100CONTINUE,表示服务器已经收到请求头,应该继续发送请求正文。101SwitchingProtocols:客户端请求服务器改变协议,服务器同意。成功200-299:表示请求已被服务器成功处理。常见的是200OK:GET对应找到目标POST对应发送到服务器成功PUT对应发送到服务器成功DELETE对应删除成功201Created:服务器成功处理请求,资源已经创建202Accepted:服务器已经收到请求处理,但是处理还没有完成204NoContent:服务器成功处理了请求,但是没有返回任何内容Redirection300-399:表示客户端请求的资源已经被移动,常见的是301MOVEDPERMANENTLY永久移动:当前和以后的请求应该转发到返回地址302FOUNDfound:当前请求应该转发到返回地址这个状态码的响应头会包含资源的地址.ClienterrorClienterror400-499:表示请求的语法错误或者内容无法被服务器处理。常见的有:400BadRequest:客户端或浏览器提交了错误的数据或数据过大,服务器无法处理请求401Unauthorized:用户必须登录账号403Forbidden:请求有效,但是服务器拒绝处理它。这通常是因为用户的权限不够404NotFound:在Web服务器上找不到请求的资源405MethodNotAllowed:Web服务器不支持使用的HTTP方法ServererrorServererror500-599:表示serverisprocessingtherequestError,常见的是500InternalServerError内部服务错误:常见的服务器错误,在处理请求的过程中发生错误或出现意外错误502BadGateway:webserverreceivedaninvalid(无效)来自应用服务器Request503ServiceUnavailable:Web服务器无法处理该请求。响应头与请求头类似,响应头有多种选择。常见的有:Date:Fri,11Feb202215:00:00GMT+2Server:Apache/2.2.14(Linux)Content-Length:84Content-Type:text/htmlDateheader:表示生成HTTP响应的时间和日期Serverheader:描述用于生成响应的Web服务器软件Content-Lengthheader:描述响应的长度Content-Typeheader:描述返回资源的媒体类型。响应体位于响应头之下,是响应的主要内容。可能包含HTML、图像、视频和其他媒体。HTTP/1.1200OK日期:2022年2月11日星期五15:00:00GMT+2服务器:Apache/2.2.14(Linux)内容长度:84内容类型:text/html测试测试HTML页面。当计算机连接到网络时分配DHCP动态主机配置协议(DHCP)给出电脑一个IP地址。您的计算机使用称为用户数据报协议(UDP)的协议与称为DHCP服务器的服务器通信。该服务器跟踪网络上的计算机及其IP地址。它将为您的计算机分配一个IP地址,并使用一个协议进行响应,使其知道要使用哪个IP地址。一旦您的计算机有了IP地址,它就可以与其他计算机通信。DNS当您通过浏览器访问网站时,您的计算机需要知道该网站的IP地址。域名系统协议(DomainNameSystemProtocol)提供了这个功能。然后计算机检查与域名关联的DNS服务器并返回正确的IP地址。IMAP您的设备需要下载邮件或管理存储在服务器邮箱中的邮件,互联网消息访问协议(InternetMessageAccessProtocol)提供了此功能。SMTP简单邮件传输协议(SimpleMailTransferProtocol)用于发送邮件。该协议使邮件客户端能够通过SMTP服务器发送提交的邮件。SMTP也可以用来接收邮件,但是IMAP用的比较多。POP邮局协议(PostOfficeProtocol)是一个老版本的邮件客户端下载邮件的协议。POP和IMAP的区别在于,一旦邮件在本地设备上下载成功,POP会立即删除服务器上的邮件。尽管该协议不再常用,但开发人员将使用POP进行自动邮件服务,因为它比IMAP更直接。FTP如何实现本地计算机与服务器之间的文件传输?文件传输协议(FileTransferProtocol)可以列出、发送、接收和删除服务器上的文件。这需要在服务器上运行的FTP服务器和本地的FTP客户端。SSH如何远程登录并与服务器交互?这可以使用安全Shell协议来完成。使用SSH客户端连接到服务器上的SSH服务器,对远程计算机进行操作。所有通过SSH发送的数据都是加密的,传输的数据不能被第三方理解。SFTPSSHFileTransferProtocol/FileTransferProtocolforSecureShell用于通过SSH协议传输文件,保证了传输的安全性。大多数FTP客户端都支持SFTP协议。HTMLCSSJavaScriptHTML网页结构CSS网页样式JavaScript网页动态交互访问和修改文档,使JavaScript能够操作HTML元素。DOM是一种树状结构模型,作为JS对象存储在浏览器的内存中。浏览器为每个下载的网页生成一个DOM。编辑本地网页的DOM不会影响存储在服务器上的文档。开发者工具每个浏览器都内置了开发者工具,几个常用的功能:Console控制台:可以运行JavaScript代码,可以给出日志和错误信息Sourcesresources:显示当前网页的所有内容NetworkNetwork:显示HTTP的时间线requestsandresponsesPerformancePerformance:测试网页的性能MemoryStorage:显示使用存储资源最多的代码段Elements:可以看到HTML和CSS代码框架和库Frameworksandlibraries关键问题的封装让开发更快。框架和库可以是开源的或专有的。这两个词有时可以互换使用。区别在于库是解决特定问题的可重用代码。另一方面,框架为开发人员提供了构建的结构。一个应用程序通常使用一个框架,而一个框架通常使用多个库。使用框架的应用程序也可以使用其他库。框架比库更固执己见,自由度也更低。框架-应用-库流程:框架调用应用,应用调用库,框架包含库。框架和库在使用前需要先导入,否则应用会报错,所以也叫“依赖”。框架的优点:节省时间结构化最佳实践框架的缺点:结构限制兼容库的优点:可以用更好的库替换ApplicationProgrammingInterface)是一种服务,应用程序,接口,它以简单的语法提供高级功能。API是一组函数和序列,用于访问操作系统、应用程序或服务的特征或数据。API通常充当组件和应用程序之间的桥梁。所以API也被称为网关(Gateway)或中间件(Middleware)。对于web开发,常见的API有:浏览器API或WebAPI:内置于浏览器中,扩展了浏览器的功能,常见的有:DOMAPI:将HTML文档流转换成树状的JavaScript对象。GeolocationAPIGeolocationAPI:获取浏览器当前位置坐标FetchAPI:获取数据CanvasAPI:制作Canvas图像HistoryAPI:保存历史数据WebStorageAPI:客户端存储RESTAPI或RestfulAPI:为Web和移动应用程序提供数据。REST是一组用于构建高效API的原则。这种类型的API通常用于从数据库发送和获取数据。基于传感器的API:对于IOT应用程序,传感器使用API相互通信,并可以跟踪和响应物理数据。APIWeb服务器提供获取数据库数据的能力,包括GET、POST、PUT和DELETE方法。这些API使用端点来指示如何访问不同的资源。断点包含在URL中,一旦激活断点,API将生成响应。常见的两种反应是:一个完整??的网页JavaScriptObjectNotation(JSON)IDEIDE(集成开发环境/IntegratedDevelopmentEnvironment)类似于文本编辑器,可以编写代码。IDE通常支持多种编程语言。IDE通常具有扩展、语法高亮、自动完成、错误提示、协作、重构等功能。依赖关系和包管理器框架和库有时称为依赖关系。依赖关系可以形成一个树结构,称为依赖树。包管理器用于自动下载安装依赖,也可以发布自己的包。包管理器确保您拥有与团队中其他人使用的相同版本的依赖项。最常用的包管理器是NPM(节点包管理器)。Bundler打包器将所有的依赖打包到一个文件中,也可以将过大的依赖拆分成多个包。常用的打包工具有Gulp和Webpack。