Django作为一个后端框架,其主要目的是将JSON格式的数据返回给前端开发人员。那么为什么我们需要模板来用Django渲染HTML呢?我们可以使用React作为前端,Django作为后端,通过API提供数据。问题是:这项技术是遗产吗?现在有没有人或公司在一个真实的项目中使用Django使用模板来渲染前端?另外,我在后端开发方面是个菜鸟,所以谁能告诉我,除了创建API和制作数据库之外,后端开发人员还在做什么?
unguejic1#
问题是:这项技术是遗产吗?现在有没有人或公司在一个真实的项目中使用Django使用模板来渲染前端?
是的,很多。使用JavaScript和一些工具(如Angular,React和Vue)渲染网站现在确实获得了动力,但它并不普遍。这有几个原因。一个是JavaScript是一种不能被严格检查的语言。TypeScript和函数式编程技术(例如monads)甚至PureScript在这方面都有一些进步。还有一些讨论react技术是否与网页设计的工作方式背道而驰。
“网络默认是一个流媒体的东西。你进入一个页面,它提供HTML。您将开始看到它,因为它的下载。图像、视频也是如此……你可以用一点点的React来做一些事情。”-杰克·阿奇博尔德这个声明说,通常页面接收HTML并可以立即开始呈现内容,而不是首先加载一些将请求呈现内容的库。Arcibald的话当然只是一个人的观点,但即使互联网的新范式是可取的,在所有人都转过头来之前也需要很多时间。通常,生成的HTML页面不仅可以由服务器缓存,还可以由客户端通过在头部中注入缓存策略来缓存。对于JavaScript网站,它将通过API调用获取数据,这些数据可能会被后端缓存。客户端缓存这些数据至少要复杂得多。这些平台还存在其他问题。通常它们是相当“胖”的,需要加载大量的库,对带宽、RAM或处理能力不是很保守。它还将逻辑移动到前端,虽然已经取得了很多进展,但事实证明,通过react获得一个漂亮的前端仍然很难。事实上,首先是angular,然后是react,现在是Vue,这也意味着目前还没有关于如何做到这一点的事实上的标准,因此,当Angular在2018年非常流行时,在angular上投入的资源现在可能已经不太相关了。事实上,不知道react或vue是否会继续存在,这意味着在此基础上构建工具是一个风险。这就是所谓的Lindy-effect [wiki]:技术停留的时间越长,它就越有可能有一个漫长的未来。后端渲染已经证明它是有效的,所以它很可能会在这里停留一段时间。最后,它还引入了一个额外的部分来“粘合”在一起,这意味着如果前端开发人员以低效的方式访问API,或者API以这样的方式提供数据,前端需要发出大量请求,那么站点的加载速度可能会相当慢。虽然后端渲染页面往往交互性不强,但至少可以持续很长时间。通过主要使用HTML,即使是非常旧的浏览器,或基于控制台的浏览器,如 Lynx 仍然可以呈现这些。Django自己的管理迷你站点不是通过react、vue或其他JavaScript库呈现的,而是通过Django呈现的HTML呈现的。确实有一些后端完全专注于构建API,然后让一些JavaScript库进行渲染,很多网站使用后端渲染,例如WordPress和大多数网站都是在PHP之上构建的。
1条答案
按热度按时间unguejic1#
问题是:这项技术是遗产吗?现在有没有人或公司在一个真实的项目中使用Django使用模板来渲染前端?
是的,很多。使用JavaScript和一些工具(如Angular,React和Vue)渲染网站现在确实获得了动力,但它并不普遍。这有几个原因。一个是JavaScript是一种不能被严格检查的语言。TypeScript和函数式编程技术(例如monads)甚至PureScript在这方面都有一些进步。还有一些讨论react技术是否与网页设计的工作方式背道而驰。
“网络默认是一个流媒体的东西。你进入一个页面,它提供HTML。您将开始看到它,因为它的下载。图像、视频也是如此……你可以用一点点的React来做一些事情。”-杰克·阿奇博尔德
这个声明说,通常页面接收HTML并可以立即开始呈现内容,而不是首先加载一些将请求呈现内容的库。Arcibald的话当然只是一个人的观点,但即使互联网的新范式是可取的,在所有人都转过头来之前也需要很多时间。
通常,生成的HTML页面不仅可以由服务器缓存,还可以由客户端通过在头部中注入缓存策略来缓存。对于JavaScript网站,它将通过API调用获取数据,这些数据可能会被后端缓存。客户端缓存这些数据至少要复杂得多。
这些平台还存在其他问题。通常它们是相当“胖”的,需要加载大量的库,对带宽、RAM或处理能力不是很保守。它还将逻辑移动到前端,虽然已经取得了很多进展,但事实证明,通过react获得一个漂亮的前端仍然很难。
事实上,首先是angular,然后是react,现在是Vue,这也意味着目前还没有关于如何做到这一点的事实上的标准,因此,当Angular在2018年非常流行时,在angular上投入的资源现在可能已经不太相关了。事实上,不知道react或vue是否会继续存在,这意味着在此基础上构建工具是一个风险。这就是所谓的Lindy-effect [wiki]:技术停留的时间越长,它就越有可能有一个漫长的未来。后端渲染已经证明它是有效的,所以它很可能会在这里停留一段时间。
最后,它还引入了一个额外的部分来“粘合”在一起,这意味着如果前端开发人员以低效的方式访问API,或者API以这样的方式提供数据,前端需要发出大量请求,那么站点的加载速度可能会相当慢。
虽然后端渲染页面往往交互性不强,但至少可以持续很长时间。通过主要使用HTML,即使是非常旧的浏览器,或基于控制台的浏览器,如 Lynx 仍然可以呈现这些。Django自己的管理迷你站点不是通过react、vue或其他JavaScript库呈现的,而是通过Django呈现的HTML呈现的。
确实有一些后端完全专注于构建API,然后让一些JavaScript库进行渲染,很多网站使用后端渲染,例如WordPress和大多数网站都是在PHP之上构建的。