【第196期】Drupal7 Features模块与 Drupal8 Configuration Management 模块对比
Drupal 8 最好和最受欢迎的部分之一是新的配置管理系统。 该系统使开发人员很容易将配置导出到代码中。在此之前,开发人员不得不依赖于由Features、Strongarm、UUID、Features & UUID plugin等模块组成的复杂系统。即使是经验丰富的开发者,这往往也是一场噩梦。充斥着重写、锁定,祈求本可还原的功能却没有理由的无法还原,这简直是一团糟。更不用说随着网站体量的扩大和增加更多的功能,甚至不允许依赖关系的情况下,尝试将所有功能放在规律命名和组织的模块中。而Drupal 8 中的 Configuration Management 旨在解决所有的问题。
作为一个开发者,如果你还在考虑是否要从 Drupal 7 转到 Drupal 8,这应该是一个升级的原因。以下是主要的差异和注意事项:
UI 或者 Drush?
Drush可以使您的功能工作流程更容易,但这也取决于您的网站。 如果您在 feature 中添加了很多东西,则UI更容易完成列出、展示或其他常规的命令操作。就个人而言,我已经陷入了使用 Feature UI 的一种模式中,因为我工作的许多网站的功能非常复杂。Drupal 8中也有一个类似的UI,但是drush的导入和导出已经非常接近完美。我还没有找到想要使用UI的理由,尽管我欣赏它作为备份的存在。不过,我们将同时比对Drupal 7和Drupal 8的 UI 和 Drush。
Drupal 7 的导出配置
好的,所以假设您已经对现有 Feature 进行了导出所需的更改。
使用 UI
所以现在我们需要导航到Structure > Features 并找到相应的 feature。
我们点击 Recreate 并等待 feature 加载完成。
- 我们展开所有的组件,并确保我们已经找到了 feature 中所有对应的加载项。

4.如果这是一个重大变化,我们需要更新版本号。

我们设置文件路径并单击生成或下载。
我们找到下载的压缩文件并将其解压缩到适当的位置。
我们回到 features 界面,并检查 feature 是否处于正确的状态。
使用 Drush
现在,如果您只是更新现有组件,而不是添加或删除任何组件,drush features-update myfeature 将会做到这一点。 然后,您可以使用drush fl检查 feature 的状态。

添加组件时,使用drush features-components列出组件。

在命令drush features-export添加组件作为参数,如drush features-export myfeature mycomponent1 mycomponent2。

上述示例将图像组件导出到名为chq_images_test_feature的新 feature。
Drupal 8
使用 UI
进入 admin/config/development/configuration 来访问UI。 在Drupal 8的配置界面中,您有好几个选项,可以导入,导出或同步。您还可以查看所有更改的差异。加上底部有一个“全部导入”按钮,整个界面看起来像这样:

导入选项卡允许您从外部文件导入完整的配置存档:

或通过黏贴一段代码导入单独的配置:

导出选项卡允许您将整个配置导出到一个文件中:

或将单个项目导出到可以复制的代码中:

首先,这里没有在 Feature 中归类配置的功能,但是界面要简单得多,而且下拉菜单更容易使用,更不用说它们比 Feature 中依赖Ajax的复选框更可靠。
使用 Drush
虽然Drupal 8的配置UI很简单,但drush更简单。
导出配置:
运行drush config-export -y。 您将看到一个导出的配置更改的列表,如下所示:

导入配置:
运行drush config-import -y。 您将看到一个导入的配置列表:

