跳转到主要内容
ThomasHuang 提交于 9 September 2012

原文地址:http://drupal.org/node/242311

决定使用Views模块还是自己写查询和呈现的自定义模块,已经是每个开发者必须面临的选择.这选种择将对整个项目的成功至关重要.本页面提出了一些观点,思考该如何做这样的决定.

自定义代码的优点

自定义代码有如下优点:

  • 完全地控制数据的获取,一些SQL查询很难在Views中重现.
  • 一些查询优化的机会可能会出现在自定义代码中.Views正如一个有效的常用工具也可以,但特定的查询目标细节意可能味着有更深层优化的可能性.
  • 完全控制内容的展现,你有荣幸/特权/责任/需求去编写所有数据的展现细节.
  • 完全掌握你的代码.如果你自己编写的,就会知道里面包含什么,相比于学习Views代码库的任务来说.
  • 简单地说,许多案例只需要一个菜单,一个回调函数和一个简单的主题函数去描绘取出的内容.不超过30行代码就可以取出并显示节点的列表.与之相比的是views大量的代码,包括了插件和界面才能管理一个相似的列表.
  • 可以使用类似CVS,SVN的版本跟踪控制系统.如果你的视图存储在数据库中,当将会面临数据库损坏带来的数据丢失的风险.你可以导出视图为php代码并把他们放置到自定义模块中

Views的优点

使用Views模块有如下优点:

  • 改变行为不会改变代码.你可以在运行时更改你的应用程序,无需担心损坏代码或造成php语法错误.(注意:由于views是存储在数据库中没有版本跟踪控制的,改变内容或类似的行为不能简单地撤销. 请注意)
  • 许多展现的选项.不同的视图类型意味着你可以改变所获取到的数据的展现.
  • 黑盒.开始使用Views不需要你去写或读任何PHP代码.
  • 数据安全.在没有适当的数据安全测试情况下恶意用户可以做许多有害的行为.Views仔细检查这些麻烦,净化了展现的数据,所以你可以放心,只要该模块提供的数据正确地实现Views的API,它的数据就是安全的。
  • 开放架构.如果你是开发者,你可以用Views的API编写自定义模块添加新功能,新呈现样式和行为.这些自定义的东西可以在以后创建的视图中重用.
  • 社区福利.你将会是庞大的Views代码的参与者,这些代码由社区贡献和改进.将来Views会出现现在所没有的功能.在你不知不觉的时候会有人改正Views的漏洞.这等好事在自定义代码写查询的情况下是不会有的.
  • 重用views.建立一个基本的有用的视图,导出,然后在你构建的其他站点上可以使用它.
  • 紧密整合CCK,Voting API和许多其他你可能已经用到的模块.每个贡献模块可以潜在地扩展Views,因此,在对Views本身进行评估的时候确保并清点,你打算使用哪些模块.
  • Panels整合.Panels尤其强大而且和Views整合的非常好.在决定反对使用Views前先多查查资料.
  • 以编程方式处理Views.你可以在PHP代码中实例化Views对象并且用许多方式操作他们.Views API提供了一些访问Views对象的方法,因此,如果实在不满意在Views UI中实现的内容,你可以自己抢占控制这些对象.
  • 文档.Views相关的文档比你自定义编码的文档多.
  • Page(页面),menu(菜单)和block(区块)整合.Views提供了页面视图和区块视图,让你更好的实例化菜单项.
  • 最新版的Views比之前的版本更灵活.在决定反对使用Views前先查查最新版本的资料.
  • 暴露的过滤器:Views通过创建一些表单提供给你许多过滤查找你的views的控制.手动编写FAPI代码是庞杂而冗长的.不是说反对FAPI,只是创建那些下拉列表,自动完成文本域和复选框是很大的工作量.你仍然可以用form_alter获取暴露的提交和校验处理程序的过滤器,所以在这里用Views就可以完全控制过滤器了.