Frank Chimero 发布了一篇新的演讲文章,一切简单的事情又变得困难了。
愿我们所有人有一天都能像 Frank 一样拥有如此出色的自我反省能力和表达能力。 这篇文章内容丰富,请务必阅读。 主题之一是,网页设计和开发似乎存在重复的循环,甚至可以让经验丰富的从业人员跌落谷底
20 年后,我仍然觉得制作 [网站] 并不容易。 我的知识和技能有所进步,但随后情况发生了变化,我所知道的知识有一半变成了累赘。 我做的其他工作中很少出现这种情况。
罪魁祸首就是复杂性。

复杂性是目前人们热议的话题之一。 Kevin Ball 写道 “我们正处于从后端到前端的复杂性大规模快速转变期。” Roneesh 刚刚 分享了他的观点,他讲述了自己如何理清前端复杂性的思路。
我还阅读了许多人对 Frank 文章的回应。 我特别喜欢我们自己的 Robin Rendle 的回应,来自 时事通讯
我认为,这项工作中出现所有这些复杂性和细微差别的原因是,我们不再期望网络只是一系列简单的超链接文档。
作为网络用户,我们的期望已经完全改变。
网站本身就是机器;它们拥有状态、通知、警报和警告、在特定情况下出现的组件、位置感知功能以及 15 年前我们无法实现的复杂性。 越来越多的设备和视窗宽度正在呈现我们的网站,对性能提出了越来越高的要求。
我觉得这很合理。 这正是我在撰写 前端网页开发的未来是什么? 时所想。
人们对网站的要求越来越高。 开发人员被要求快速构建非常复杂的东西,并确保它们运行良好且速度快。
不过,Frank 指出,即使是布局、字体和图像也变得越来越复杂。 我认为其原因是人们对性能的重视(实际上是需求)。 但对复杂性的反应通常包括这些内容,以及其他十几二十项内容。
也许事物变得复杂并非没有原因,而是为了竞争而变得复杂。 网络功能更强大,因此我们要求它做更多的事情。
人们很容易认为复杂性完全来自这种“更多”。 拥抱网络的更多潜力,赶超原生应用,为人们构建更强大的工具。 但我相信事情远比这(咳咳)复杂。 有人曾经告诉我,他认为开发人员工具之所以发展并变得更加复杂,是因为通常不会要求开发人员在业务和产品方面进行创新。 他们根据指示构建东西,因此他们利用自己的智慧来创新他们自己的工具。
不过,这取决于情况。 我举几个个人例子。
我已经运营 CSS-Tricks 超过十年。 它是一个普通的 WordPress 网站,虽然它一直在发展,但与最初几年相比,它并没有变得更加复杂。 我在操作它方面变得更加熟练,部分原因是它变化不大,因此我对这项工作更加得心应手。 大多数情况下,我知道所有旋转齿轮的作用以及在哪里加润滑油。

另一方面,通过 CodePen,我经历了漫长的产品开发过程,从最初的简单开始,最终变得极其复杂。 有时候我们会质疑我们是否过度复杂化了,但大多数情况下,朝着这个方向的每一步都是为了让其他东西变得更简单,讽刺的是。 其中一个例子是添加 React’n’Redux’n’Friends,这在开发流程、构建和部署过程的复杂性方面迈出了一步,但令人难以置信的是,它在代码库的复杂性方面迈出了一步。 这些工具帮助我们构建速度更快、调试更容易、测试更完善,并提供高性能体验,这些只是其中的几个优势。 我们不是为了好玩而添加工具;我们添加工具是因为我们有越来越多的问题需要解决。
并不是每个人都遇到相同的问题。 网络是一个巨大的地方,这是我经常听到的一句话,我很喜欢。 据说,网络上有超过十亿个网站。 确实是一个巨大的地方。
它没有响应式设计。 它没有针对 iPhone 进行优化。 它在视网膜显示屏上看起来很模糊。 它没有使用最新的 HTML5/CSS3 框架。 它没有经过深思熟虑的垂直节奏。 字体没有什么特别之处。 它既不是拟物化的,也不是扁平化的。 它没有自己的网站图标。 它没有原生应用程序或 Twitter 或 Instagram。 它没有使用 AJAX 或 SCRUM 或 node.js 或 Sinatra。 它没有 API 或 RSS 提要或风投融资。 它没有在著名的科技博客上刊登或获奖。
它告诉我当天的汤。

