前端与后端的区别与联系

前端与后端的区别与联系

一、前端开发

运行在用户浏览器的一切代码,负责看和动

1.1 核心三件套

一般情况下前端是由三个东西组成,HTML、CSS、Javascript

  • HTML: 网页的骨架,定义标题、图片、段落等等结构;
  • CSS:给结构添加一些好看的外观,例如颜色、布局、动画,让这一切都变得很美;
  • JavaScript:这是网页的大脑,例如负责点击的响应,表单的验证、动态的获取数据等等;

1.2 更现代的工具

现在的话,前端开发人员都会选择使用框架,例如React、vue等,可以更加快速、方便的使用组件化的方式高效的构建复杂界面;对于也写交互数据的管理,大多数都会选择Redux或者pinia这种状态工具统一管理数据;

1.3 前端工程师职责

  • 将设计师给你的UI完全使用前端代码还原;
  • 完整响应式设计,使得各种设备都能有很好的体验;
  • 优化加载速度,提高页面的性能;
  • 调用后端工程师给你的API,并且将获取的数据渲染到页面上;

二、后端开发

运行在服务器上面的代码,负责处理业务逻辑、操作数据库、保障安全

2.1 后端运行环境

有很多很多的后端语言都能很好的担当后端的角色,例如PHP、Java、python、Ruby,但是只有Node.js让JavaScript也能在服务器上面运行了;

2.2 后端核心任务

  • 接受和响应请求:监听前端的HTTP请求,经过逻辑判断之后返回前端需要的数据(通常是JSON数据);
  • 业务逻辑处理:比如判断用户数据的用户名和密码是否正确;比如只有每日3-4点进行注册等等;
  • 数据库交互:对数据库的CRUD增删改查;常见的数据用有Mysql、MongoDB、PostgreSQL等;

2.3后端的其他任务

  • 身份验证与权限:例如使用JWT,Session来确定这个用户能不能看到某个页面;
  • 安全防护:需要放置SQL注入、XSS攻击、加密等等
  • 服务器架构优化:例如使用负载均衡、Redis缓存、消息队列等等

三、前后端如何一起工作的

前后端通过HTTP协议进行通信,通常使用RESTAPI风格。

  1. 前端发送请求
  1. 后端处理并响应
  • 一般情况下,会返回一个json格式的数据,这个数据就包含了公司新闻的一些数据
  1. 前端拿到JSON之后就可以更新界面了,把公司新闻渲染到页面上;

四、扩展:静态网站、静态网站以及API

4.1 静态网站

开发者将写好的HTML、CSS、JS、image等文件放到服务器中,用户请求那个页面,就直接发给他,所有人看到的页面都是一样的;这不需要任何的服务器程序,不需要数据库;

这里有个误区,新手可能觉得我使用了js做了一个动画,这个不就是一个动态的网页么?此动态非彼动态,我们再看看动态网站是什么样子的

4.2 动态网站

服务器上不仅仅有静态文件,还有后端代码的程序,例如Node.js。每当用户请求页面的时候,可能会查询数据库,然后将数据库中的数据结合HTML模板揉在一起,生成一个专属的页面,返回给浏览器;

4.3 API驱动

服务器不关系你HTML是什么样子的,服务器只提供数据接口;你请求这个接口的数据,我就返回给你json或者XML。前端完全由JavaScript接管,由js来调用这些数据,然后浏览器自己去拼装出界面;这通常我们叫做SPA单页应用

  • 所谓的前后端分离,就是基于API来驱动的,这时候完全可以将前端和后端完全分开;两个只需要约定好API文档可以了;
  • 页面不需要整体刷新,和原生的APP流畅度差不多;
  • 一个后端做出来之后,可以同时给WEB、APP、小程序同时提供数据;
相关推荐
EnCi Zheng2 小时前
M5-markconv自定义CSS样式指南 [特殊字符]
前端·css·python
kyriewen2 小时前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
广州华水科技2 小时前
北斗GNSS变形监测在大坝安全监测中的应用与优势分析
前端
前端老石人2 小时前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
CAE虚拟与现实2 小时前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
Sarvartha2 小时前
三目运算符
linux·服务器·前端
晓晨的博客2 小时前
ROS1录制的bag包转换为ROS2格式
前端·chrome
Wect2 小时前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·typescript
donecoding3 小时前
别再让 pnpm 跟着 nvm 跑了!独立安装终极指南
前端·node.js·前端工程化