百度IFE前端学院-DAY1-Web开发概览
以下内容主要来自知乎https://www.zhihu.com/question/22689579 用户@张秋怡 的回答:
## 1. 网站访问过程:
本地发送请求 --> 网站服务器接收请求 --> 从数据库中查询数据(html页面,用户信息等) --> 服务器接收数据,返回给浏览器 --> 浏览器解析渲染html文件
## 2. HTML, CSS, 与JavaScript
HTML是标记语言,主要用来标注文件结构。CSS则是用来修改和美化页面格式。Javascript可以添加动态效果,向服务器发送请求,不用刷新界面便能实现与服务器的交互(也就是AJAX,异步的JavaScript和XML)。
## 3. HTTP协议
规定了浏览器和服务器之间请求和响应的通用写法。HTTP响应大概包括head和body,head里包括状态码(如200 OK,404 NOT FOUND等)、Content-Type(文本?动画?音频?...)、Content-Encoding等。body则一般是需要览器渲染的html文件。
## 4. Web Server
客户端与服务器的交互的主体、客体、载体是五花八门的
- 有时候不是传生成好的 HTML 或者其他服务器上已经有的文件,而是传输经过一定逻辑处理后生成的字符串或者其他各种封装好的数据
要让这些形形色色的机器能够通过网络进行交互,我们就需要指明一种协议(比如 HTTP/HTTPS)和一种数据封装格式(比如 HTML/XML),Web Server 提供的 Web Service,指的就是这种协议+格式的交流体系。不过 Web Service 的生态系统和 HTML 的标准不一样,用户可以选择的协议和数据封装格式更多,普通的网站访问用的 HTTP + HTML 只是其中一种,一些封闭系统内的交流还可以自己定义一个协议和格式来用(比如 QQ)。
除了提供 Web Service, Web Server 还会兼顾很多功能,包括提供缓存,平衡负载,这样在访问量比较大的时候能有有条不紊地接客。常见的现成的 Web Server 有开源的 Apache、Nginx和微软的IIS,你也可以用一些工具(比如 Node.js )自己定制一个。因为 Web Server 需要比较好的性能,所以投产时用的 Web Server 通常是C/C++/Java写的
## 5. 服务器脚本
服务器这边也有代码,就是服务器脚本,不仅可以用来接收请求发送文件,还可以处理上传过来的文件,根据不同请求操作服务器本地的文件或数据库等。
> PHP 就是一种常见的用来写服务器脚本的语言,其实只要是能拿来写大家传输数据的通用接口(CGI)的语言都可以用来写服务器脚本(也就是说几乎所有编程语言都可以写)
> 为了方便,我们在写服务器脚本的时候,通常还会用个同语言写的 Web Framework 来处理各种细节
## 6. 服务器端语言
早年常见的服务器端语言有:
- 开源的 PHP
- Sun 公司的 JSP 中使用的 Java
- 微软的 ASP 中使用的 VBScript
现在在这方面的应用热起来的语言有:
- Python,对应常见的 Framework 包括知乎和Quora有用到的 Tornado(其实是自带 Framework 的 Web Server),社区很成熟的 Django (用户包括 Instagram、Pinterest)等
- Ruby,一般都用 Rails 这个 Framework,用户包括 Github、早期的 Twitter 等
- 逆天的 JavaScript,有了 Node.js 这个平台,Web Server、服务器脚本和浏览器脚本全都可以用JavaScript 来写……Node.js上最常用的 Framework是Express
- 微软家的则跟着 ASP.NET 转移到了C# 或者 Visual BasicErlang,擅长大规模的并发,不少游戏公司拿来写服务器,靠几十个工程师支撑几亿用户的WhatsApp也是用的这个~
几种常见的架构包括:
- LAMP = Linux + Apache + MySQL + PHP(P还可能是Python或Perl。有时候L会改成W=Windows。),也就是服务器上的操作系统是 Linux,Web Server 用 Apache,数据库用 MySQL,服务器脚本用 PHP,这些都是开源技术,网站起步时用起来的成本会比较低,所以是普通网站里非常常见的架构(虽然对于发展得很大的网站会遇到很多瓶颈),Facebook就是这种,淘宝也曾经是。
- J2EE,Java 世界的架构,通常是企业用的(银行、大型公司,.etc),比较常见地还会搭配一种 UNIX 做操作系统,Apache 做 Web Server,Tomcat 转换 JSP 到 Java 给服务器程序用(其实它也自带 Web Server),Oracle 数据库等等。不一定拿来建站,常常用来提供企业里的各种需要用到网络的业务。我们学校教务系统就是用J2EE做的=。= 淘宝现在也是从LAMP转型到了这个。
- ASP.NET,微软家的架构,通常会搭配 Windows Server 操作系统,SQL Server 数据库,IIS 做 Web Server。StackOverflow和京东(曾经)就是这个架构。
- 神奇的MEAN架构,MongoDB做数据库,Express做 Web Framework,Angular 做前端的 JavaScript 框架,Node.js 用于编写 Web Server。神奇之处在于这几个东西的语言都是 JavaScript (MongoDB的实现不是,但与外界沟通用的语言是)。因为是比较新的架构,还有待时间的考验,不过被很多人(尤其是靠 JavaScript 吃饭的前端程序猿们)热切关注。
- 一般来说重点不在技术而且在乎成本的新网站比较喜欢用 LAMP,重视安全稳定和速度的企业和机构喜欢 J2EE,想省事的网站喜欢ASP.NET,比较 Geek 的网站和创业公司喜欢折腾各种 Python、Ruby、Node.js世界的东西,Google 这样现成的技术都解决不了需求的超大型网站就自己折腾解决方案。
百度IFE前端学院-DAY1-Web开发概览相关推荐
- 前端VS后端Web开发
前端VS后端-Web开发 介绍 前端开发 后端开发 如果您是一名开发人员,则只是学习编码而希望专注于Web开发,但对走上哪条道路感到困惑.是前端Web还是后端Web开发,或者您是否已经开始了自己的旅程 ...
- 前端入门 前端自学路线 web开发前端如何学习
本文介绍前端入门之路,以及之后对前端应该怎么学,大概学哪些东西.作者在前端.后端入门的时候,花了大量时间到CSDN.知乎.百度上去找资料,但是有的说的不是太复杂, 就是一句话带过,那个时候很苦恼.现在 ...
- 前端之移动web开发(下)
前言 这次想要分享的是后面几个比较重要的部分,包括rem适配方案.响应式开发和Bootstrap前端开发框架. 一.rem适配方案 1.我们适配的目标是什么? 让一些不能等比自适应的元素,达到当设备尺 ...
- 个人关于web开发浅尝辄止,web开发概览
学了这么久也该总结总结了!从一无所知到小白,到自主学习,再到跟着别人走.走了不少弯路, 希望这次总结能帮到自己和别人. 看了这么久的文章,尽然没有介绍web开发系统流程的文章,各个阶段该学什么,什么地 ...
- web后端开发需要会前端吗_前端和后端Web开发之间的区别
web后端开发需要会前端吗 In this post I want to help you conceptually make the move from frontend to backend, i ...
- web前端angular_针对Web开发人员的十大Angular课程,教程和书籍
web前端angular 大家好,如果您有兴趣学习Angular框架 (一种最流行JavaScript框架之一,用于开发基于组件的Web GUI并寻找一些很棒的资源,如课程,教程和书籍),那么您来对地 ...
- 前端移动端web开发(一)
一.前端开发 1.前端开发分类: PC端开发:页面主要运行在PC端浏览器中 移动端开发:页面主要运行在手机上 移动web开发 在移动端表现良好的页面,如新浪网 混合式开发(Hybrid App) 也叫 ...
- Web前端:面向Web开发人员的顶级JavaScript开发工具和IDE
JavaScript是最流行的编程语言并且受到所有浏览器的支持,增强了用户与网页的交互.也就是说,许多JavaScript IDEs现在提供智能课程完成和实时消除错误. 这些有效的工具带有精确的语 ...
- 前端之移动web开发学习
移动端浏览器的现状 移动端的浏览器基本上是由webkit发展而来的,所以只需要采用处理webkit浏览器的方法即可,也就是说移动端的没有pc那么多的兼容性问题. 手机屏幕现状 做为开发人员来说,对于分 ...
最新文章
- 【MATLAB】雅可比矩阵jacobi matrix
- 我的北大故事:犯其至难图其至远!
- 十一课堂|通过小游戏学习Ethereum DApps编程(3)
- iOS中关于NSTimer使用知多少
- jedis操作set_Java中使用Jedis操作Redis的示例代码
- Java基础巩固之线程学习
- 解决第一个div浮动,后面div覆盖的问题
- 深度 | 一条查询SQL的前世今生 —— ClickHouse 源码阅读
- P2839-[国家集训队]middle【主席树,二分】
- 12.Cross-Validation
- JavaScript基础学习--数据类型
- C++11 并发指南五(std::condition_variable 详解)
- Python面向对象中的self到底是什么?
- [转]static和final的区别
- MLP 又又又升级了!港大商汤开源首个用于检测与分割任务的MLP架构
- ckeditor 部分保存按钮去除_怎样去除mp4视频中的水印呢
- python脚本(比较两个Excel表格的不同并标记)
- 利用setInterval()方法实现在页面上显示实时时间
- android studio如何连接夜神模拟器
- 2019 面试实战 - 第二回合