1、网站访问
2、HTML+css
电脑拿到一个HTML文件,接下来通过<link>,@import等加载过来css样式。先生成一个DOM树,再生成一个css样式的树。
浏览器会将这两个树进行结合,生成最终的渲染树,根据这个树把页面画出来。
3、XHTML与HTML5
网页之间需要建立一套标准,规定可以写什么标签种类,标签又可以设置哪些属性等等。
HTML5: 一个比较新的标准
XHTML: HTML与近亲xml杂交的品种,对语法要求严格,为了兼容XML,语法跟HTML有不同。
4、Web Server 与Web Service
①http协议
浏览器给服务器发请求,服务器进行响应,都需要一个通用写法(即需要一个协议)——http协议
e.g. 状态码200 OK ,卸载响应里,代表这个东西我有
状态码404 NOT Found ,代表服务器中没找到你要的东西
②http响应
由header + body 构成。
header中要说明type,及发过来文件的类型,是文本还是图片,还是视频
写header内容的工作是Web Server
body内容即为HTML文件内容,当服务器找到你要的页面之后直接拿来放在body中。
③Web Server
首先,Server,即有实体的
Web Server的最主要工作:提供Web Service
Service,即不是实体,是一种服务,一种协议+格式标准体系,用来与各种服务器之间进行交互。
客户端 与 服务器 的交互的主体,客体,载体五花八门,所以需要一种统一的service格式
·服务器可以使大型主机也可以使自己的小电脑,只要能跑相应的服务端程序就可以
·客户端可以是各种APP,可以运行在电脑,手机·····
·有的时候交互不仅仅是传已有的HTML文件,还需要经过一定逻辑处理之后生成的字符串、封装的数据
除了提供Web Service,Web Server还提供缓存,平衡负载等功能
常见的Web Server:Apache,Nginx,IIS (这些都是大公司做好的可以直接用它们的)
也可以用工具定制一个,例如node.js
由于Web Server需要较好的性能,所以一般还是用C/C++/JAVA更多一些
5、PHP,脚本服务器,Web FrameWork
现代服务器除了可以完成 “接请求——发文件” 这种最基本的工作以外,还可以处理用户上传的文件,并且接收用户的请求
对服务器里的文件进行操作。
所以—— 服务器端也需要有代码啦,这就是服务器脚本
其实之前讲的Web Server中的功能,也主要由服务器脚本程序来做
e.g. 同一个网站,用户登录前与登陆后,网页显示会有不同,例如会加载出用户头像啊,名称啊之类的绘制在页面上
这就是服务器脚本处理的结果
实际上,服务器脚本就是写了一个通用接口(CGI)程序,但是这种接口程序可以用各种各样的编程语言来实现,
PHP就是一种常见的用来写服务器脚本的语言。其他的还有ASP.NET,还有JSP
为了方便,在写服务器脚本的时候,还会一起连着写一个同语言的Web FrameWork 来处理细节,防御攻击,提供一些
跨站的接口之类的,Web FrameWork也有很多现成的可以直接拿来用,举例见后文“一些名词”。
6、一个完整的网站访问过程
下图是一个最基本的访问过程,实际上还会在这个流程中,各个部分中继续添加一些新的技术,具体见后文
7、一些名词
前端:HTML+css+JS (很固定)
后端:服务器脚本+Web FrameWork+数据库 (每种都有n多选择,可以任意搭配)
服务器脚本 | Web FramenWork | 数据库 |
Python | Quora / Tornado / Django | My SQL / MangoDB |
Ruby | Rails | |
Node.js | Express |
8、几种常见的后端搭配框架
① LAMP = Linux + Apache + MySQL + PHP (最常见最普通的搭配)
② J2EE = UNIX + Apache + Tomcat (将JSP转换成Java)+ Oracle(数据库,可选)
专供Java,企业级,稳定
③ASP.NET = Windows Server + SQL Server +IIS
全套都是微软开发的,省事儿,构件化,可以拖拽组件来创建web页面
④MEAN = Angular(前端的框架,具体见“框架”) + Node.js + Express + MongoDB
是一种新型的,特点,除了数据库MongoDB以外,其他所有都是用js写的
9、MVC框架
是一种设计理念,分为
Model:封装数据+数据处理方法
View:HTML展现
Controller:响应请求,协调Model与View
在普通的服务器脚本中加入框架,使各部分代码分工更加明确清晰
e.g. Ruby + Rails
Python + Django
前端框架:Angular/Backbone
10、Node.js
Node.js的出现,JavaScript开始拥有在服务端运行的能力