Vue.js 是 omakase
这里我借用了 David Heinemeier Hansson 的话。六年前,他写了一篇名为《Rails is omakase》(意为“厨师发办”)的文章,概括了他对美味软件框架的定义:它经过精心策划,并源于丰富的经验。我对 Vue.js 的看法也一样。
以下是 DHH 帖子的摘录:
世界上有很多点菜式的软件环境……我想用这个做我的 ORM,我想用那个做我的模板语言,最后用这个路由库来收尾……这是一种非常流行的软件消费方式。Rails 不是那样的。Rails 是“厨师发办”(omakase)。一个厨师团队挑选食材,设计 API,并根据他们对如何打造一个美味的全栈框架的想法,为你安排用餐顺序。菜单可以既个性化又古怪。它并非旨在迎合世界各地所有人的口味。
我喜欢这个比喻,因为 a) Rails 包括它的所有 API 选择和包袱,在我的整个技术生涯中都给了我很好的帮助,并且 b) 我喜欢一些炸豆腐。
这和 Vue 有什么关系?我相信 Vue 日益增长的人气部分归功于其高度挑剔的维护者,并且其推荐的组件虽然并非符合所有人的口味,但却非常适合大多数项目,无论项目大小。
享用多道菜的餐点
Vue 涵盖了构成完整前端框架的诸多要素。如今,开发者们期望拥有一个强大的 API 来构建组件,并基于虚拟 DOM 快速实现。然而,Vue.js 并不止于此。对于 Vue 开发者来说,该框架及其生态系统提供了即使算不上出色的正交依赖关系实现,也足以解决许多复杂应用最终需要解决的问题。
该产品包括 Vue Router、用于状态管理的 Vuex 以及用于单元测试的 Vue 测试工具。通过 Vue CLI,开发者还可以获得 Webpack 配置中合理的默认设置,用于热模块替换、代码拆分、摇树优化和高效的长期缓存,同时还可以访问 TypeScript、渐进式 Web 应用、ESLint 和多个测试运行器的预配置选项。
知道 Vue 团队支持这些项目并且它们在我的 Vue.js 应用程序中相互补充,我感到非常欣慰。
替换成本略高
所以你可能不同意菜单上的所有内容。没关系!许多默认值可以通过配置或插件轻松更改。想使用 Redux?没问题!类样式的语法?客户永远是对的。不喜欢模板中胡须样式的花括号?你可以更改它!也许你根本无法忍受 Vue 有模板,而更喜欢使用 JavaScript。好吧,这也没关系;添加另一个Babel 插件,你就可以在渲染函数中使用 JSX 编写 Vue 组件,就像 React 一样。
再举个例子,我们来谈谈 Webpack。我认为它是一款非常棒的软件。我花了几个月的时间来学习它的工作原理,甚至在一次会议上就它做过演讲。然而,通常情况下,我们大多数人,包括我自己,在有截止日期的时候,都不想在不同的项目之间维护相同的自定义配置。Vue CLI 的默认配置就足够了。还需要自定义吗?Vue 提供了一个 API 来扩展基础配置,同时使其更容易升级以利用框架支持的改进。此外,你也可以放弃 Webpack,转而使用 Parcel、Rollup 或其他你喜欢的转译器或模块打包器。
一位固执己见的厨师
核心团队在决定将哪些功能和改进纳入框架时始终保持克制。例如,Vue 选择避免将组件的类语法作为默认设置,这引起了广泛讨论,例如GitHub 上的这个 issue。做出这一决定有很多充分的理由,其中之一就是让 Vue 无需构建环境即可运行。作为一项功能,这使得 Vue 的启动和运行变得异常简单,无论是初学者学习框架还是经验丰富的开发人员尝试快速原型。有人说:“它会失败。”我想这还有待观察,但经过几年的争论,这个框架仍在蓬勃发展。
为所有客户提供一致的体验
Scott Molinari 在我之前的一篇文章中发表了这样的评论:
一旦熟练掌握了 API 的使用方法,任何了解 Vue 的人基本上都在做同样的事情。这也意味着对最佳实践的需求被降到最低,并且这两个优势意味着随着时间的推移,认知负荷会降低。也就是说,当你深入研究别人的组件时,你很快就能理解它。这一切反过来意味着 Vue 代码更加健壮,最终质量也会更高。
这一点对于初学者和经验丰富的开发人员都尤为重要。拼凑库的一大弊端是,迁移到新项目或大型代码库中不熟悉的部分可能会更加困难。对于合适的团队来说,这种方法可能会带来回报。在大多数情况下,这些弊端对我来说并不值得,因为我非常重视一致性。
我和已故妻子住在纽约的时候,我们最喜欢的餐厅是Zenkichi。这家餐厅的菜品虽然是日式小酒馆风格,但体验却远不止于此。如果你有机会去布鲁克林的威廉斯堡街区,一定要去尝尝。
它坐落在布鲁克林威廉斯堡东河附近的一栋小楼里,外观木质,没有任何明显的标识,从外面很容易错过。
餐厅内部色调幽暗,充满浪漫气息,手工打造。楼上的每张桌子都像一间小型私人包间,配有拉下的窗帘和小型门铃,方便召唤服务员。
我们每次在那里吃饭,都会选择omakase菜单。我们把所有的决定权都交给了厨师。一开始很难相信别人的判断。放弃控制权确实让人不舒服。然而,这也带来了一些令人愉快的发现。当然,并非所有菜品都合我们的口味。尽管如此,我们仍然喜欢这次体验。
在 Web 开发中,厨师菜单并非只限于特殊场合。有了 Vue.js,我们拥有了一个框架,它提供了构建出色用户界面所需的所有要素。它还能让我们根据个人喜好轻松替换菜单项。看来鱼与熊掌兼得?这也是我觉得 Vue.js 如此令人满意的另一个原因。
你喜欢这篇文章吗?订阅我在rossta.net上的新闻邮件,我会不定期给你发送关于使用 Vue.js 进行 Web 开发的电子邮件。
最初发表于rossta.net。
鏂囩珷鏉ユ簮锛�https://dev.to/rossta/vuejs-is-omakase-aej