您如何在Web框架之外发展以创建自己的应用程序框架?

时间:2011-02-13 16:32:09

标签: jquery ruby-on-rails web-applications architecture

Web框架非常棒。我认为滚动你自己而不考虑流行的开源库是一种设计气味。因此,如果有人打算开始一个Web项目而不使用流行的服务器端Web框架(如Rails)和流行的客户端框架(如jQuery),我认为他们要么疯狂,要么无知,要么非常小众。

也就是说,Web框架不会为您做很多事情。像Rails和jQuery这样的恕我直言框架已经取得了成功,因为他们试图将80%带到那里,接下来的20%让你去做。 80%的比例使它们足够灵活,可以被广泛使用而不会变得过于紧缩或笨拙。所以问题就变成了,你如何处理剩下的20%,特别是当你的应用程序变大时?

过去1。5年,我们开发并维护了一个Rails / jQuery-UI应用程序。如上所述,这些框架的无限制功能证明了我们能够快速提高速度,保持生产力和加强优秀设计。然而,在过去几个月里,我开始认为我们应该能够更快地开发和部署新功能,并且我开始觉得我们没有在Rails和jQuery给出的基础上建立足够的基础我们。新功能似乎必须从每次80%的点开发,而不是优选的90-95%。

为什么您的战略超越了Web框架?您曾经使用过哪些技术或技术将80%的起点移近90-95%?您遇到或克服了构建自己的应用程序框架或工具包的哪些具体障碍?在vanilla Rails和jQuery上开发的难点是什么促使您寻求更紧密的应用程序集成?

2 个答案:

答案 0 :(得分:3)

框架和库留下你记下的“20%”,这样你就可以在它们之上构建。如果您发现自己仍然在工作,准系统,每次需要添加新功能或80%时,您都没有做任何事情。

就个人而言,我已经使用了许多PHP框架,我在其中构建了自定义库和功能,这有助于将我的项目提升到90-95%的水平。 15%的项目差异非常重要。该代码的一些示例包括:实用程序函数,权限系统,内部api和模板管理器(它们有助于使用您的视图呈现数据)。

至于客户端,Javascript,库(jQuery,Prototype,Dojo等),听起来你没想过长期。越来越多的人意识到在考虑使用哪个库之前,他们需要从严格的Javascript应用程序结构开始。库提供了绑定事件,选择元素等的一些标准方法,但似乎没有内置的大规模应用程序逻辑。您需要自己构建它。

松耦合(或Pub/Sub - 发布订阅)已经变得非常流行,并且有一些很棒的库可以帮助MVC和查看状态,如jQuery BBQBackbone.js(就像@Raynos建议的那样) )。此逻辑可帮助您以跨应用程序标准的方式扩展和正确管理新功能。也就是说,您应该仍然了解并开始使用您理解的纯库无应用程序结构。我在这里写了一篇好的 101 帖子(http://darcyclarke.me/development/javascript-applications-101/), Addy Osmani 也为此提供了很好的资源(http://addyosmani.com/blog/large-scale-jquery/)。与服务器端稍有不同,我建议您在深入决定使用哪个库之前构建15-20%。毕竟,它们具有许多相同的功能,不应仅仅依赖于构建客户端应用程序。

我仍然认为你最好不要使用这些工具,而是从头开始构建自己的工具,但我认为你需要开始构建自己的工具集。

答案 1 :(得分:2)

我对服务器端框架并没有太多帮助,因为我们的ASP.NET后端已经处理了90%的所有自定义服务器端控件,其他所有人都编写了与最后5%的交易。

在客户端的术语中,除了编写通用的可重用控件之外,几乎没有什么可以做的。我使用jQuery的主要原因是因为它抽象了跨浏览器的合规性。我就像使用JavaScript一样使用它,除了它在IE中毫不费力地工作。

在jQuery之上构建可重用的控件。制作自定义插件。使您编写的所有自定义代码更加通用,以便您可以在项目之间重复使用它。

我建议你看看backbone.js。它是一个客户端MVC框架,它真正允许您自定义Web应用程序。构建在这样的MVC框架之上使代码非常容易扩展并且易于管理。关于这一点的好处是你有很多控制权,你可以设置自己的通用框架,允许重复使用,重用和使用它们。重复使用。

要记住的一件重要事情是将跨浏览器合规性委托给像jQuery这样的底层库,然后在其上构建抽象。

根据我个人的经验,遍布各处的通用错误代码让我们拖延了jQuery的限制。也许如果每个人都写了很棒的代码,我们会注意到jQuery的局限性我还没有真正看到ASP.NET框架的任何限制。