1 说明


Flask和传统前端开发不太一样的地方是使用了模板(Jinja)大大减少了重复的代码工作量,提高了复用性。
但是前后端涉及的内容太多,需要多人协同,那么就可能不是用Jinja来开发前端页面了。
本文主要讨论前后端交互的一些规范,使得不同的前端方式用同样的(或者可预见的)方式向后端请求服务。

2 先说Jinja方式


这里就不展开说Jinja的使用了,简单来说,Jinja提供了一种可以继承和复用的模板方式,从而可以生成文本。Html只是其中一种特殊的文本。
对于前端来说,要展示一个页面有几个元素:H5元素、CSS、JS、静态文件。在Flask基础之下:

  • 1、H5元素放在./templates 之下
  • 2、CSS、JS、静态文件均放在./static之下

规范1:从存储角度的规范,开发者要把依赖的文件分别保存到static和templates

文件

地址

CSS、JS和静态文件

./static/developer/yourname

H5 模板元素

./templates/developer/yourname

后端为前端提供了路由(跳转),以及数据交互的功能。后端给前端提供的是视图函数表,以及参数说明。

蓝图

视图函数

功能

请求方式

参数格式

blueprint_name

view1_developer_yourname

功能1

GET

None

blueprint_name

view2_developer_yourname

功能2

GET,POST

Form, JSON(Ajax) - 详细字段另给

如果从后端发起需求,就是把视图函数表给到前端,指明后端接受的请求方式,声明会输出给前端的模板字段。对于有参数的视图函数:

蓝图

视图函数

功能

参数个数

参数序号

参数名称

参数说明

例子

blueprint_name

view1_developer_yourname

功能1

3

1

form_name

字符变量

‘myform’

blueprint_name

view1_developer_yourname

功能1

3

2

a_list

数据表的表头

[‘a’,‘b’,‘c’]

blueprint_name

view1_developer_yourname

功能1

3

3

a_dict

字典

{‘a’:1, ‘b’:1}

规范2: 如果是后端发起的请求,后端向前端发送其视图函数的方式和内容;前端发起的话就由前端询问到蓝图名称后发起。

如果是从前端发起需求,同样给到这样一个表格。

从交互方式上,前端和后端存在几种请求方式:

  1. 请求并跳转(GET)。
  2. 请求并跳转(POST)。
  3. 请求不跳转(Ajax)。

3 再说普通方式


Jinja(模板)方式是创造具有通用性的模板,里面的内容可以进行参数化(甚至循环),这样就可以通过参数按需生成各种实际的脚本,的确很方便。
但是如果与其他人协同,要求对方也理解并使用Jinja就有点无理。
因此不必要求对方也使用jinja,从省事的角度来说,你给我静态文件更容易(省却了传入jinja变量)。

普通方式的改动很简单,把蓝图直接用绝对地址来替换就可以了,例如bluename用 /appxxx来替代。