其他分享
首页 > 其他分享> > 从后端到前端的转变:如何选择框架?

从后端到前端的转变:如何选择框架?

作者:互联网

从后端到前端的转变:如何选择框架?

从后端到前端的转变:如何选择框架?
作者|Mike Taylor
译者|薛命灯
单页面应用程序(SPA)的异步 JavaScript 为改善 Web 应用程序的用户体验提供了绝佳的机会。CSS 框架(如 Bootstrap)使得开发人员能够在处理结构和行为时快速提供样式。
可惜的是,SPA 和 CSS 框架提供的解决方案都相对复杂,传统上分离的关注点(如 HTML 结构、CSS 风格和 JS 行为)被理所当然地混合在一起,这与前几代人吸取的教训背道而驰。
这种关注点的混合可能会阻碍入门级开发人员和有价值的专家(例如视觉设计、可访问性、搜索引擎优化和国际化)对项目做出有意义的贡献。
除了让少数能够处理所有这些问题的开发人员的成本不断增加之外,它还可能给其他现实世界的业务带来影响,例如诉讼、零增长、无法转向、错失机会、招聘和人员配置问题。
当可维护性问题浮出水面时,一个看似谨慎的技术决策也可能会导致长期的成本。
出现这种趋势的潜在原因是传统后端开发人员向前端转型与 Web 应用程序从服务器端到客户端转变相吻合。为了弥补自己的不足,这些新进入者引入满足自身需求的工具和实践,但没有考虑到整个组织。
如果你只需要 CSS 框架提供的前期价值,建议你不要直接将它们加入到应用程序中。相反,可以将它们作为为特定业务语言而设计的内部 CSS 框架的装饰器。
在 SPA 框架方面,建议采用强制分离关注点的编码实践。这个目标可以通过 React 来实现,但 Vue.js 提供了一种更好的方法,可以与传统的前端开发人员进行更好的协作。

序幕

2014 年,我进入了不列颠哥伦比亚理工学院(BCIT)的网页设计专业。完成学业后,我被学校找去给他们的在线学习课程帮忙。当他们告诉我可以使用 Twitter 的 CSS 框架 Bootstrap 时,我非常兴奋......
但这种兴奋感很快就消失了。在用了它之后,我不禁怀疑为什么我们一定要用它。隐含的 class 名称和<div>标签的自由使用似乎将所有逻辑都塞到 HTML 中。很快,随着其他职能小组疲于应付新的开销成本,开始出现抱怨的声音。
我们团队制作的在线课程最终将会交到商业、媒体、护理、建筑等非技术导师的手中。如果他们无法弄明白,就会致电 Ed-Tech Support。如果 Ed-Tech 无法解决问题,那么这些工作就会重新回到我们的手里。
这是灾难性的,因为我们人手不足。教师们都很紧张,需要支持的问题堆积如山,我们的团队成了学生通过课程的瓶颈。
从后端到前端的转变:如何选择框架?
我们被这些框架的易用性承诺所吸引,但事实证明,这些承诺大都停留在表面。Bootstrap 导致我们付出很多努力却没有获得多少回报。我们掉入了伪装的维护陷阱。
经过几个月的挣扎之后,团队开始着手创建一个基于极简主义的自定义框架(或者更确切地说是剔除 HTML 所有的复杂性)。一个使用在线学习专用术语构建超级干净代码的解决方案。
我们最终得到了一个广受欢迎的产品,尽管它(和我)今天仍然要承受政治小轰炸。除了完全消除了维护问题,还提高了整个在线课程的质量和效率。
最重要的是,我们的团队不再是个瓶颈。
从那以后,我对前端工具及其猖獗的扩散变得更加警惕。我担心的是,采用这些工具是为了它们的实现者的利益,而不是为了整个组织的利益。我不禁想:
很多现代前端工具和实践只是伪装的技术债务吗?

历史

异步 JavaScript
2005 年,谷歌推出谷歌地图,震惊了全球。拖动屏幕,磁贴就会一个接一个进入视野。
从后端到前端的转变:如何选择框架?
对于大多数来说,这是他们第一次体验 AJAX 的强大力量。这是一个“杀手级应用”,它证明了客户端应用有潜力提供非常优秀的用户体验。这是我们朝着现代单页应用程序(SPA)迈进的重要一步。
CSS 框架
2011 年,Twitter 用 Bootstrap 来欢迎我们加入他们的开发风格。
从后端到前端的转变:如何选择框架?
Bootstrap 是第一个被广泛采用的 CSS 框架,降低了前端开发的门槛。突然之间,开发服务器端页面模板的后端开发人员都可以直接将 class 添加到元素上——不需要 CSS。他们获得的能力与传统前端开发人员相当,甚至超过了后者。

症状

