服务端编程(五)——AJAX

前言´・ᴗ・`

  • 本节我们聊聊AJAX 顺便深化动态网页的局部内容加载的流程
  • 本节可以帮您学习到…
    • 动态网页更新局部内容content 的时候流程是怎么样的
    • AJAX的概念 优点 以及为什么
    • web框架如何简化了我们的后端开发?

AJAX 以及动态网站如何更新content

这里我们深化一下上节提到的动态网站 然后讲述AJAX。

上节说到的过程仅仅是我们打开动态网页 加载的流程,如果我点击一个按钮(比如我做了个NBA比赛结果统计的网站,我想查询春季赛表现最好的球队信息),网页动态更新,那么流程又是怎么个样子呢?

  • 我们仅仅是查看信息而并非上传、更改信息,所以只需要GET方法 而且加上URL参数/best_spring
  • 如果是静态网页 web server可能就会在根目录找一个名为best_spring的htnl文件 然后通过HTTPserver传出去 仅此而已
  • 但是动态网页 web server只会把事情交给我们的application server,它其实只会根据我们编程的规则,找到对应的,能够执行这个任务的对象(函数对象也可能哟)
  • 对象执行其方法,比如然后到数据库查询 然后返回数据(比如是JSON 或者XML格式的)
  • web server将数据返回

可见 application server可能就返回一堆数据而已 连html 模板(template)都不沾
这就是网页动态更新局部内容的方法(update content)

而且 这种先进的套路还有个名字 —— AJAXAsynchronous Javascript And XML)

那么他说采用的一个技术叫做XMLHttpRequest 猜得出来 意思就是不需要返回静态的一整个HTML文件,而是返回数据 而且是XML格式的

  • 为啥说是Asynchronous 异步的 呢?
    为了装逼
    我们想象一下 我们要更新csdn首页几处小图片 代码当然是顺序的代码啦 比如:
update_picture_1()
update_picture_2()
update_picture_3()
......

如果是同步的话 我们会看到 图片是一个一个加载出来的,当前加载的图片会阻塞block你后面图片的加载
也就是每个部分的加载都是阻塞执行的 或者说被同步调用的 这样是不是效率很低啊?假设上百个内容,每个加载0.5s 你等50秒?

所以我们用异步 非阻塞的方式 各个部分的下载就是你行你上 互不干扰 大家都并行的加载
忘记异步知识的同学请移步:python 基础(二)阻塞 非阻塞 同步 异步
如果说仅仅只有这个异步高效的优点 你就低估了AJAX思想的威力了
事实上 他把大量的计算损耗(computational cost)都甩锅到我们浏览器上(你想想 只给你数据 数据放哪 格式是什么 还可能一些数据是通过另一些数据计算得来的 都让浏览器去干了)
每个client都这样甩锅 对服务器是善莫大焉啊:)

web框架 如何简化 服务端编程

我们之前提到,正是application server还有其内置的web application (web应用),让web服务器动态起来,让网站,动态起来。这个web 应用就是我们后端编程的内容。

当然了,如果从底层实现恐怕会非常坎坷,然而有web框架(Web frameworks),将会简化我们后端的编程(server-side web programming)

扫描二维码关注公众号,回复: 9064763 查看本文章

比如 我们第一段将AJAX时说道 我们处理URL参数是通过找相应的对象来处理的
那么怎么实现 URL参数 与 对象 之间的对应呢?框架会帮我们省事很多

# file: best/urls.py
#

from django.conf.urls import url

from . import views

urlpatterns = [
    # example: /best/
    url(r'^$', views.index),
    # example: /best/junior/
    url(r'^junior/$', views.junior),
]

这段python Django代码 就说明了 URL参数带\best 就会指定view对象的index() 函数去处理
同样 best/junior/ 会指定junior() 函数处理
url(r'^junior/$', views.junior), 这段正则表达式其实不用管 就是用来匹配字段“best”或者“best/junior”的

那么 我们调用数据库的操作呢?
同样 也有相应的封装 你调用函数就行啦

#best/views.py

from django.shortcuts import render

from .models import Team 


def junior(request):
    list_teams = Team.objects.filter(team_type__exact="junior")
    context = {'list': list_teams}
    return render(request, 'best/index.html', context)

这里filter函数输入筛选条件(还记得我MySQL专栏课程中WHERE后面跟着的东西么)
当然 这个函数底层实现是我们学习的MySQL语句

总结 ´◡`

本节 你讲进一步深化动态网站加载页面以及更新局部内容的过程 也大致了解框架对我们后端开发的好处
下一节 我们将看看具体的框架选择 作为后端开发的第一步
运用框架 能够做一些中小型的项目 但是开发便捷 没太多坑 适合我们初学 如果说真要从底层做起 那么java是跑不了啦
下一站 正在更新:)

服务端编程专栏 正在持续更新 敬请关注 感谢对阮菜鸡的支持:)
在这里插入图片描述

发布了34 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43178828/article/details/104247430
今日推荐