使用像Backbone这样的框架


24

我目前有一个页面http://proctors.org/tv,该页面由数个视图和附件驱动,其中包含大量的jQuery和被黑在一起的JavaScript意大利面条,我想对其进行清理。我知道,较新的Javascript“ MVC”框架会使用模板,并且不会像使用jQuery那样严格将所有数据存储在DOM中。

我相信您会使用服务和/或视图之类的后端,而Backbone位于前端。

有一个针对Backbone的Do项目,我记得在DrupalCon Denver上有一个BoF或Session ...

我希望发现是否值得花时间尝试在一个新的框架中重写它,或者只是清理这里的内容。


4
到底是什么问题?如果问题是“是否有人将Java框架(如Backbone或Ember)与Drupal一起使用?” 那么这是一次投票,因此在Stack Exchange网站上不受欢迎。如果您对使用这些JavaScript框架之一有特定疑问,请提出该问题。
kiamlaluno

2
我认为他是在问是否存在任何可以与Drupal自己的javascript框架一起很好地工作的MVC javascript框架,以至于与仅仅滚动自己的javascript框架相比,它们会减少工作量。对我来说似乎很公平-在某些方面,使用Drupal进行扩展非常顺畅,对于其他方面,则需要进行大量的黑客攻击,因此最好是从头开始对其进行重写-并向已经尝试过的人询问似乎很公平。
user56reinstatemonica8'8

如果您想快速入门
masterchief

这个家伙为骨干网和Drupalpixelite.co.nz/article/…
Dan Walmsley

那个家伙是@masterchief,来自上述答案之一
Ryan Price

Answers:


18

我已经将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创建Web应用程序所需的REST API,而是使用Node.js创建实际的REST API以及Web应用程序需要进行的其他检查AJAX调用。Node.js擅长于此。速度非常快(对象列表的响应时间低至30ms)。它也非常轻巧,因为服务器上的JavaScript使用异步操作,所以Node.js服务器通常可以处理数千个并发用户,而PHP可以处理100个并发用户。此外-由于Node.js是JavaScript,因此您可以重用很多代码服务器和客户端。您可以从字面上编写相同的验证代码,而不必同时在JavaScript中实现客户端和在PHP中实现服务器。如果您打算在几周内去慕尼黑的Drupal con-您应该考虑观看node.js演示文稿

因此,如果您是开发人员,我强烈建议您进行类似的设置,并且仅将Drupal用于其真正擅长的领域。如果您想制作一个简单的Web应用程序并且不希望有太多用户,则可以使用Drupal作为后端,如果这样做可以帮助您节省开发时间。


更新Drupal 8

因此,随着Drupal 8的发布,上面的某些内容仍然适用,但与以前的扩展不同。Drupal 8就像Drupal 7一样,不是轻量级的工具,例如Node.js,Rails,Django等。由于JavaScript应用程序主要消耗各种服务,因此您仍应考虑Drupal是否是最好的工具。

使用Drupal 8,很多方面都得到了改进。服务是原生的,由Symphony驱动请求/响应。Drupal 8具有高级缓存和所有出色功能的许多有趣功能。但是,即使拥有Drupal 8的所有强大功能,它仍然比轻量级应用程序重得多。很难说Drupal 8可以成功用作快速的Web服务提供商。

因此,尽管所有这些都说完了,但我的一般建议仍然不变。作为Drupal开发人员,很容易将Drupal用于所有内容,因为我们对此非常熟悉。感觉很安全,Drupal 几乎可以用于任何事物。请记住,虽然可以将Drupal用于任何事物,但这并不意味着它是所有事物的最佳工具。进行合理的分析并了解您要在IT项目上使用的工具的优缺点,将始终是一个很大的帮助,并且可以帮助您避免陷入僵局,结果不符合您的期望。


有趣的方法。您在使用drupal.org/project/nodejs还是在滚动自己的Drupal DB接口?
mpdonadio

@googletorp,我与phusion passenger一起工作,即使她没有缓存和服务器优化也无法表现更好,并且所有服务器端脚本语言(js除外)都有相当多的阻塞问题。实际上,由于开放源代码社区中的一些专用性能支持以及极高的易用性,我本人从ruby切换到了php。与其他语言相比,Nodejs始终保持更快的速度。
2012年

无论如何,关键是,由于Drupal提供了很棒的服务模块框架,所以我认为您可以共享一些在客户端处理数据的知识,尤其是处理会话和东西。
2012年

@Minty在Node.js中有一个集成到Drupal的帮助程序包:github.com/mikl/node-drupal实际的会话处理很大程度上取决于您的操作方式。CORS等,但是我通常向Cookie或请求标头中发送Drupal session_id。
googletorp

我只是通读了这个很棒的Backbone文档github.com/kjbekkelund/writings/blob/master/published / ...,并且认为,骨干网是一种组织JavaScript并将其与AJAX回调一起通过路由系统使用的好方法。由于Drupal依赖于相同的路由特性,为什么不将其与Drupal结合?
AlxVallejo 2014年

6

我最近开始开发我的第一个主干+ drupal应用程序,并且非常享受它。将Backbone模块与Services,Services Views和所需的库一起使用。该项目非常简单:创建一个包含6个页面的内容可管理轮播,以显示各种数据,以及一个额外的“新闻”滑块以显示不同的内容。该页面位于各种屏幕上,无需用户交互,因此需要具有在不刷新浏览器的情况下更新前端内容的功能。我认为这非常适合Drupal + Backbone应用程序,其中Drupal管理内容和主干来控制数据库并与数据库同步。我将其集成到具有强大API的jquery.cycle 2中,非常适合MVC编码风格。

我明白了为什么人们可能会喜欢使用Drupal作为后端框架,但是对于像Drupal这样的小型应用程序,它既轻便又快速。我通过最小化安装并仔细挑选contrib和核心模块来实现这一目标。我现在有大约50个模块,其中有150行以下的自定义JS代码用于骨干材料,我已经完成了很多工作。

最终,我将尝试将其作为示例提交回骨干模块,因为目前尚无示例显示如何将视图用作集合等。

结论:

如果您的项目匹配良好,那么值得您花时间研究一下。在我看来,可以通过使用诸如Varnish之类的缓存机制甚至是boost或core页面缓存来轻松解决Drupal繁重而导致的性能问题。使用Drupal所带来的灵活性和开发速度对我来说是不利的。


5

基本答案是肯定的,有人正在使用它。我自己还没有使用过它(还没有找到一个很好的项目匹配项),但是目前有一个Drupal小组,它也适合作为Drupal 8倡议之一的Web Services and Context Core Initiative。。在Frontup的DrupalCon Munich 2012上还有一个会议,Backbone.js

我不知道它是否已经准备就绪,但是我认为值得为您是否可以从中受益,可以将JS端设计为接口而不是实现的概念证明。如果您出于任何原因决定对Drupal保释,那将有助于隔离任何后端更改。


1
从本质上讲:Stackexchange是个错误的询问位置,因为这是目前的特殊情况。漫步到有关gdo的小组讨论
paul-m

MPD感谢您与该小组的链接。我可能会在那儿跟进。我已经在用户组中进行了一些询问,这实际上取决于谁在那儿。仍在尝试找出我何时应该在Stack Exchange上提出问题。我认为这将有多个正确答案,因此似乎很合适。
瑞安·普莱斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.