File.4 重启 WP 主题项目

这个周末也没闲着想些有的没的,反倒是因为工作日下班后看了一些独立博客,欣赏了不少有意思的主题后,我决定重新做一个 WordPress 主题自己用。

其实我之前也是有过几次WP主题开发经历的,不过文件估计在大学时期的老旧笔记本电脑上,就是那款 Acer 4741G 的巨厚笔电,带光驱的那种。如今电脑放在厦门老家,估计回家也不会想收拾整理的。

之前博客在 2017 年前后有使用过一个自己定制的主题,当时是仿照 Material Design 自己又进行了一层设计的。后来因为 WordPress 升级,样式错乱,我又无暇打理,于是决定用省事的第三方主题。

构思

说干就干!我于是开始阅读 Material Design 3 的一些新的质感设计语言,打算结合做出一款新的主题。

我先在自己的草稿本上画出了大致的页面结构,包含桌面和移动端的草图。这一次决定使用全站 flex 的模式来做,避免定宽导致的宽度溢出等情况。

模式

通过不断阅读文档,我发现 WP 主体从去年开始推出了一个全新的区块主题(Block Theme),有别于经典主题(Classic Theme)混合 php 代码开发的情况,这个模块主题非常适合前端工程化,但是由于它的灵活性过于强大,必然会出现一些难以遵循 MD 设计规则的地方,届时估计我得新写一些针对主题的区块才能实现了。

工程

网上找了一圈,也在 github 上翻了一下,没有一个好用的脚手架。有些项目 gulp 和 webpack 都用上了,但是愣是没看到 webpack 用在了哪里,说白了还是 gulp 编译的主题。

我也看了很多优秀的主题代码,但是他们的项目是如何架构的,这点全然不知,我只能看到他们构建好的主题文件,怎么看都像是徒手写出来的,并没有什么工程化的痕迹。

这次我打算基于 docker 创建一个本地的 wordpress 容器,并通过软链接的形式将主题文件映射到外部的项目文件夹中,通过 webpack 打包的方式构建一个项目。起初我是打算 借由这个新起的项目顺势学习一下 rollup,但是感觉时间成本一下增加不少,如果短期内没有正向反馈做激励的话,这个 WP 主题项目估计很快就会黄掉。

目前我搭好了一个脚手架项目,并计划以此为基础开始新主题的开发,估计战线会很长。

近况

后面来说说近况吧。最近在公司又做了一个版本选择重构的项目,这次是基于组合商品的重构。

目前线上整个交易流程的版本选择逻辑基本都是我一手搭建的,很难想象是不是…不过当时我对这个大项目可是精心设计了很多结构,便于它的功能日后扩展。当时这么做的设计很有效,后来有一次功能从单选变为复选,我们前端同学只需动动手指改一下类型就可以了,后端同学当时改了老半天…

由于当时的项目架构我是结合进了 RxJS 做的,这倒也逼迫后续维护的小伙伴也要学习 Rx 的相关知识。虽然学习曲线挺陡峭的,但是用过的同学都说好用,并且都有点后悔入门晚了。现如今他们一有难以解决的复杂异步逻辑都想着用 RxJS 来解决,我感到很欣慰。哈哈!

不过难免也会有同学进入一个误区。就是 RxJS 这么好用,为什么不每个地方都用呢?我是这么想的:你不能强制要求每个人都用,毕竟人员流动很大,熟练工早晚会走的,新来的同事上手起来也要一段时间,这其实对于我们这个 To Customer 的项目来说,其实很不好。不是说用了什么新颖的技术就多牛了,对于前端项目更多的还要考虑兼容问题。何况很多历史项目还是需要有人维护的,求新求变固然是件好事,但是也要接受现实,有时候必须等一等用户更新手上陈旧的设备……

所以对于没有那么复杂的异步模块,我都不是太推荐大家上来就直接考虑 RxJS,这会增加一些不必要的维护成本。能用 useEffect、useCallback 等 Hook 组合将其解决,这本身也是一种能力不是吗?哈哈!

后记

最近买了回厦门的机票,打算回家看一看。其实清明、五一、端午就想回去了,但是受困于北京的疫情发展,和厦门的防疫政策。直到端午期间,我妈在家中摔了一跤,我还是通过亲戚间接知道的,我就萌生了无论如何也要回家一趟的想法。这不已经买好了机票,无论疫情政策怎么变,还是该回去一趟的!

孔子云「树欲静而风不止,子欲养而亲不待」。希望大家平时都能好好珍惜自己的家人,有空一定记得回趟家看看呀!


20220626:在开发过程中遇到一些瓶颈,区块主题虽然对于用户来说布局内容更加灵活,但是对于样式研发人员来说维护性太差了,需要考虑的点比较多,而且有很多官方未提供接口所以难以实现的功能。

《 “File.4 重启 WP 主题项目” 》 有 7 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

  1. Teacher Du 的头像
    pin_drop北京 devices_otherWindows webEdge

    是当前主题吗?非常简洁好看!

    1. Conan06 的头像
      pin_drop北京 devices_otherMacintosh webChrome

      嘿嘿,是的。不过评论表单这边我还没有改造成 Material Design 的款式,有时间在陆陆续续完善吧~

      1. Teacher Du 的头像
        pin_drop北京 devices_otherWindows webEdge

        评论回复没有邮件的通知吗?

        1. Conan06 的头像
          pin_drop北京 devices_otherMacintosh webChrome

          目前应该没有给访客发送回评通知。这是一个很不错的提升点,我改进一下。

  2. CoolGuy 的头像
    CoolGuy
    pin_drop荷兰 devices_otherWindows webChrome

    话说,左上角的LOGO裂掉了……
    看到你提到RxJs,我大概瞅了一下文档,看到了Observable,想到了我们用的Mobx,然后瞅了一下mobx的官方文档还简单对比过两者(大致是mobx是对状态的响应,而rxJs是对事件的响应,两个框架也能结合在一起使用),感觉应该还不错。不过的确也得考虑同事之间的协调问题,毕竟新的框架带来了新的学习成本,就需要评估这个成本是否值得了。

    1. Conan06 的头像
      pin_drop北京 devices_otherMacintosh webChrome

      其实是一直没有制图,因为打算换一套自定义皮肤了~
      RxJS是一套不错的处理异步事件的框架,mobx 我没用过,但是 redux 和 rxjs 配合简直完美~

      1. CoolGuy 的头像
        CoolGuy
        pin_drop荷兰 devices_otherWindows webChrome

        redux就写ACTION挺烦人的,也不太符合第一使用习惯,所以我们当时就转向了挺小众的mobx,但感觉挺好用,所以也一用就用了很多年了。各有千秋,适合自己/团队的才是最重要的。

File.4 重启 WP 主题项目