我不是Python开发人员,但我从头实现了几个Web服务器,我认为我可以帮助你。
服务器渲染与客户端渲染
在Web开发中,有两种向最终用户提供内容的方法,称为服务器渲染和客户端渲染。
服务器端渲染(SSR) - 传统的渲染方法,基本上您页面的所有资源都存储在服务器上。然后,当请求页面时(通常来自Web浏览器),将下载HTML、JS和CSS。此外,框架可以根据后端逻辑动态创建HTML,并最终下载它。此时,许多框架为快速创建具有“惊人”功能的应用程序提供了奇迹。
技术:Java、C#、Python、Node.js等
客户端渲染(CSR) - 有时称为“前端渲染”,是一种较新的渲染方法,这依赖于通过JavaScript框架在客户端(浏览器)执行的JS。因此,当请求页面时,将下载最小的、少量的或空的index.html、CSS和JS。在这里,JavaScript负责发送或接收数据并更新页面的最小部分而无需刷新整个页面。最后,当用户单击或触发某些事件时,JavaScript将使用异步调用(ajax)通常将数据发送或接收到API Rest(JSON)。
技术:React、Angular、Vue、Aurelia、jQuery、纯JavaScript等
Django是服务器渲染框架
正如您可以看到这些文章:Simplest CRUD example 和 Hello World app,您需要Python(服务器语言)来在Django中进行开发。Django内部创建您的HTML页面并将其呈现给您的用户。
React(Angular、Vue等)是客户端渲染框架
想象一下OMS提供的API。此API为我们提供了一个端点,以按国家获取COVID统计信息:
假设您是 Z 代,不了解Java、Python、C# 等古老的编程语言,您需要开发一个简单的仪表板,展示首批感染病毒的国家的COVID数据统计信息。
您的网站将具有视觉上酷炫的效果:首页加载空框,并逐一显示前十个国家的统计数据。
为了实现这个效果, 您将使用 React 渲染一个带有空框的主页,并会触发多个对API的请求:
- (中国)
https://oms.api/covid/stats/country/ch
- (美国)
https://oms.api/covid/stats/country/eu
- (意大利)
https://oms.api/covid/stats/country/it
您的主页仍在工作中,用户正在浏览、滚动页面,在几秒钟后,框里填充有统计信息。
因此,我们可以说您的Web 执行了异步调用,允许Web页面部分动态加载...等等,这就是 AJAX :D
异步视图:带 ASGI 的 Python 异步代码
对于 Python Web 框架来说,一个新挑战是适应异步模型的潜在优势。
如果您在 ASGI 下运行,则 Django 支持编写异步("async")视图以及完全支持异步请求堆栈。
ASGI 规范是一个迭代但基本的重新设计,提供了异步服务器/应用程序接口,并支持 HTTP、HTTP/2 和 WebSockets。
正如您可以在以下链接中看到的那样,“异步视图”不是带有 AJAX 的 HTML 页面,而是使用 ASGI, 可以说这是 Django 尝试以 Python 异步方式开发但在服务器端执行的一种方法。
结论
异步视图不是带有ajax的html页面,只是在服务器上以异步方式运行的Python代码。
你的问题
- 异步视图与AJAX有什么区别?
- 异步视图是Python(服务器)中的代码,而ajax是浏览器中的代码。确实,异步视图和Ajax没有关联。
- Django中的异步视图也会做同样的事情吗?
- 是的,异步视图是一种异步代码,但不是像react、angular等客户端那样在客户端进行。
- 如果异步Django无法完全替代AJAX,学习它是否值得?
- 这取决于你的目标。目前,Web开发人员的工作(请查看本页面的远程工作部分-->)需要具备异步技能,但是要求在客户端使用,如React、Angular、Vue等。Java、Python和其他强大的语言正在用于后端需求。
- 这对Channels意味着什么?
- 根据你的段落,通道可以用于API和Web,但采用服务器策略(Python)。
- 异步Django能否替代Channels?
- 我认为不行。也许Channels正在使用或将使用类似异步视图的异步技术。