我怀疑它不需要任何额外的复杂性,而且事实上没有人主张它需要额外的复杂性。 这就是为什么“网络是一个巨大的地方”这句话如此有用。 我们谈论复杂性,但一切都是可选的。 十年前一个功能强大(且简单)的网站仍然功能强大且简单。 幸运的是,对于所有相关人员来说,网络迄今为止一直非常重视兼容性。 旧网站不会直接崩溃。
我敢肯定,Frank 文章中关于网页布局的内容会引起许多本网站读者的共鸣。 Frank 将表格布局和网格布局联系起来。 这种观点并不罕见。 例如
别自欺欺人了。 CSS 网格 = <table>,你懂的 / #100daysofcode
— JavaScript 教师 (@js_tut) 2018 年 2 月 13 日
我相信 Frank 了解新网格布局的优势(例如,尝试在媒体查询断点处重新排列一个 <table>
),但他的观点更多地是关于周期,而不是深入的技术分析。
我认为,可以合理地认为,尤其是在 CSS 方面,现在更容易了。 过去的 CSS 让我们为跨浏览器支持而苦恼,在代码中散布供应商前缀,并且(哈哈)向盒模型祈祷。
Eric Meyer 最近出版了一本关于 CSS 知识的厚重书籍,他 表示
CSS 确实比以往任何时候都具有更多功能。 从“潜在需要了解的内容数量”的角度来看,是的,CSS 确实更具挑战性。
但核心原则和机制并不比十年前或二十年前更复杂。 如果有区别,它们现在更容易理解,因为我们不必再为浮动行为或内联布局而绞尽脑汁,只是为了尝试布局页面。
回到开发人员创新他们自己的工具这个话题,另一个需要考虑的是网站构建器对我们行业的影响。 在合适的条件下,我始终推荐网站构建器应用程序。 您的摄影业务需要一个作品集网站吗? 您的面包店需要一个主页吗? 您的定制围巾网站需要一个博客和电子商务网站吗? 假设这是一份低于 10,000 美元的项目,我宁愿看到您使用专业的网站构建器产品,也不愿将其外包给任何要构建完全定制内容的人。 我不想钻牛角尖,但我要说的是,因为我不是唯一这么想的人,低端定制设计和开发工作市场实际上已经消失了。
现在,越来越多的开发人员在内部团队或代理商中工作,为大客户服务。 也就是说,越来越多的人在大型、长期、高度复杂的任务中工作。 因此,他们的想法也随之改变。 规模庞大、复杂的问题需要规模庞大、复杂的解决方案。 这就是人们讨论的内容。 这就是人们写博客的内容。 这就是人们争论的内容。 这是我在参加的许多会议中讨论的话题。
虽然您当然可以使用 index.html
文件和 FTP 来创建简单的汤类网站,但关于此类网站的博客文章越来越少,而且点赞数也越来越少。
向我的朋友兼 ShopTalk Show 联席主持人 Dave Rupert 致敬,他一直在抵制各种形式的复杂性,从我认识他开始就一直如此。 我仍在努力赶上。
虽然在某些情况下,现代工具和框架确实很有帮助,但我确实觉得大多数 Web 应用程序比实际需要复杂得多,也臃肿得多。
虽然有很多 SPA 速度缓慢且臃肿,但广告网络似乎是最糟糕的。
我同意,并想补充以下内容。
并不是 HTML 或 CSS 本身很难,而是所有工具/框架使得它变得很难。 想想看,我们创建了一个工作流程,需要编译代码才能运行,而这种代码本身不需要编译(看看你 SASS、LESS、HAML 等等)。
看看你在电脑上安装什么才能开始开发,是不是有点奇怪?
所有这些炒作火车都在解决不存在的问题,这让我感到担心(例如来自 postcss 的 css-modules)。
作为一名年轻的自由网站开发人员和最近的大学毕业生,我觉得要学习的新东西太多了。
你不需要学习所有东西。
只需专注于完成当前项目所需的技能。 然后继续下一个项目 :)
当我开始学习前端开发时,只有 HTML 和 CSS。 挑战是如何让网站在 IE6 中正确显示。 那真是好时光。 我要感谢 IE6,因为它帮助我更好地学习了 CSS。 后来我转到 JavaScript。 然后我发现了 jQuery、underscore、backbone 这样的优秀库。 后来我发现了强大的 Bootstrap 和 Foundation。 经过多年使用 CSS,Less 和 Sass 出现了。 突然间,一切都变了。 我当时就想——什么是 Compass! 在我搞清楚后,又有了 Grunt,然后是 Gulp,然后是 Webpack。 哇! 工作流程发生了快速的变化。 在 CSS 中,出现了 Flex,然后是 Grid,还有许多其他重大变化。 在 JS 中,出现了 ES6、React、Vue、Angular、Express。 我不会说我感到疲倦。 但是,这已经太多了,而且每天都在变得越来越复杂。
我仍然怀念过去,怀念 old pngfix 和 hoverhtc。 但是,无论如何,我们都必须使用新的技术,不断前进。
我读了弗兰克的文章,很喜欢,这篇文章也很棒,但有一个挥之不去的感觉开始困扰着我,那就是满足感。在这个不断追赶的时代,工具和工作几乎立刻就会过时,我很难想起上次从我的网络工作中获得真正的满足感是什么时候了。我不记得对任何工作感到满意,总可以改进、更新、做得更好,而且永远没有完成的时候。不知道其他人有没有这种感觉,还是只有我是个例外,但我突然意识到了这一点。当我做其他工作时,比如做图形、写字或修房子,完成这些工作后感觉很好,我可以回过头来欣赏它,但这种感觉似乎并没有出现在这些工作中。
我是一个比较新的网络开发者,我的职业生涯是从制作“低端网站”开始的,我自学了 HTML、CSS 和 WordPress,正好赶上网站构建工具的兴起。
前几天我和我的 Angular 大师朋友聊天,他随口说 jQuery 已经“过时了”。我的大脑把它理解为“已经死了”,我想我感受到了那些资深网络专业人士开始抱怨的那种令人沮丧的焦虑。然后我在谷歌上搜索了“React 教程”。我能听到读者们在嘲笑我已经落伍了。但我一直忙于适应新工作,学习这里的工作方式,才过了半年而已!
我最喜欢凯文·鲍尔这篇文章的观点:“…一个人可以使用 Ruby on Rails 作为 API 开发人员,过上不错的生活,而不必把一半的工作时间花在追赶技术潮流上。”嗯,我可以尝试一下。
Chris,这篇文章非常有价值,我完全同意你的观点。虽然我不怀念 spacer.gif 的时代,但业务方希望我们既能跟上“最前沿”的技术,又能保持代码的可持续维护性,这确实是一条难以平衡的绳索。
我认为还有一个值得一提的方面,那就是工程师喜欢做工程。虽然完全可以只使用项目所需的工具,但人们往往不会这样做。自动化东西很有趣。编写真正优雅和有趣的抽象也很有趣。所以,网络开发者,尤其是 JavaScript 的“黑客”和代码共享以及安装新依赖的便利性,会倾向于过度设计。我认为这就是很多“现在东西太复杂了”的情绪来源。
有些事情已经变得更容易了。对于构建一个简单的网站,现在可以使用更少的工具来做更多的事情:一旦你掌握了 CSS 网格、CSS 变量以及一些基本的通过 JS 进行 DOM 操作,你就可以做很多事情,而无需任何框架、jQuery,甚至无需安装 Sass。