[译]正式采用Drupal8的5个障碍

译者注:因为本文标题的缘故,可能对你产生一些误导,所以请注意,本文的原文发布时间是2014年10月7日,翻译时间是2014年10月11日。而且文本说的并不是Drupal8的缺点,而是接受采纳Drupal8会面临的挑战。

以下是正文:

Drupal8为当前的Drupal生态系统带来了许多重大的改进,包括一个改进的Entity API,使得内容建模更加灵活,为多语言站点提供了一个核心级别的翻译系统,响应式主题,行内编辑以及配置管理系统等。但是伴随着这些改进,Drupal8对像Chapter Three这样的专业Drupal开发公司来说也带来一些障害需要去明确和克服。

障碍 #1:需要适应新的内容建模语言

Drupal8的新实体系统提供创建全功能的自定义实体类型的能力,消除了长期以来的内容建模存在的问题。整个Entity API已经被重新设计,使所有的内容都内置支持多语言。例如,你可以很容易地在不同的语言中显示不同语言的用户姓名,不需要任何自定义工作。

主要障碍是对站点的内容规划者说的,其需要开始考虑这一新的Entity语言以利用到Entity全部的能力。在Drupal6时代,一旦安装了CCK你就可以给Node添加新字段,但也仅能做到这种程度。之后到了Drupal7,CCK被移到了核心并且被扩展了,使得可以对Taxonomy等添加新字段。使用Drupal8我们必须以身作则,并鼓励社区开始思考内容如何能够融入核心所提供的实体模型。如果你的内容不适合内置提供的实体,解决方案是创建一个小的模块去利用实体的API来解决。一旦你这样做了,你的自定义实体将自动整合到一切Drupal提供的好处,Views,可配置字段,视图模式,实体引用等等,可以为后端开发者和主题开发者节省很多时间。让你的网站的任何数据都以实体的形式存在可以给你一个整洁的网站结构以及更好的隔离性。

为了克服这个障碍,你需要首先熟悉并习惯新的Entity API术语,比如基字段(base fields),可配置字段(configurable fields),子类型包(Bundle)等等。当你设计一个Entity的时候,记住定义基字段是一个关键步骤。你需要考虑新字段如何被添加,什么应该出现在配置层。你需要问自己需要多大程度的灵活性,什么是需要基于实体类型被指定的。例如:一个location的实体类型,你可能需要在子类型(Bundle)创建不同的字段,让我们假设有两个子类型home和office,Drupal8提供了一个灵活的机制来做这件事,并且是内置集成的。你需要学习以掌握这些对你来说是新的,并且是改进了的内容建模体验。

障害 #2:学习Twig,新的主题引擎

模板结构和模板语言在Drupal8已经彻底改变了,不再有PHP的模板,语法也不是PHP的语法了。作为替代,Drupal8使用了Twig,一个完全崭新的主题引擎,主题开发者必须要去学习。

有利的一面是,Twig是为模板而设计的,这和传统的PHP有很大的不同。使用Twig模板,例如node.html.twig,将很难将编程逻辑放到模板层,这是一件好事,因为复杂的编程逻辑本来就不属于这里。另一个优点是默认开启了自动转义,因此所有在模板中输出的字符串都自动被转义了,这意味着Drupal8更安全了。在所有的地方都使用的是HTML5,并且有了最新版本的Javascript库,例如jQuery

许多在不同设备屏幕的可访问性测试开始走进Drupal8的开发进程,许多特性得到改进,例如颜色对比和字体大小。还也有许多响应式改进。Bartik主题现在是响应式的了,提供了很好的例子来展示如何给表格的不同列赋予不同的优先级,以便更容易的设计响应式表格。

障碍 #3:网站建设者必须考虑内容管理者的使用体验

伴随着Views现在已经进了内核,网站建设者有了快速构建的工具,过去则是需要额外的下载和配置。现在内容,包括节点列表已经是使用Views实现的了,我们可以很容易的自定义,这意味着网站建设者需要开始考虑更多内容管理者的体验问题。他们需要更深入地研究可用性的难题和实现一些相同的内容组织的策略,那些曾经预留给最终用户的体验。

Drupal8对区块的改进应该可以提供一些帮助,新的区块系统更加强大,提供了一些新的功能,例如将一个区块在同一页面放到多个区域当中,以及可以为自定义区块添加自定义字段。

障碍 #4:开发者,开始学习吧

开发者是面临最大障碍的一个群体,许多工作在等着他们,特别是如果没有除了Drupal之外的开发经验的话,他们必须要首先熟悉PHP全新的编程风格。Drupal8使用了现代的面向对象开发方法。例如,很多常用的信息类钩子已经停止使用,而是使用Drupal8的插件系统

插件是由模块定义的比较小的,可替换的一些功能。开发者需要学习这个新的,强大的插件系统是如何工作的。插件系统提供了几个好处,包括减少模块文件的大小,逻辑封装到独立的类。在Drupal6和Drupal7,你可能不得不通读整个模块以理解模块是做什么用的。拿区块举例,你必须实现hook_block_list, hook_block_info等。在Drupal8,你能看到一个区块插件,并且知道所有的逻辑都是有关这个区块是如何与系统交互的。

这也意味着Drupal8变的更繁琐的,因为模块被分割成很多个文件。开发者需要习惯同时开启更多的文件来完成开发。一个配置良好的集成开发环境,例如Netbeans, Eclipse,PHPStorm可以极大的缓解这个问题带来的影响。

障害 #5:克服对第三方模块的渴望

许多人犹豫是否升级到Drupal7的一个最大的原因是许多模块,包括Views,在Drupal7正式发布之后的相当长时间内是没有Drupal7版的。这对市场和销售人员来说是个挑战。现在Views已经被集成到Drupal8的内核,这个主要的障害已经消除了。Drupal8是真正的从来没有过的全特性核心,包括所见即所得编辑器,实体引用,大部分的Ctools。许多第三方模块正在移植到Drupal8,更早的升级将比以往更可行,这将给你的站点更长的生命周期和更强的安全性。

Drupal8开发团队针对从早期版本的升级路径很努力的考虑了很长时间,理解到Drupal6站点将是升级到Drupal8的主要群体。从Drupal6直接升级到Drupal8的升级路径是很难实现的,因此Drupal8丢弃了这个升级路径,而是将Migrate模块加入到核心。这意味着如果你有一个已经运行了5年的Drupal6站点,你将发现升级到Drupal8的重大价值和可行性。还有许多其他的好处需要视成本而定,比如更好用的管理后台,以及响应式站点等等。


原文:http://chapterthree.com/blog/5-hurdles-adopting-drupal-8
作者:Alex Pott
译者:理查