前端框架: angular、vue、react等等…. 到底是用来干啥的呢…

先说下以angular、backbone为代表的MV*框架和jquery的区别, 像我一直在使用jquery,用得好好的,为什么要用这种框架呢?

jQuery: 针对DOM操作、远程请求、数据处理等都做了封装。 使用它,并不会影响自己的代码结构,它只能算个库。

框架提供一套解决方案. 你得按照框架的规定来安排代码结构 他是随着前端功能的复杂/增强而产生的. 对于往应用方面发展的web产品就很有必要做前端框架这件事.

未来的发展趋势是 前后端只靠json数据进行通信. 后端只发送一段json到前端. 计算和渲染模板都在前端进行. 后台程序不再做模板的任何处理. 使用MV框架能有效的 简化开发流程. 便于维护管理.提升开发效率.

是否需要引入框架

对于页面型产品,处理交互更多,jquery也够用; 但如果是应用软件类产品,需要关注处理复杂模型,很有必要引入MV框架。

如今的互联网公司的产品基本都是web app,越来越像传统应用软件开发靠拢,使用个框架就还是很有必要的。

MVC

MVP

MVVM

框架是什么?

Web框架. 检录web应用的一种方式.

从简单的博客系统 到复杂的AJAX应用. web上每个页面都是通过写代码来生成的.

Web 工作原理

讨论框架之前. 必须先理解 Web是如何工作的: 也就是浏览器里输入一个URL 按下回车之后.浏览器为了显示这个页面都做了什么事情.

Web 服务器

每个页面 都是以HTML格式传送到你的浏览器中. HTML 是一种浏览器用来描述 页面内容和结构的语言. 那些负责发送HTML到浏览器的应用称为 Web服务器.

Web 应用如何知道发送什么到浏览器呢? 它会发送浏览器请求的任何东西.

HTTP

浏览器从 web服务器上 用 http 协议下载网站.

HTTP 协议模型: 请求-响应 (request-response) 客户端(你的浏览器) 从 Web服务器上请求数据. Web 服务器. 对你浏览器的请求进行响应.

重点: 通信总是由客户端(你的浏览器)发起的. 没有客户端的操作. web服务器是没有办法给你的浏览器发送数据的. 如果你从web 服务器上接收到数据.一定是因为你的浏览器发送了请求.

HTTP Methods

HTTP 协议中 每条报文都关联方法.(method / verb) 不同的http方法 对应客户端可以发送不同逻辑类型的请求.也代表了客户端的不同意图.

如: 请求一个web页面的html 与 提交一个表单 在逻辑上是不同的 所以这两种行为就需要使用不同的方法.

HTTP GET

GET 方法: 从服务器上 请求数据.

HTTP Post

除了简单的查看页面之外.我们还需要更多的交互操作.比如通过表单发送数据. 为了达到这样的目的 我们就需要使用不同类型的请求方法: Post Post 请求 通常携带由用户输入的数据. web服务器收到之后会产生一些行为. 比如你的登录信息.

个Get不同.Post 通常会导致应用状态的改变. 当表单Post之后. 一个新的账户被创建.
不同于get请求. post 请求不总是生成一个新的 html页面发送到客户端. 而是客户端 更具服务器返回的 响应码(response code)来判断客户端发起的操作是否成功.

HTTP Response Codes

响应码. 一般是服务器生成.返回给客户端的. 响应码: 一个三位数字的代号. 服务器在响应客户端的每个请求时 都发送这样一个代号.表面请求的结果

200: 我已经完成了你要求我做的事情,一切都正常” 204: (“No Content”)一切都正常,但是我不准备向你显示任何东西

web 应用

最简单的web应用:

让它一直监听 80 端口。 一旦它接收到等待的客户端发送的请求连接,然后它就会回复一些简单的 HTML。

import socket
HOST = ''
PORT = 80
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
connection, address = listen_socket.accept()
request = connection.recv(1024)
connection.sendall(b"""HTTP/1.1 200 OK
Content-type: text/html

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>""")
connection.close()

Web 服务器之殇

如果我们继续以上面的例子为基础建立 web 应用,我们还需要解决很多问题:

  1. 我们怎样检测请求的 URL 以及返回正确的页面?
  2. 除了简单的 GET 请求之外我们如何处理 POST 请求?
  3. 我们如何理解更高级的概念,如 session 和 cookie?
  4. 我们如何扩展程序以使其处理上千个并发连接? 就像你想的那样,没有人愿意每次建立一个 web 应用都要解决这些问题。正是这个原因,就有处理 HTTP 协议本身和有效解决上面问题的办法的包存在。然而,记住了,它们的核心功能和我们的例子是相同的:监听请求,带有一些 HTML 发回 HTTP 响应。

两大问题: 路由和模板

每个 web 框架都以某种方法来解决这些问题,也有很多不同的解决方案。 用例子来说明更容易理解,所以我将针对这些问题讨论 Django 和 Flask 的解决方案。 但是,首先我们还需要简单讨论一下 MVC 。

MVC

Model-View-Controller (模型-视图-控制器) 一种将应用的不同功能从逻辑上划分开. models 代表 数据库的资源 controls 包括应用的业务逻辑.对models进行操作, 为了动态生成html 需要 view 给出所有要动态生成页面的html信息.

路由: 处理请求 url 到负责生成相关html代码之间的 映射过程….

web框架

web框架的目的: 向程序员隐藏了处理http请求和响应相关的基础代码.

但是最后要记住的是,Python web 框架都以相同的方式工作的:它们接收 HTTP 请求,分派代码,产生 HTML,创建带有内容的 HTTP 响应。事实上,所有主流的服务器端框架都以这种方式工作的( JavaScript 框架除外)。