春暖花开之时,Drupal王者归来
滚滚长江东逝水,浪花淘尽英雄。
当我们的社区失去往日的繁华,当我们的交流群不再人声鼎沸,当我们的爱好者聚会越来越冷清。我们不禁要问,Drupal到底怎么啦?作为一个全球备受推崇,如此优秀的开源CMS开发框架,是蛰伏吗?还是被淹没?我开始寻找答案。当我开始对深爱的Drupal-我心中的王者失去耐心,准备远离Drupal 寻求新的支撑时,Drupal又王者归来,让我重拾旧爱。一个标志性的事件就是从Drupal8.7开始,jsonapi模块被正式写入内核。在前后端分离应用开发的滚滚大潮中,这无疑是一个神来之笔。
初识Drupal
最初接触Drupal是2009年,那时我是一个央企的信息化主管。当时企业门户网站受到广泛重视,但企业网站多数是用jsp开发的,采用的框架也是五花八门。每当我们企业内部网站出现故障时,必须找外包公司维护人员来处理,遇到网站需要改版或者是添加栏目时,更要大费周折。于是我开始寻找一个框架,需要开源、稳健、安全、灵活、规范、易操作,从国内到国外,我找到了Drupal。
当时正是Drupal7的鼎盛时期。一张关于Drupal学习曲线的漫画描述了学习过程的艰难历程,漫画将学习Drupal 分成两个阶段,第一阶段是攀岩,多数人在这个阶段夭折;第二阶段是攀上悬崖后步入平坦的道路。我与漫画中描述的一样,开始了艰难的攀岩过程。
中文学习资料少之又少。感谢老葛翻译的《Drupal开发指南》帮助我进入Drupal学习的大门。同时,我买了国外Lynda网站一年的线上学习课程,对Drupal 开发进行了进一步的学习。还购买了宁浩网的相关课程。后来,学习了2010年方擎老师写的《Drupal高手建站手册》、2012年方擎老师等人翻译的《Drupal7宝典》。
为了不断提高软件开发技术水平,我报考了北京邮电大学软件工程专业硕士,2014年取得了硕士学位。
爱不释手
因为工作需要,我2011年调任安徽分公司副总。那时候全国的分公司都没有内部网站,分公司有很多直属单位,通过内网专线相连。我上任后做的第一件事就是创建分公司内部网站。通过前期的积累,我毫不犹豫地选择了Drupal7 作为网站开发框架。为了宣传普及Drupal,我还带了几名信息管理人员参加了泰山老虎在广州举办的培训班。分公司内网不到一个月就上线了,直到今天,网站虽然经过多次改版,依旧运行良好,我虽然离开多年,同事们也能非常轻松地进行网站维护。
2014年我调任湖北分公司任总会计师,同时也把Drupal带到了那里。先后用Drupal7开发了《内部工作交流平台》和《权利运行跟踪管理系统》,顺利部署上线,运行良好。
在此期间,先后在Drupal中文社区发表《Druapl7级联选择和自动填充功能的使用》、《Drupal7分类权限控制方法》、《基于角色的权限控制在Drupal7中的应用》、《windows命令行安装Drupal7》、《Drupal7+appcan开发cms移动客户端应用》、《Drupal7中的一个访问权限控制示例》等文章。因戴文科技的希望老师之邀,翻译剪辑了《为什么要用Drupal》视频。
跟随潮流
Drupal发布8.0版本后,我更是欢呼雀跃,views模块和restful模块进入了内核,Drupal的移动应用掀开了新的一页。主题和模块的开发实现了革命性的变革,自定义区块给开发者提供了更多的灵活性,对响应式网站的开发提供了有力支撑。
我开始潜心研究Drupal8。先后在Drupal中文社区发表《在Drupal 8 中安装Bootstrap 主题》、《将Bootstrap整站模板移植为Drupal 8 主题》、《Drupal 8 模块开发入门》、《介绍一款Drupal 8 开发神器 -- Drupal Console》、《Drupal8在linux服务器上的安装》、《三步搞定用Docker安装Drupal8运行环境》等文章。专门录制了《Drupal8自定义主题开发实战视频教程》,至今在社区网站置顶,并成为腾讯精品课。
为拓宽知识面,2016年5月,我参加了全国计算机资格水平考试,取得了《信息系统项目管理师》高级资格证书。
渐行渐远
随着移动应用的铺天盖地之势,微服务对Drupal提出了严峻的挑战。2016年底,我申请提前从现任岗位上退下来,一方面回老家照顾病重的父亲,另一方面潜心研究软件开发技术。
前后端分离已经引领潮流。rustful服务已经成为标准和规范。Drupal因为前期有太多的积淀,一方面作为cms框架,在安全、功能多方面越来越健壮,另一方面,Drupal的restful服务已经不能很好地满足移动应用开发的需求,解耦非常困难。我开始丧失信心,怀疑Drupal是不是已经老了?
我开始寻找新的途径,以免被时代淘汰。开始研究新的前端和全栈开发技术。先后学习研究了nodejs及其相关框架,如vuejs、reactjs,学习react nactive、flutter,学习uni-app等开发框架,学习微信小程序的开发、腾讯云开发。
当我开始从前端开发学习向全栈开发延伸时,需要寻找一款微服务的后台框架,先后研究了loopback 和hapi框架,先后在《掘金》发表《LoopBack3.0创建API接口实战》、《LoopBack3.0自定义角色与授权》、《使用Hapi.js,Mongoose和MongoDB构建RESTAPI》、《五分钟用hapi和mongoDB构建一个RESTful的CRUD接口API》、《用hapi自动生成一个RESTful的CRUD接口文档测试界面》、《Hapi-js实现基于jwt的注册登录和验证》等文章,在b站还发布了相关的配套视频。
重拾旧爱
在研究后台微服务开发技术时,遇到了一些难题。主要是文件上传和权限验证问题。如果Drupal能解决好restful服务问题,其他方面是无可挑剔的。果然,Drupal没有让我们失望,从8.7版本开始,Drupal核心现在提供了现成的jsonapi实现,这标志着Drupal API成为第一个重要里程碑。
该平台针对构建耦合和分离应用程序进行了优化。
借助jsonapi,开发人员或内容创建者可以在Drupal的UI中创建其内容模型,而无需编写任何代码,并且不仅可以自动获得出色的创作经验,而且还可以自动获得功能强大,符合标准的Web服务API将内容导入JavaScript应用程序,数字亭,聊天机器人,语音助手等。
启用jsonapi模块后,所有Drupal实体(例如博客文章,用户,标签,评论等)都可以通过jsonapi Web服务API进行访问。jsonapi提供了一种标准化的API,用于读取和修改资源(实体),与资源之间的关系(实体引用)进行交互,仅提取所选字段(例如,仅“ title”和“ author”字段),包括与避免额外的请求(例如,有关内容作者的详细信息)以及对资源的集合进行过滤,排序和分页。
除了功能强大之外,jsonapi还易于学习和使用,并使用我们已经提供的所有工具来测试,调试和扩展Drupal站点。
几乎可以肯定,Drupal的jsonapi模块是现有功能最完善,最易用的jsonapi实现。
Drupal jsonapi实现开箱即用地支持jsonapi 1.0规范的每个功能。每个Drupal实体(jsonapi术语中的资源对象)都会通过jsonapi自动提供。尊重现有的读写访问控制。这两种翻译和修订实体也都可用。此外,无需任何配置(例如,设置“ Drupal视图”)就可以查询实体(以jsonapi术语过滤资源集合),这意味着前端开发人员可以立即开始工作。
特别令人高兴的是,这一切都归功于Drupal的数据模型和自省功能。Drupal已有十年历史的Entity API,Field API,Access API以及更新的Configuration and Typed Data APIs的存在,其强大的基础使可通过Web Service API获得Drupal的数据。这一点不可低估,因为它使jsonapi实现更健壮,深度集成且优雅。
所以疑虑都已消除,春天来了,王者回归,是时候重拾旧爱了!
接下来我会将jsonapi的使用心得跟大家分享,敬请期待!