Appearance
尾声 -项目回顾,温故知新
尾声:项目回顾,温故知新
回眸历程,聚焦灵魂
至此,小册的章节接近尾声。
我们一同经历了一个麻雀虽小五脏俱全的零售小系统从零搭建的过程。从最基础的技术选型的思考,项目工程化目录结构的预布局,到代码增长后的快速重构整理;从数据库表结构的设计,结合业务需求增加的持续表结构迁移 migrate,到数据填充 seed ;从 RESTful 接口的设计,无用户身份验证的纯开放接口,到基于 JWT 的身份验证型接口……
我们借力了 Joi 的接口入参校验,让具体的业务实现代码,在 handler 方法中显得更专注;我们借力了 Swagger 的插件,让后端接口服务的配套文档,生成地更规范更专业。我们借力了 good 多样的日志处理能力,配合 Sentry,完成了一套服务异常的实时预警能力;我们借力了 Lab & Code 的单元测试能力,为系统开发中的稳定健壮性,提供了更好的保障;我们也在 Node.js 的自身技术生态之外,借力了腾讯云所提供的基础云计算能力,微信生态的用户登陆能力,微信支付能力,与小程序开发工具的自动化部署能力,完成了产品设计到达用户的最后一公里冲刺。
正所谓好用的框架千千万,程序的灵魂总相同。本小册章节的设计初衷,是希望通过渐进式的功能需求实现,来让同学们了解,在驾驭后端技术的时候,需要掌握什么核心技术与解决哪些疑难问题。它们本身与所选择的语言,是 Node.js、是PHP、是Java 无关,只是因为各种考量,在当下的业务背景与技术选型之下,我们选择了 Node.js,选择了 hapi 。 我们付出了不同的设计实现成本的代价,最终实现了同样的目标。
他山之石,可以攻玉
优秀的设计理念,或为人称道的最佳实践,一定是跨语言而认知趋同的。所以,虽然本小册的话题聚焦在 Node.js 的 hapi,其他语言下的优秀设计也具有非常好的借鉴参考价值。这里墙裂推荐同为弱类型动态语言的 PHP 社区优质手册 Laravel 中文文档。
Laravel 在 PHP 界素以简洁优雅而闻名,短短几个配置几行代码,也便能快速实现业务产出。文档的章节目录清晰罗列了 PHP 视角的后端服务所解决的刚需问题,再类比结合下我们在 hapi 中所学到的技能点,同学们的内心会否产生一种豁然开朗的共鸣呢?
黑板重点,常看常新
阮一峰老师的 ES6 语法手册。ES6 相比于基础的 JavaScript 语法,增加了更多好用简洁的语法糖,async/await 告别回调地狱,箭头函数告别啰嗦的 this 作用域等等,都值得同学们在日常项目实践中逐渐掌握与运用。
依旧出品自阮一峰老师的整理,在我们纠结如何设计 RESTful API 的时候,可以作为参考。
Sequelize 作为 Node.js 生态中,支持 MySQL 数据库连接的老牌插件,自身提供了一套 cli 工具集,以及数据模型的 ORM (Object Relational Mapping),足以应付日常的 MySQL 使用。但要高效地用好 Sequelize,还待发掘更多的高级特性。
要系统深入学习 hapi,官方出品的接口说明手册当然必不可少。 它从 Server,Router 配置,Request 的生命周期特性,Request 四个纬度,提供了相应的使用说明。(友情提醒:hapi v17 和 v16 之间,是一个存有一定机制差异的大版本,整体的周边插件生态,也需要留意是否已升级支持了 v17)。
“君子生非异而善假于物。”善于借力现有生态的插件体系和轮子,能事半功倍。hapi 的官网维护着一个插件清单的频道,一些常见的需求,可以在其中找到现成的解决方案。
Catbox 是一个多策略的 key-value 对象存储插件。它支持 Redis,MongoDB,Memcached,Riak,Amazon S3,RethinkDB,Couchbase,Aerospike and LevelDB 等缓存扩展。文档资料比较晦涩,在同学们需要解决数据缓存问题的时候,可以深度探索。
特别鸣谢
感谢自己所在团队的伙伴侯文涛与彭祥,利用工作之外的时间参与了小册部分小节的内容整理与观点碰撞,将我们在一起实践使用的 hapi 很 happy 地转化为教程读物,分享给更多喜欢 TA 的读者用户。
感谢掘金小册编辑团队在整个小册写作过程中给予的平台资源支持。感谢雷蒙德老师@掘金一起探讨确定小册的写作主题。尤其感谢李梦娜老师@掘金,在小册最后上线前的一个月里,所给予的小册文字排版,文案语句,结构优化等全方位的细节帮助。
感谢阿里的梁桂钊老师从这本小册最初设计到完稿试读所给予的鼓励与支持,满满的正能量。
感谢小册试读群的伙伴们在试读阶段所给予的反馈与认可,带给我小册最后冲刺的信心与动力。
真的是尾声,但更是远方
HAPI (HAPPY) ENDING !^-^