Web开发的新方法:请求工具和组件建议

时间:2010-07-18 23:30:13

标签: javascript templates html5 mootools couchdb

我正在寻找编写使用JavaScript的Web应用程序的最佳可能性。所以我想向您介绍我的想法,并就此问您的意见和替代方案,请:)

1年前,我开始寻找除PHP之外的Web开发的可能性。我找到了JSP和Django。我决定和Django一起去。在使用Django启动一些项目之后,让我得出结论,对我来说,Django不提供简单的Web开发的可能性。我不得不担心太多功能,特别是需要保持客户端和服务器代码的平衡。

所以我再次开始搜索,发现CouchDB为Ajax应用程序提供了一种很酷的后端。所以我的想法是使用CouchDB作为数据库服务器,它只提供数据验证和数据验证。存储并将其他所有内容保存到客户端。这显然不是一个新想法,但我还没有找到任何好的例子。 你知道吗?

我想拥有一个包含以下组件的架构:

  • 数据存储&验证(CouchDB)
  • Web服务器:处理文件和WebSockets或轮询(Tornado或Eventlet)
  • 客户端JavaScript处理其他所有事情(赞:自编MooTools)
  • 客户端模板语言(你知道任何酷吗?)

对于这些要点,您对不同的软件有什么建议吗?

处理以下请求:

初始请求会向客户端发送JavaScript文件和基本HTML(仅<body><head>标记)。加载的JavaScript函数创建HTML代码并将其插入<body>标记。从现在开始,网站上的整个导航仅请求通过Websocket提供并由客户端JavaScript处理的JSON。

优点:

  • 整个代码在客户端用JavaScript编写
  • 可以非常轻松地实现更新动画
  • 页面的逻辑非常轻巧透明
  • 服务器端可能没有扩展问题
  • 由于出色的客户端缓存可能性,应用程序性能非常快。例如,使用Webstorage

缺点:

  • 低硬件机器上的模板处理可能会非常慢?!
  • 应用程序代码对所有人
  • 是公开的

问题

  • 您知道这种网络开发的任何可用解决方案吗?
  • 您认为以这种方式编写Web应用程序会不会发生错误?

请同时查看Answer 2

3 个答案:

答案 0 :(得分:6)

  

您知道这种网络开发的任何可用解决方案吗?

看看couchapps。它是由couchedb背后的人写的。它基于jquery,但将它转换为与mootools一起使用并不难。还有一个很好的JavaScript模板引擎叫mustache。模板引擎可以在浏览器和couchdb两端工作。

  

以这种方式编写Web应用程序的youthink会不会发生错误?

没有。这就像大多数googles应用程序(邮件,文档,电子表格)一样工作,也有一堆框架像sproutcore或cappuccino一样工作。

  

web服务器:处理文件和   Web套接字或轮询(龙卷风或   Eventlet)

我认为couchdb也会处理这个问题

答案 1 :(得分:0)

尽管eskimoblood回答了大多数问题,但“我所说的”开发Web应用程序的方法仍存在一个大问题:模板语言

如上所述,有很多人使用Javascript在客户端工作。但在我看来,到目前为止我发现的所有模板语言都缺少一个很大的功能:更新功能

我并不是指在更新时重新渲染整个模板,但我希望看到一种模板语言,只更新我的变量。


用例示例:

想象一下,我正在阅读一个博客,其中包含25个JSON变量和一个用于渲染这些变量的大模板。突然,地球另一边某个勇敢的人提出了一个很酷的评论。现在有不同的可能性向当前读者呈现“实时更新”:

  • Worst-Case:整个页面重置。必须重做26个Json变量和整个模板处理。
  • Bad-Case:当前页面的整个博客部分都会刷新。 15个Json变量和模板处理的很大一部分必须重做。
  • 更好案例:只有当前页面的评论部分才会刷新。必须重做5个Json变量和litle模板处理。
  • 最佳实践:新评论会插入评论列表的顶部。必须重做1个Json变量和非常小的模板处理。

现在你可能会想,这对于一些Java脚本来说没问题。但我想要一种自动执行此操作的模板语言。一种模板语言,它知道其当前状态,并在标题更改时仅更新标题。或者从旧的teaserimage到新的teaserimage逐渐消失。

这样我们就可以节省大量的自定义更新脚本。在更改页面结构时不必担心动画,我们可以优化网络流量,因为只提供更新,而不是当前文档数据的已知部分。


问题:

  1. 您如何看待这种模板语言方法?
  2. 您知道任何提供类似处理的模板语言吗?
  3. 是否有可能在没有很多性能缺陷的情况下使用它?

答案 2 :(得分:0)

我一直在使用Trimpath Javascript Templates来完成过去几个大型项目,并对此非常满意。

我工作流程中的其他一些部分,现在我不能没有:

  • javasscript和CSS的构建过程。能够按照我的意愿组织我的js和css文件,将它们拆分成我想要的小块,然后将它们自动卷入一个大文件,这样太好了

  • LessCSS - 对普通CSS语法的改进。您使用LessCSS sytax编写样式表,它类似于css,但允许您使用变量,数学,混合,嵌套类等内容。 LessCSS引擎然后将其编译为常规CSS。