因为对前端很感兴趣, 所以在尝试学习前端, 但是在很多社区, 以及相关的技术群中, 看到很多前辈在当下, 对前端有些悲观的态度.
久而久之自己也疑惑这个问题, 然后我简单的翻阅了一下前端的历史, 总结成为这篇文章, 作为自己答案.
简单的历史
1990年: Tim Berners-Lee制定了 HTML 标准, 在这本版本中提出了18(也有说是21个)个标签, 但hypertext术语由Ted Nelson创造, 此时还没有css, 而HTML也是基于已经存在的SGML进行拓展
1991年: Tim Berners-Lee 向Hypertext提交了万维网项目提案, 但是被拒绝了, 说这个项目太过于简单化
1993年: IETF发布了第一版HTML草案, 也就是发布了伯纳斯·李和丹·康纳利撰写的首份 HTML 规范提案<超文本标记语言(HTML)>互联网草案
1994年: IETF在HTML 和 HTML 草案到期后, 其成立了一个 HTML 工作组
1994年: Hakon Wium Lie首次提出了 CSS, 这位前辈也是和Tim Berners-Lee在CERN的同事, 但此时CSS还没有发表具体的标准, 在这时期, 也有其他几种针对HTML的样式语言
1995年: IETF该工作组完成了 HTML 2.0, 同年Netscape推出了LiveScript(后改名为JavaScript), 同年IE也提供了自己的浏览器解释器 JScript
1996年: 发布了 W3C 的第一个 CSS 推荐标准(CSS1), 而在IETF的主持下, HTML的规范推进并不理想, 在该年, HTML 规范由万维网联盟(W3C)负责维护, 商业软件供应商(例如浏览器开发厂商)也参与其中 此时IE对于CSS知识提供了有限支持, 而在这一年 Netscape 将 JavaScript 提交给 Ecma 国际组织, 希望作为未来浏览器脚本语言中都遵循的标准
1997年: W3C发布第一个HTML的标准, 此时HTML进入3.2. 在这个版本中, HTML使用了很多视觉标签, 我们的网页开发者基于这些视觉标签进行布局, 此时W3C也发布了CSS2
此时IE4和Netscape依旧对CSS的支持有限, 而且不完整. 其次在这一年 ECMA 推出了ECMAScript 语言规范第一个版本 但JScript在后期并没有遵循, 导致ECMAScript5的版本直到2009年, 各大厂商 + ECMA组织才一起再次制定
1998年: W3C发布HTML4, 在这个版本中, 规定使用css作为html的样式语言, 但是很多前辈在基于早期的样式标签, 以及通过透明图片设置宽高也能实现我们需要的布局
其次也可以通过HTML中的Table标签实现我们需要的布局, 但毫无疑问这与我们现在对于HTML的认识可能不同的, 因为我们现在认为HTML是作为内容的结构, 而CSS负责我们的布局以及内容样式
其次为何css没有发展起来, 因为此时主流浏览器(IE, Netscape)还没有支持, 它们各自提供了很多具有视觉效果的HTML标签 css3从1998年开始, 但是后续没有这个版本, 而是将css中每个部分作为单独的标准进行推进, 例如box-model, background 而ECMA发布了ECMAScript2
1999年: 发布了 ECMAScript 3
2000年: IE5 for Macintosh支持了CSS1的99%的特性. 支持部分CSS2. 网页设计开始正式使用 HTML + CSS, 而在这些年中IE占据了市场的主导地位
2001 ~ 2008年: Mozilla 加入了 ECMA 国际组织, 而IE因为市场份额太高, 使得JScript几乎成为了事实标准, 客户端脚本技术发展开始缓慢.
到了2004年,Mozilla发布了Firefox, 从IE中获取了大量的市场份额.但 IE 对 CSS3 或者说CSS2后期各模块的新特性支持进展缓慢, 使得很多开发者为了兼容IE增加了开发时间和复杂性.
到了2005年, 一位前辈创造了Ajax这一术语, 在此之前, 我们大部分的网页是没有实现网页局部刷新的
每次都是发送一个请求后, 服务端返回一个新的html页面(当然基于iframe可以实现异步加载), 而在1999年IE(是outlook web access小组)提供XMLHttpRequest原型, 同年也融入IE中
后来XMLHttpRequest也被Firefox, Google中, 但一项技术的出现, 到他的流行需要时间. 但在这段时间, 我们的前辈们基于JS + Ajax + HTML + CSS 帮我们撑起了很多的开发 例如我们 现在也经常听见的jQuery. 而开源的Firefox也促使这社区的繁荣.
到了2007年: Steve Jobs发布了iphone, 一款 iPod, 一部手机. 还有一台互联网通讯设备, 这也就是iphone我们的网页开始需要为移动端进行适配.
到了2008年, Chrome推出, 它的 V8 JavaScript 引擎比竞争对手的速度更快, 其次市面上的IE也被其他浏览器抢占了很多的时长, 于是2009年, 开发者的反馈, 开源社区的推荐, ECMA的推进, 浏览器市场的竞争, 该年月底发布 ECMAScript 5 标准
而网页设计相较于我们的常规的平面设计, 例如印刷, 海报, 等它存在一些特殊性, 例如它的宽高是不确定的, 他可以使用动画, 用户的屏幕是存在多种多样的, 分辨率是不确定的.
于是很多开发者, 他们限定了网页设计的宽度, 例如 960px, 我们不喜欢变化!
我们不喜欢违背过去生活所产生的习惯, 为了激活我么你的css的设计, 在2003年, 网上也有了一个 术语css的开发资源: css zen graden(css禅意花园)
2009年: Ryan Dahl创建了 Node.js,这极大地推动了JavaScript在网络浏览器之外的应用. 它拥有世界上包管理器中最多的模块(npm)
变化
从HTML, css, js的发展, 从浏览器的发展, 从网页设计工具的发展, 我们的前端开发变化了很多很多
从基于HTML的视觉标签进行布局(1px透明像素, table), 到HTML + CSS进行布局(css zen graden), 从float, table, flex, grid, clippath 我们可以实现各种不规则的布局, 从为了兼容不同的浏览器, 到现在普遍遵循的css规范,
从网页整体刷新, 到xmlHttpRequest提出, 到AJAX技术栈的流行, 到网页局部刷新成为常识.
从table布局, 到专项css, 从响应式布局, 到现在提出的 渐进增强网页
从 homestead, 到 wordpress, 到webflow, 到低代码, 到 ai ide(cursor, trae) 在每个工具的提出都会带来 "前端已死"(End of Front End Developer)
从 js, jscript, 然后, 我们的前辈们构建起的 chromium, node, electron, CEF, react native, wasm
从 浏览器的世界, 我们前辈给我们搭建了 后端的世界, 移动端的世界, 桌面端的世界. 基于我们没有变化过的 HTML, CSS, JS 我们可以探究互联网上目前绝大部分领域
无可否认, 因为历史遗留问题, 我们还存在很多 "糟糕" 的代码, 但这些前辈们终究是为我们撑起了整个互联网的世界.
偶然翻到一位前辈(黄玄前辈) 在掘金的技术分享中说过的
"或许形式会不同, 但前端作为人与机器纽带的本质是永恒的"
我们终究是接触用户的第一个层级, 用户终究会使用各种终端和我们的程序进行交互 从pc, 到手机, 到手表, 等各种终端设备.
The goal of software development is to create technical excellence, not for any individual to be better and "win" against the others. - from ffmpeg.org/community.h… 软件开发的目标在于实现技术卓越,而非让任何个人变得更强并“胜过”他人
我们抗拒变化, 因为习惯, 因为水流从高到低, 时钟是顺时行走, 我们过去一直都是这么做的, 但在超过地球之外, 他们也是如此吗? 1 + 1 = 2?
或许行为改变很难, 但如果我们坦然接受, 并不抱怨, 我们换个角度, 我们可以快速借助AI帮助学习更多的知识了, 我们可以更快上手一些知识了.
我们可以借助AI帮助我们生成更多可重复性很高的代码了.
AI会减少我们很多的开发量, 这意味着我们可能原先一天的内容, 现在可能一小时完成, 这会带来一个问题,
在经济学中偶然听过一个理 论 Jevons paradox 杰文斯悖论
In economics, the Jevons paradox (/ˈdʒɛvənz/; sometimes Jevons effect) occurs when technological advancements make a resource more efficient to use (thereby reducing the amount needed for a single application); however, as the cost of using the resource drops, if the price is highly elastic, this results in overall demand increases causing total resource consumption to rise. Governments have typically expected efficiency gains to lower resource consumption, rather than anticipating possible increases due to the Jevons paradox
" 当技术进步使得某种资源的使用效率提高(从而减少了单次应用所需的资源量);然而,如果使用该资源的成本下降,且价格具有高度弹性,这会导致总体需求增加,从而使资源的总消耗量上升 "
当然, 我不是经济学的专业人士, 只是偶然听到这个理论, 如果将这句话套用在当下,
我们或许可以理解为 前端开发者 基于AI工具, 我们可以减少开发时间, 等于提高了资源使用率, 这样公司发现前端开发效率更高, 可能就会增加对前端的需求, 更新网站界面 提高用户体验, 从而使前端总量需求提高, 从而需要更多开发者.
前端的世界发生了太多的变化, 我们也接受了太多的变化, 但前端开发者消失了吗?
我觉得没有, 我们依旧是基于 HTML, CSS, JS构建我们的前端世界. 或许在未来其中的技术会被替代.
但它新的技术的出现, 依旧需要开发者去基于这些技术实现对应的功能, 从而反向喂给 AI, AI 生成对应的逻辑.
其实AI对行业的冲击远远不是只有前端, 还有设计, 还有影视, 那他们的从业人员消失了吗? 我想与其悲观看待, 不如积极接纳, 然后使用, 适应, 改变.
我们的手机系统, 从塞班, 到安卓, 那当年开发塞班app的那些开发者就没有从事开发了吗?
来自 resilient web design一段话:
I wish I could predict the future. The only thing that I can predict for sure is that things are going to change.
我希望我能预测未来, 我能肯定预测到的唯一一件事就是, 情况会发生变化
I don’t know what kind of devices people will be using on the web. I don’t know what kind of software people will be using on the web. 我不知道人们在网上会使用什么样的设备. 我不知道人们在网上会使用什么样的软件.
The future, like the web, is unknown. 未来, 就像网络一样, 是未知的.
The future, like the web, will be written by you. 未来, 就像网络一样, 将由你来书写.
作为一个新人, 对前端感兴趣的人, 还在学习前端的新人, 对前端目前是这样认识的, 可能会有错误, 可能会有很多的错误, 一起加油 : )
参考
我所查阅的一些文档:
-
据说是第一版的html文档: info.cern.ch/hypertext/W… (WWW parsers should ignore tags which they do not understand, and ignore attributes which they do not understand of tags which they do understand. 浏览器解析时会忽略其无法理解的标签, 这为前端开发者使用一些新规范中的内容提供了莫大的帮助)
-
wiki中html的介绍: en.wikipedia.org/wiki/HTML
-
wiki中css的介绍: en.wikipedia.org/wiki/CSS
-
ie对css的支持: web.archive.org/web/2010112…
-
html5标准中文版: htmlspecs.com/#background
-
css标准中文版:htmlspecs.com/css/css-202…
-
首次提出ajax数据的文档: www.semanticscholar.org/paper/Ajax%…
-
Ajax: A New Approach to Web Application的中文翻译版: www.cnblogs.com/fuzhongqing…
-
黄玄前辈在掘金的技术演讲: www.bilibili.com/video/BV1uz…
-
弹性网络设计: resilientwebdesign.com/