作为前端应该了解的后端常识

news2024/11/23 7:58:51

1、前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

什么是服务端

  • 服务端,又称后端、server 端
  • 前端是用户可见、可操作的部分,如树枝树叶
  • 服务端为前端提供 “支撑”和 “营养”,如树根

什么是前端

  • 狭义:网页
  • 广义:各种客户端,如 App、PC 客户端等

服务端的职责

  • 提供前端要展示的数据
  • 接收前端要提交的数据
  • 存储数据(软件公司非常看重数据,会收集各种数据)

服务端的表现形式

  • 前端 ajax 要调用某个接口,比如使用 get 请求获取数据,post 请求提交数据
  • 这个接口,就是服务端提供的

前后端交互通讯-HTTP协议

  • 超文本传输协议 Hyper Text Transfer Protocol
  • 规定了客户端和服务端如何通讯
  • 是互联网世界数据通讯的标准和基石

HTTP - 通用

  • url:后端接口的地址,即前端 Ajax 请求时的地址
  • method:请求方法,如 GET POST PUT DELETE 等
  • 状态码:接口返回的状态,如 200 302 404 500 等

HTTP - Request

  • Request:请求,前端发送给服务端
    • Request Body:请求是发送给后端的数据
    • Request Content-type:发送数据的格式,如 JSON 格式
    • ...

HTTP - Response

  • Response:返回/响应,服务端返回给前端
    • Response Body:后端返回给前端的数据
    • Response Content-type:返回数据的格式,如 JSON 格式

演示一个 Get 请求


演示一个 POST 请求


一个网页可能对应多个服务端

一个网页需要加载的资源可能有

  • html
  • css
  • js
  • 图片
  • 音视频
  • 业务数据

不同资源可能来自不同的域名

  • html 可能来自一个单独的域名
  • js css 可能来自一个独立的域名
  • 数据可能来自一个独立的域名
  • 不同域名可对应不同服务端

服务端主要也可分为做静态服务(处理html css js 图片等)和数据服务(提供数据接口)


服务端如何处理并返回数据

  • 定义前端请求的 url 规则 - 路由(前端 Ajax 请求需要 url)
  • Request 获取数据,用 Response 返回数据
    • 也可简称为 req 和 res
    • 通过 Request 可获取:method url body
    • 通过 Response:可设置:状态码,Content-type,body
  • 读取和存储数据 - 数据库
    • 数据库,专职做数据的存储和查询
    • 数据库是一个独立的系统,不是 nodejs 专属的
    • 基本操作:查询、新增、删除、修改、排序等都需要查询条件


