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

  1. 所以现在我们需要导航到Structure > Features 并找到相应的 feature。

  2. 我们点击 Recreate 并等待 feature 加载完成。

  3. 我们展开所有的组件,并确保我们已经找到了 feature 中所有对应的加载项。

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

  1. 我们设置文件路径并单击生成或下载。

  2. 我们找到下载的压缩文件并将其解压缩到适当的位置。

  3. 我们回到 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 模块对比的更多相关文章

  1. (转) 转换Drupal7模块到Drupal8

    转载地址:http://verynull.com/2015/11/02/Converting-7-x-modules-to-8-x/ 本节主要介绍如何把drupal7的模块转化为drupal8.参考资 ...

  2. Python的程序结构[5] -> 模块/Module[0] -> 内建模块 builtins

    builtins 内建模块 / builtins Module 在Python的模块中,有一种特殊模块,无需导入便可以使用,其中包含了许多内建函数与类. builtins 模块内容 / builtin ...

  3. 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    新服务器安装完开发环境后,还需要注册framework4.0到IIS.不然会报错:   HTTP 错误 500.21 - Internal Server Error 处理程序“Extensionles ...

  4. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipe ...

  5. MVC4做网站后台:模块管理1、修改模块信息

    网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...

  6. asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” http:// ...

  7. [转]处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    今天安装了windows7 开发web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated” ...

  8. 【python】import 模块、包、第三方模块

    xx.py文件,称为模块(module),把不同模块归整到一起的文件夹,叫做包(package) 不同包下的模块可以重名,但是都不能和系统内建模块重名 包里面一定要有个__init__.py文件,否则 ...

  9. 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory-I ...

随机推荐

  1. CSS3圆圈动画放大缩小循环动画效果

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  2. linux之sort和uniq

    uniq uniq命令: uniq不加参数,只对相邻的相同行内容去重. 例子如下: [root@localhost ~]# pwd /root [root@localhost ~]# cat oldb ...

  3. Apex简介

    Apex特点 Salesforce为开发者提供了Apex语言.它是一种语法上类似于Java的编程语言,有以下特点: 面向对象 完全在云端处理,包括保存.编译.执行 强类型 大小写不敏感(这一点和其他大 ...

  4. 【转】解决CentOS 64位系统vsftpd 530 login incorrect的问题

    转自:http://www.centos.bz/2011/12/centos-64-install-vsftpd-530-login-incorredct/ 今天在centos 6 64位测试安装vs ...

  5. 浅谈Java多线程中的join方法

    先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ...

  6. node中__dirname、__filename、process.cwd()、process.chdir()表示的路径

    直接上结论:__dirname 表示当前文件所在的目录的绝对路径__filename 表示当前文件的绝对路径module.filename ==== __filename 等价process.cwd( ...

  7. 06-OpenLDAP密码策略

    阅读视图 openldap密码策略 OpenLDAP服务端定制密码策略 客户端策划策略实例 定义用户第一次登录就修改密码 问题排查手册 重点推荐官方文档 备注:本文依然承接系列文. 1. openld ...

  8. nginx server_name匹配顺序

    server_name可为IP/domain/localhost/null等任何字符串(字符串server_name也可以用来匹配),注意各个 server 块的顺序. 1.如果只有一个server, ...

  9. shell中>/dev/null 2>&1

    本文转自http://www.kissyu.org/ 背景 我们经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬 ...

  10. 代理ARP--善意的欺骗

    1. 代理ARP(Proxy ARP)是什么? 顾名思义,它指通过中间设备(通常为Router)代替其他主机响应ARP请求.对于没有配置默认网关的主机想要与其他网络的另一台主机通信时,网关收到源主机的 ...