Web运行原理
Web过程原理图
HTML
-
HTML文件一般由
head
标签、body标签
组成,head
头标签一般表明文档结构的相关属性。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yVqIFtx3-1634872742916)(https://i.loli.net/2021/04/06/YXLKa7km48gQUV1.png)]
-
body
内容标签一般用来放网页的具体内容,其内还包括\<h\>
、\<p\>
、\<img\>
等众多内容标签组成。 -
HTML5还提供了对原生浏览器的支持。除此之外,HTML还有例如Canvas、WebGL这些图形API的支持,通过他们我们可以在浏览器中实现一些三维游戏。
CSS层叠样式表
-
使用样式选择器来指定css修饰的对象,然后通过css的固定属性来修饰相关的html元素的样式。例如字体的大小、字体、边框、字间距、行间距等,
-
在实际开发过程中,我们一般不需要自己写过多的css代码,我们一般选择现成的CSS框架,例如
Bootstrap
(实现移动端有好的相应布局)、Materialize
(实现统一的materialize
界面风格)、Pure
(轻量框架)。 -
除此之外,CSS还提供原生的补间动画支持,例如我们使用
animation
来定义使用动画的种类和时长、使用@keyframes
定义动画中所用到的所有关键帧。 -
CSS3
中加入了FLexBox
(弹性盒布局)原生实现导航栏等类似效果
Javascript (页面的脚本语言之一)
-
使用
DOM
树修改HTML
文档内容\ -
使用
Javascript
对鼠标键盘事件做出响应 -
请求远程服务器数据XHR
、
AJAX`(根据需要向服务器请求数据,根性页面数据) -
利用
Javascript
,通过WebSocket
、WebRTC
代替HTTP请求,用于实现更低时延的网络通信,一般用作即时聊天、在线游戏等 -
通过
WebGL
,实现在线的实时图像渲染
TypeScript (Javascript的一个超集)
-
为
Javascript
中的每个对象加入了可选的类型标注,可以在编译时做到类型的检查,减少程序错误[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZyvUXzr-1634872742935)(https://i.loli.net/2021/04/06/i76GLNrEmZIA8sb.png)]
NOde(服务端Javascript)
-
用处:
-
编写控制台程序
-
原生桌面应用
-
服务器程序
-
·····
-
-
npm
:可以使用npm
安装第三方库
React、Angular、Vue(前端框架)
-
界面元素组件化,提高代码复用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gyxYLZLM-1634872742939)(https://i.loli.net/2021/04/06/wVh2gdMJQjWS5ot.png)]
后端
-
后端主要是响应前端的请求,并向前端提供数据。
-
现代Web主要使用
API
(应用程序接口)通信 -
API:预先商定好的通信协议或者数据模式
- 通过
API
实现前后端逻辑的完全分离,同时android、ios可以复用API
API架构
-
REST架构:根据不同的HTTP请求类型对数据做对应的增删改查操作
-
GraphQL
架构:比REST
架构的灵活性和可扩展性高出很多,适合大型项目的API设计
数据库管理系统
- 需求:大规模的对数据进行并发的读取和修改,坚固数据的完整性和安全性.
数 据 库 { S Q L N o S Q L 数据库\begin{cases}SQL\\NoSQL \end{cases} 数据库{SQLNoSQL
-
SQL: 关系型数据库,能够使用结构化查询语言(SQL)对数据进行查询和修改
-
NoSQL:非关系型数据库,减少了许多强制性的检查,拥有更优的读写性能,对数据的格式要求更
加松散 -
入门选择:推荐
PostgreSQL
和MongoDB
-
使用示例
使用Javascript对MongoDB数据进行访问
DevOps(开发+运维)
- 主要工作内容:部署应用程序运行到最终的服务器并让所有人访问
MERN技术栈
分别是
- 数据库:MongoDB
- 后端服务器框架:Express
- 前端框架:Ract
- 服务器运行环境:Node
Web开发资源
- Web开发路线图:https://github.com/ccloli/developer-roadmap-zh-CN
- 现代Web开发魔法全书:https://github.com/dexteryy/spellbook-of-modern-webdev
- 成为Web全栈工程师:https://github.com/bmorelli25/Beome-A-Full-Stack-Web-Developer
- Awesome列表系列:https://github.com/sindresorhus/awesome