路由(Router)是什么

  • 服务端的入口规则
  • 需要和前端约定
  • 就像古代的城门,城门有特定的入口进入,每个入口有特定的功能
  • 后端定义 GET /api/list 路由 => 前端 axios.get( /api/list' )
  • 后端定义 POST /api/create 路由 => 前端 axios.post( '/api/creaate' , {..)
  • 路由定义了发送的规则,url 则是具体发送的形式

路由包含什么

  • 定义 method, 如 GET/POST 等
  • 定义 url 规则,如 /api/list 和 /api/create
  • 定义输入(Request body)和输出(Response body)格式

配置 Nodejs 环境

进入 Node 官网安装:

安装完成后使用以下命令查看是否安装完成:

  • node -v
  • npm -v

继续安装 nrm 管理包源:

  • npm i nrm -g
  • nrm ls
  • nrm use taobao

使用 nvm 管理 nodejs 多版本

  • Mac OS,使用 brew install nvm
  • windows , github 中搜索 nvm-windows,有下载地址

使用 nvm

  • nvm list 查看当前所有的 node 版本
  • nvm install v16.10.0 安装指定的版本
  • nvm use —delete-prefix 16.10.0 切换到指定的版本

Nodejs 和 Javascript 的区别

Javascript

  • 使用 ECMAScript 语法规范,外加 Web API(DOM 操作,BOM 操作,Ajax), 缺一不可

  • 两者结合,即可完成浏览器端的任何操作

  • ECMAScript 定义了语法(变量定义、循环、判断、函数、原型和原型链、作用域和闭包、异步等),写 javascript 和 nodejs 都必须遭守

Nodejs

  • 使用 ECMAScript 语法规范,外加 nodejs API,缺一不可
  • 处理 http,处理文件等,具体参考:nodejs.cn/api-v16/
  • 两者结合,即可完成 server 端的任何操作

CommonJs

  • 在 Nodejs 环境中,默认就支持模块系统,该模块系统遵循 CommonJS 规范
  • 在 Nodejs 中一个 js 文件就是一个模块
// index.js
function add(a, b) {
  return a + b;
}

function minus(a, b) {
  return a - b;
}

// 导出单个
module.exports = add;
// 在别的文件引入
// const add = require("index.js");

// 导出多个
module.exports = {
  add,
  minus
};
// 在别的文件引入
// const { add, minus } = require("index.js");

// 直接引入npm包
// const _ = require("lodash");

调试

  1. 使用 vscode 自带的断点调试
  2. package.json 加入 --inspect=9229 参数后启动程序,输入网址:chrome://inspect,选择其中对应程序 debugger 即可

后端开发和前端开发的区别

服务稳定性

  • server 端可能会遭受各种恶意攻击和误操作

  • 单个客户端可以意外挂掉,但是服务端不能

考虑 CPU 和内存(优化、扩展)

  • 客户端独占一个浏览器,内存和 CPU 都不是问题
  • server 端要承载很多请求,CPU 和内存都是稀缺资源

日志记录

  • 前端也会参与写日志,但只是日志的发起方,不关心后续
  • server 端要记录日志、存储日志、分析日志,前端不关心

安全

  • server 端要随时准备接收各种恶意攻击,前端则少很多
  • 如:越权操作,数据库攻击等

集群和服务拆分

  • 产品发展速度快,流量可能会迅速增加
  • 如何通过扩展机器和服务拆分来承载大流量?

1、前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

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

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

相关文章

Ubuntu22.04 locale出错

问题: locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory 解决参考&#xff…

下载Google113版本无更新组件,禁止更新

自动化测试下载谷歌驱动需要与浏览器版本一致,需要设置google浏览器禁止自动更新,这样google就可以不再自动更新了,目的是防止浏览器更新后,那么浏览器驱动也需要同时更新,这样在工作中会十分麻烦。 因此这里提供无更…

day45-SpringMVC

0目录 SpringMVC 1.2.3 1.SpringMVC 1.1 引入依赖&#xff1a; <!--SpringMVC的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0&…

如何在 docker hub 分享自己的镜像?看完不踩坑

前言&#xff1a;前几天vip课讲了如何创建配置jenkins容器&#xff0c;怕大家踩坑&#xff0c;我提前打好了jenkins镜像&#xff0c;直接让大家通过命令去拉取镜像就可以了。 然而&#xff0c;很多好学的同学来问这个是怎么操作的。今天就来聊一聊&#xff0c;怎么将自己打好的…

centos 8安装A10显卡驱动-AI人工智能

centos 8安装A10显卡驱动命令:./NVIDIA-Linux-x86_64-535.54.03.run --kernel-source-path/usr/src/kernels/4.18.0-147.el8.x86_64 安装完毕; 测试: 检查驱动版本号: nvidia-smi 验证驱动模块已加载: lsmod | grep nvidia

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

CMIP6数据处理及在气候变化、水文、生态等领域技术教程

详情点击链接&#xff1a;最新CMIP6数据处理及在气候变化、水文、生态等领域技术教程 一&#xff0c;CMIP6中的模式比较计划 1.1 GCM 全球气候模型&#xff08;Global Climate Model, GCM&#xff09;&#xff0c;也被称为全球环流模型或全球大气模型&#xff0c;是一种用于…

vue项目中为高德地图信息窗体添加点击事件踩坑

这里遇到了一个坑&#xff0c;在给信息窗体中的内容添加点击事件时&#xff0c;信息窗体弹出的时候点击事件自动执行了。在此记录一下踩坑和解决过程。 部分代码如下&#xff1a; this.map.on(click, e > {const item {val: 1234,name: zhang}const content <li οnc…

快解析内网穿透帮我实现零成本自建网站

我是一名 90后&#xff0c;大概就是大家嘴里“别人家的孩子”&#xff0c;大学学的是IT专业&#xff0c;毕业后结婚、生子一切按部就班 。随波逐流工作了几年&#xff0c;父母年龄变大&#xff0c;培养孩子投入也增加&#xff0c;逐渐开销变大&#xff0c;可是我的薪资还处于中…

【设计模式】详解观察者模式

文章目录 1、简介2、观察者模式简单实现抽象主题&#xff08;Subject&#xff09;具体主题&#xff08;ConcreteSubject&#xff09;抽象观察者&#xff08;Observer&#xff09;具体观察者&#xff08;ConcrereObserver&#xff09;测试&#xff1a; 观察者设计模式优缺点观察…

使用serverless实现从oss下载文件并压缩

公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱), 然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问…

springboot解决跨域

跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。但这个保护机制也带来了新的问题&#xff0c;它的问题是给不同站点之间的正常调用&…

“单片机定时器:灵活计时与创新功能的关键“

学会定时器的使用对单片机来说非常重要&#xff0c;因为它可以帮助实现各种时序电路。时序电路在工业和家用电器的控制中有广泛的应用。 举个例子&#xff0c;我们可以利用单片机实现一个具有按钮控制的楼道灯开关。当按钮按下一次后&#xff0c;灯会亮起并持续3分钟&#xff…

Android 中 app freezer 原理详解(一):R 版本

基于版本&#xff1a;Android R 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理&#xff0c;为什么叫这个名字&#xff0c;而不…

第五章:linux进程控制

系列文章目录 文章目录 系列文章目录前言进程创建fork函数初识fork写时拷贝fork常规用法fork调用失败的原因 进程终止进程退出场景进程的退出码系统自带的退出码strerrorC语言提供的退出码 进程退出深度理解进程常见退出方法正常退出缓冲区 进程等待进程等待必要性进程等待的方…

SAP中获取成品物料的全部配置(SAP配置BOM攻略四)

基于系统内的全配置BOM设定&#xff0c;全部的子配置是由四大配置产生&#xff08;即车身颜色、内饰颜色、车型、选装&#xff09;。如果按某一车型&#xff0c;要带出该车的全部BOM子物料&#xff0c;首先需要具备通过四大配置&#xff0c;得到全部子配置的能力&#xff0c;然…

【iVX】在百花齐放的低代码平台中独领风骚

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

IntelliJ IDEA 2023.2 新版本,拥抱 AI

IntelliJ IDEA 近期连续发布多个EAP版本&#xff0c;官方在对用户体验不断优化的同时&#xff0c;也新增了一些不错的功能&#xff0c;尤其是人工智能助手补充&#xff0c;AI Assistant&#xff0c;相信在后续IDEA使用中&#xff0c;会对开发者工作效率带来不错的提升。 以下是…

mybatisPlus入门篇

文章目录 初窥门径1.1 初识MybatisPlus1.2 MybatisPlus的特性1.3 MybatisPlus的架构模型 入门案例2.1 准备相关开发环境2.2 搭建springboot工程2.3 创建数据库2.4 引入相关依赖2.5 创建实体类2.6 集成MybatisPlus2.7 单元测试2.8 springboot日志优化 初窥门径 1.1 初识Mybatis…

Rust之包、单元包及模块

包&#xff1a;一个用于构建、测试并分享单元包的Cargo功能&#xff1b;单元包&#xff1a;一个用于生成库或可执行文件的树形模块结构&#xff1b;模块及use关键字&#xff1a;被用于控制文件结构、作用域及路径的私有性&#xff1b;路径&#xff1a;一种用于命名条目的方法&a…