div
现如今,CSS 框架几乎无处不在。Bootstrap 似乎一直保持着至高无上的地位。此外,对 Tailwinds 这种可组合框架的支持也在不断增长。
从后端到前端的转变:如何选择框架?
SPA 框架比 CSS 框架更加不稳定。Backbone、Knockout 和 Ember 一直占据了至高无上的地位,直到谷歌 Angular 出现。其他框架来了又走,没有一个能够真正提供价值的飞跃,却都导致了“JavaScript 疲劳”。
然后,Facebook 推出了 React,一个基于可组合组件和快速虚拟 DOM 想法的框架,这就像用马达和颜料搭乐高积木。
在打开开发者工具之前,一切都很好。在打开之后,你会看到一堆杂乱无章的“div”。
从后端到前端的转变:如何选择框架?
关注点的混合
当向 HTML 标记添加 6、7 个隐藏的 class 被定义为“样式化”时,我认为我们已经退了一大步。我们已经超越了表格布局,但也仅仅比内联样式好一些。
现在都鼓励开发人员将 CSS 直接注入到 HTML 的 style 属性中。更糟糕的是,这些标签现在充斥着三元表达式和映射函数,迫使开发人员在 HTML 和 JavaScript 之间来回切换。
对于那些在过去几年内加入 Web 开发的人来说,这个很不正常。
从后端到前端的转变:如何选择框架?

问题

难以捉摸的忍者
2014 年,前端开发人员的成本明显低于后端开发人员。5 年后的今天,前端开发变成全栈式的。
你可能已经注意到,岗位描述中的必备技能清单出现了指数级增长。你的优秀员工被挖走,你想要的候选人被其他公司以更高的工资、更好的福利和更灵活的工作安排所吸引。
但不要误会我的意思,这对一小部分人来说是件好事,但对于那些想要经营中小型企业(SMB)的人来说可能是毁灭性的。
当你的成功策略取决于你招募、训练和留住明星级人物的能力时,你可能会发现自己在原地打转。
专业知识的缺失
忍者实际上并不存在。样样通,洋洋不精。作为一名多面手,我很清楚你不可能什么都很精通。虽然通才会在你的业务中占有一席之地,但不应该让他们单独工作。
如果团队中的每个开发人员都是“JavaScript 忍者”,实际上你是在将自己暴露在盲点之下。毫无疑问,应用程序将会充斥着像<div className="btn" onClick={this.handleClick}>这样的悲惨实例。
你可能会说:“谁在乎呢,只要能运行就可以了”。对于身体健全的人来说可能没什么问题,但那些需要依赖辅助技术的人将完全无法访问你的部分应用程序。
如果你没有道德上的强迫,也许会受到金钱的驱使。你需要认真考虑这样的一个事实:可访问性(A11Y)的疏忽实际上代表着巨大的经济风险,无论是在失去商业机会方面,还是在遭到诉讼威胁方面。
此外,因为急于让应用程序可运行,JavaScript 专家可能会忽略了进行搜索引擎优化(SEO)。这可能会造成很大的伤害,因为持续不断地烧钱可能对任何造成致命打击。如果产品没有吸引力,产品的质量再好都没有用。
敏捷的丧失
像 Bootstrap 和 React 这样的框架很吸引人,因为它们提供了令人难以置信的前期速度。Bootstrap 通常被认为是一种优秀的原型设计工具。不过原型工具天生就能带来低成本、低保真度的产品。
从后端到前端的转变:如何选择框架?
甚至“bootstrap”这个词也成了使用有限资源的代名词。在“good-fast-cheap”的模式中,你选择了 fast 和 cheap——无论这些决定是否是有意识的。换句话说,你选择投资一个充满技术债务的产品。
不相信我说的?考虑一下未来你的造型开始变得过时的情况。新的竞争带来了更吸引人的用户体验,是时候升级你的游戏了,否则你将地位不保。
从后端到前端的转变:如何选择框架?
你开始进行品牌重塑,调整 Bootstrap 无穷无尽的变量列表。经过一阵的折腾,却发现你所希望的改变只有在让轮换所有开发人员之后才能保持一致。
此外,你真正想要的深度定制涉及构建复杂的 CSS 特性,以覆盖 Bootstrap 对选择器的自由使用。
你想要修改布局,但发现每个组件都使用 col 类进行硬编码。可悲的是,每个元素都在以不同的屏幕分辨率争夺空间。一个变更需要其他五个甚至更多的地方也做出修改。
这并没有那么糟糕,除非做出每个变更都需要深入到不可读的结构、样式和行为代码中,这些代码都在 render 函数中,而这些函数要在每个组件文件的末尾才能找到……
几个月后,在喝了 10 磅咖啡之后,你为再次加入竞争做好了准备(但其实那不是真的)……
如果你的目标是短期收购,你可能会不在乎。但请记住,技术的灵活性和敏捷性就是力量。如果产品的长期愿景是一台缓慢倾斜的机器,你可能会发现自己在谈判桌上处于下风。
问题的影响
在飙升的劳动力成本、诉讼风险、错失的商业机会、有限的客户获取以及无法迅速掌控局面之间,看似微不足道甚至明智的技术决策突然之间对现实世界的商业产生了影响。
对于正在处理某些类型应用程序的一些企业来说,我所讨论的一切都在完全掌控之中。然而,其他致力于其他类型应用程序的企业可能会盲目陷入长期的承诺和高维护的噩梦之中。
请记住,与开发相比,软件将在维护中度过大部分时间。通过快速搜索,我找到了以下有关维护成本分配的经验法则:

标签:从后,框架,开发人员,前端,Bootstrap,应用程序,HTML,CSS
来源: https://blog.51cto.com/15057848/2567693