七月份可能是今年以来我个人最忙的一个时间段,所以上一个 Go+ 的 weekly release: v0.7.2 延迟了一天发布,并且也没来得及将发布的内容整理成文。这周我们就把这两周的更新合并在一起说。
首先是一个影响颇大的工作细节改变。之前我们合并 pull request 的时候,是原样合并,这样 pull request 在实现某功能或修改某个 bug 时进行了 N 次 commits,我们合并的时候就会生成 N+1 次 commits。但是现在我们合并 pull request 改为 “Squash and merge”,简单说就是把这 N+1 次 commits 合并为 1 次 commits。
这样做的好处是阅读源代码的时候比较方便,历史提交记录中没有多余的 “废话”,哪些功能修改涉及了哪些文件的修改,一清二楚。当然不好的地方也是有的。一个是冲突比之前更容易发生了。另一个是看 Github Contributors 信息的时候,会发现 commits 次数比之前差不多整整少了一个数量级(每个 commit 变成了一个 big commit 了)。
回到我们的变更。在 v0.7.2 中,我们最重要的是发布了一个叫 Auto property 的功能。这个功能在很多场景下会让 Go+ 的代码看起来更优雅,尤其是在 DOM Query 场景。
所谓 DOM Query,是指 DOM 树查询场景。我个人不建议采用 XPath 这种 DSL 文法进行查询,而是直接采用语言自身的语法能力来表达查询,比如:
import "github.com/goplus/gop/ast/goptest"
doc := goptest.Ne