我只是需要一个能够支持响应式状态、能够自动渲染模版的框架,Vue 刚好满足了这一点。
与大家不同,虽然我用 Vue,但几乎没有 Vue 风格,至少在 script 里没有,几乎看不到 ref、reactive、effect、hooks 等等。
所以我会说,我的代码是框架无关的,只是模版 UI 使用了 Vue 来渲染。作为模版渲染,Vue 表现得真不错,目前为止,我觉得也只有 Vue 能做到这一点。
我之所以能这样玩儿,都要归功于 Vue 提供的 reactive。我知道有很多人更喜欢用 ref,但选择 reactive 自然有我的理由。
因为 reactive 的作用是包装(代理)一个对象,包装之后依然可以像使用原始对象一样,这就意味着 reactive 像空气一样,在与 Vue 结合时,我的代码几乎无需做任何改变,使用方式也无需做任何改变,就好像根本没有 Vue 一样。在经过 reactive 包装之后,一个普通对象就支持了响应式模版渲染,这正是我想要的(也仅是我想要的)。我根本没必要学习和使用更多 Vue 知识,但我的代码就已经能够在 Vue 中正常运行,所以这种体验非常好。
正因如此,我的代码也能够无缝从 Vue2 升级到 Vue3,我已经使用升级工具自动升级了七八个项目了,需要手工介入的很少。
除了 Vue 之外,其他的框架很难像 reactive 一样实现响应式。所以采用其他框架的话,就必须得按照所选框架的规则和约束去写代码,才能支持响应式模版渲染,太不自由,太不灵活了。虽然很多人诟病 Vue 心智负担大、语法多,但从长远来看,我认为 Vue 的可玩性更好,能走得更远。
无论初衷为何,但 Vue 设计哲学得到的结果是,它不约束我们写代码的方式,而是提供了一组 API 让我们可以自由发挥,我甚至可以使用插件把这组 API 无缝融入我的老代码中,把 Vue 的侵入性做到最小,让我的代码没有 Vue 风格。所以若有某个框架 XXX 也能像 Vue 一样,我是不是也可以让我的代码也没有 XXX 风格呢?
所以,我认为 Vue 的设计哲学更好。我们不应该只看到如何用 Vue 写代码,而是应该看到 Vue 让我们能怎样写代码。
Show you the code. 代码示例