综上,这是我在Drupal 8开发中最喜欢的事情之一。它快速简洁,只需要几秒钟。您不需要其他模块来帮助导出所有内容。不管是增删改任何操作均是如此。一年以来在我一直在使用Drupal 8开发的站点上,我只有几个小型实例的配置不正确同步 - 比 Features 少得多,而且更容易进行故障排除。
总结
现在,Drupal 8发行已经一周年了,越来越多的人和公司正在考虑迁移到Drupal 8。这中间有很多东西需要评估,当然本文中所描述的只是很细小的东西,但是对于开发者来说是一个很大的改进。
【第196期】Drupal7 Features模块与 Drupal8 Configuration Management 模块对比的更多相关文章
- (转) 转换Drupal7模块到Drupal8
转载地址:http://verynull.com/2015/11/02/Converting-7-x-modules-to-8-x/ 本节主要介绍如何把drupal7的模块转化为drupal8.参考资 ...
- Python的程序结构[5] -> 模块/Module[0] -> 内建模块 builtins
builtins 内建模块 / builtins Module 在Python的模块中,有一种特殊模块,无需导入便可以使用,其中包含了许多内建函数与类. builtins 模块内容 / builtin ...
- 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”
新服务器安装完开发环境后,还需要注册framework4.0到IIS.不然会报错: HTTP 错误 500.21 - Internal Server Error 处理程序“Extensionles ...
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipe ...
- MVC4做网站后台:模块管理1、修改模块信息
网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...
- asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” http:// ...
- [转]处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
今天安装了windows7 开发web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated” ...
- 【python】import 模块、包、第三方模块
xx.py文件,称为模块(module),把不同模块归整到一起的文件夹,叫做包(package) 不同包下的模块可以重名,但是都不能和系统内建模块重名 包里面一定要有个__init__.py文件,否则 ...
- 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory-I ...
随机推荐
- webpack单独打包一个less文件
需要将btn.less文件用webpack打包后,放到项目中.在网上百度了各种,遇到了很多问题,现在我将整个步骤整理如下: 1.建一个空的文件夹,命名为init_webpack,在该文件夹下运行: 这 ...
- python之while循环/格式化输出/运算符/初始编码/成员变量
一.主要内容:1.while 循环 (难点)while 条件: 循环体 break: 直接跳出循环continue:停止当前本次循环,继续执行下一次循环.不会中断循环能让循环退出:(1)break ( ...
- oracle执行先决条件检查失败的解决方法
在安装oracle 11g时,出现执行先决条件失败的情况如下: 你可以忽略所有强制安装,一般不会影响功能,但如果你想知道为什么会产生这种错误, 并且当出现以上情况时又该如何解决呢?如下列出了原因和解决 ...
- tab 页形式展现多张报表
业务系统中,很多报表都是沿用之前 EXCEL 的报表样式,原来以 sheet 格式显示的表,客户在 web 端展现的时候也希望也有同样的格式,润乾在实现这种效果和 EXCEL 一样简单灵活,轻松将数据 ...
- Runtime消息动态解析与转发流程
先上图: 下面根据具体代码看这张图. 一.创建一个Person类, Person.h #import <Foundation/Foundation.h> @interface Person ...
- 51Testing专访史亮:测试人员在国外
不久前,我接受了51Testing的访问,讨论了软件测试的一些问题.以下是全文. 1.史亮老师,作为我们51Testing的老朋友,能和我们说说您最近在忙些什么吗? 自2011年起,我加入Micros ...
- 你不可不知的Java引用类型之——软引用
定义 软引用是使用SoftReference创建的引用,强度弱于强引用,被其引用的对象在内存不足的时候会被回收,不会产生内存溢出. 说明 软引用,顾名思义就是比较"软"一点的引用. ...
- [20180630]truncate table的另类恢复2.txt
[20180630]truncate table的另类恢复2.txt --//上个星期做了truncate table的另类恢复,通过修改数据块的段号,再通过rowid定位收集数据,达到修复的目的.- ...
- sql server 如何查询出数据库作业所有者的信息并完成批量替换
今天数据库对入职一年的我建立了独立的数据库账号,之前我是和其他同事共享的,之前的所有者账号被废弃了,这时导致很多数据库作业执行失败. 下面是说明如何把之前所有的作业的所有者替换成正在使用的账号: 下面 ...
- Mysql基础之 binary关键字
where子句的字符串比较是不区分大小写的,但是可以使用binary关键字设定where子句区分大小写
