用django中的大部分javascript/dojo制作网页?

用django中的大部分javascript/dojo制作网页?,javascript,html,django,json,dojo,Javascript,Html,Django,Json,Dojo,我正在使用django及其模板系统。在处理了一段时间之后,我觉得编辑一个模板是一件痛苦的事情,如果我不得不显著地改变一个视图或者处理模板模块化的组织。我相信你们中的许多人都不同意这个评估。无论如何,我想让每个视图向客户端发送一个JSON对象,并在客户端使用javascript/dojo呈现整个网站。当然,视图仍然是django风格的,我必须适当地组织JSON 我意识到这可能有一些性能问题。同时,我还担心由于加载所有javascript,然后是json,最后是html而可能出现的加载时间同步问题。

我正在使用django及其模板系统。在处理了一段时间之后,我觉得编辑一个模板是一件痛苦的事情,如果我不得不显著地改变一个视图或者处理模板模块化的组织。我相信你们中的许多人都不同意这个评估。无论如何,我想让每个视图向客户端发送一个JSON对象,并在客户端使用javascript/dojo呈现整个网站。当然,视图仍然是django风格的,我必须适当地组织JSON


我意识到这可能有一些性能问题。同时,我还担心由于加载所有javascript,然后是json,最后是html而可能出现的加载时间同步问题。但是,一个好的页面呈现算法可能有助于缓解这些问题,可能有点像惰性加载程序。无论采用哪种方式,这种设计都可能奏效吗?

有很多应用程序都是采用这种方式设计的,而且大多数性能(正面和负面)都来自所使用的javascript库的强大功能,以及正如您所猜测的,它是如何处理延迟加载和缓存的


该项目通过extjs sencha库实现这一点。您可以从中获得一些灵感,或者直接使用它。

中有一个很好的设计模式示例。事实上,整本书都建议我们在富互联网应用程序中这样做。不过,对于一个拥有不同页面的常规网站来说,这可能有点过头了

我尝试了他们的例子,他们的做法在我的机器上表现得非常好。基本上,这个想法是将填充小部件的数据与元数据分离,即关于小部件在页面中的布局方式的信息-样式、位置等

从书中的示意图可以看出,您最终会得到一些通过延迟/承诺并行化的函数,如:

function init() { // initialize global variables }

function getData() { // retrieve data from the server }

function getMetaData() { // retrieve metadata from the server }

function continueWithData() { // push data into cache }

function continueWithMetadata() { // prepare panel with HTML controls, etc. }

function finish() { // Push data into HTML controls and release the panel to the user }
这些功能以这种方式链接:

  init()
    |
    v
 -----------------------------------------------
    |                             |
    v                             v
 getData()                     getMetadata()
    |                             |
    v                             v
continueWithData()              continueWithMetadata()
    |                             |
    v                             v
  ----------------------------------------------
                     |
                     v
                   finish()
我为复制图书模式而道歉-我希望我没有侵犯任何版权,博客上可能有更好的模式,但我真的很喜欢那里的解释方式,所以


整个并行性是通过dojo.Deferreds实现的。我认为现在使用更容易,所以您可以尝试一下……

它会起作用,但这取决于您如何设计站点的体系结构。糟糕的计划会花费你很多时间。最好计划一下如何处理页面,如何在页面之间交换,如何登录,ACL,缓存等等。谷歌它,它有很多内容要覆盖。