当前位置: 首页>>建站开发>>正文


使用像Backbone和Drupal这样的Javascript框架

webfans 建站开发 , 去评论

问题描述

我目前有一个页面http://proctors.org/tv,由几个视图和附件驱动,有大量的jQuery和hacked-together JavaScript意大利面,我想清理它。据我所知,较新的Javascript “MVC”框架使用模板,并没有像使用jQuery那样严格地存储DOM中的所有数据。

我相信你会使用像服务和/或视图这样的东西作为后端,前面有Backbone。

Backbone有一个D.o项目,我记得在DrupalCon Denver有一个BoF或Session,关于它……

我希望能够发现是否值得花时间尝试在新的框架中重写它,或者只是清理我在这里所拥有的东西。

最佳解决思路

我使用了Ember和Backbone以及Drupal – 但不是你想象的方式。

Ember和Backbone都是创建Web应用程序的好工具 – 但Drupal并不是一个与它们一起使用的好工具。您构建Web应用程序时所需要的是轻松快速的。如果立即响应时间,您希望它能够快速地给您的用户带来感觉。你希望它很轻,使它更好地扩展。 Drupal并不快 – 如果您只想为您的Web应用程序提供REST API,那么完整的Drupal引导程序需要很长时间(与许多其他选项相比)。 Drupal是PHP,它也使得RAM非常大,限制了并发用户的数量。

因此,如果Drupal对此如此糟糕,为什么要使用它呢?

你应该真的使用Drupal来实现Drupal – CMS。我过去在需要Web应用程序的项目中所做的就是使用Drupal在Web应用程序周围创建CMS。构建博客,内容列表等内容。我还创建了一些模块来定义一些后端内容 – 比如模式定义,以及使用Drupal有意义的其他东西 – 因为它使我的开发更容易。

而不是使用Drupal来创建webapp所需的REST API – 我使用node.js来创建实际的REST API以及其他检查webapp需要进行的AJAX调用。 Node.js擅长这样做。它的速度非常快(对象列表的响应时间低至30毫秒)。它也非常轻量级,因为服务器上的JavaScript使用异步操作,node.js服务器通常可以处理数千个PHP可以处理100个并发用户。除此之外 – 因为node.js是JavaScript,你可以重用很多代码服务器和客户端。您可以逐字编写相同的验证代码,而不必在PHP中实现客户端和PHP中的服务器端。如果你要在几周内去Münich的Drupal骗局 – 你应该考虑看看node.js presentation

因此,如果您是开发人员,我强烈建议您进行类似的设置,并且只使用Drupal来实现它的擅长。如果你想制作一个简单的webapp并且你不希望有很多用户,那么使用Drupal作为后端可能是一个选择,如果它有助于你的开发时间。


更新Drupal 8

因此,随着Drupal 8的发布,上面的一些内容仍然适用,但与之前的相同。 Drupal 8就像Drupal 7而不是轻量级工具,如nodejs,rails,django等。由于JS应用程序主要使用各种服务,如果Drupal是最好的工具,你仍然应该考虑。

使用Drupal 8,很多东西都得到了改进。服务更加本土化,Symphony推动请求/响应。 Drupal 8具有许多有趣的可能性,具有高级缓存和所有强大功能。但即使拥有Drupal 8的所有优点,它仍然比轻量级应用程序重得多。很难说Drupal 8如何成功地成为一个快速的Web服务提供商。

所以,尽管所有人都说完了,但我的一般建议保持不变。作为Drupal的开发人员,Drupal很容易用于所有事情,因为我们熟悉它。感觉很安全,Drupal几乎可以用于任何事情。请记住,虽然可以将Drupal用于任何事情,但这并不意味着它是一切的最佳工具。进行合理的分析并了解您希望在IT项目中使用的工具的优点和缺点,将始终是一个很好的帮助,可以帮助您避免陷入死锁,结果不符合您的期望。

次佳解决思路

我最近开始开发我的第一个骨干+ drupal应用程序,我真的很享受它。使用Backbone模块以及服务,服务视图和所需的库。该项目非常简单:创建一个6页的内容可管理轮播,显示各种数据,以及显示不同内容的其他新闻滑块。此页面位于各种屏幕上,无需用户交互,因此需要能够在不刷新浏览器的情况下更新前端内容。我认为这非常适合Drupal + Backbone应用程序,Drupal管理内容和主干控制并与db同步。我集成了jquery.cycle 2,它有一个很棒的API,非常适合MVC编码风格。

我可以看到为什么人们可能会把Drupal作为后端框架,但对于像这样的小应用程序来说,Drupal轻巧而快速。我通过从最小安装开始并仔细挑选contrib和核心模块来实现这一目标。我现在大约有50个模块,只有不到150行的自定义JS代码用于主干内容,我已经完成了很多工作。

最后,我将尝试将此作为示例提交给骨干模块,因为目前没有示例显示如何将视图用作集合等。

结论:

如果您的项目匹配良好,那么值得花时间研究一下。在我看来,通过使用像Varnish这样的缓存机制,甚至是提升或核心页面缓存,可以很容易地解决因Drupal沉重而导致的性能问题。使用Drupal的灵活性和开发速度完全超过了我的负面影响。

第三种解决思路

基本答案是肯定的,有些人正在使用它。我自己没有使用它(还没有找到一个好的项目匹配),但目前有一个Drupal group,它也适合Web Services and Context Core Initiative,这是Drupal 8 Initiatives之一。 2012年慕尼黑DrupalCon会议室还有Backbone.js in the Frontend会议。

我不知道它是否已准备好迎接黄金时段,但在我看来,如果你有一些可以从中获益的东西,并且可以将JS方面设计为接口而不是实现,那么值得创建一个概念验证。 。如果您决定保留Drupal,无论出于何种原因,这将有助于隔离任何后端更改。

第四种思路

您可能会发现这很有用:它显示了将基于JQuery的脚本转换为主干脚本的示例。显然,你需要使用drupal_add_js或使用模块作为库来引入backbone.js。

https://github.com/kjbekkelund/writings/blob/master/published/understanding-backbone.md/

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2466.html,转载请务必附带本地址声明。