以传统php, jsp, 或python为代表的后端web开发,与现在前端工程化的框架如vue,angular等,有很大的不同。
vue/angular本质上是一种c/s模式。js在本地运行,且是中心点。从远端读取数据,并驱动数据在页面里呈现。
传统web是b/s模式。html(js)被称为模板,服务器读取数据,并自己填充到模板,然后往浏览器传输。js只是本地做一些交互或点缀。
两者不是不能混用,也没有明确的规定,但二者思维里还是有很大的差异。后端模式下html(js)就是模板,显示数据用。
还是以注册功能为例来说明。
后端模式b/s结构,点“注册”,form表单直接post, 后端处理post请求,取出对应的表单数据,校验,查重,看两次密码是否一致,如果出错,会把错误码写到模板带回。浏览器只管如何展示即可:
{%csrf_token%}
手机号:
{%if errors.mobile%}
{{ errors.mobile }}
{%endif%}
密码:
{%if errors.password%}
{{ errors.password }}
{%endif%}
再次输入:
{%if errors.repassword%}
{{ errors.repassword }}
{%endif%}
{%if err_msg%}
{{ err_msg }}
{%endif%}
后端会完成用户注册,登录并且写session并跳转。
而vue为代表的前端驱动模式这个过程是由javascript来驱动完成。
后端在校验后,只管返回状态,登录,token认证,路由等功能都需要前端自行完成。
vue在模板里的语法和django的模板语法有异曲同工之炒。vue在js里的逻辑和django view里的逻辑类似。只是对于后端而言,python更自由。本地终究没那么好维护。
但有些需要和用户交互的,用户触发的行为,这时候,python后端是接触不到了,除非post提交,然后整体返回。这里就是vue的用武之地。
前后端不分离的web场景下,使用jquery dom驱动是个好的选择。
因为后端的充当 vue逻辑的作用,用数据对模板进行填充。vue主要接管了数据,然后由自己通过对控件的绑定,数据数据进行填充。
vue绑定控件后,后端只能通过vue才能修改控件,比如文本框的值。一是没必要,二是对seo反而不好。后端已经完成大部分数据填充的前提下,如果有一些本地需要的交互,验证,通过jquery外挂的方式,代价也不大。主要是两种编程方式的取舍。
混用不是不可以,有代价,有难度。
领取专属 10元无门槛券
私享最新 技术干货