关于前端开发:起源、架构、变迁、前端应用领域、语言、框架、工具、前端学习路线 关于 Web 标准:标准组织、W3C 及 Ecma 会员、W3C 规范制定流程、如何参与标准制定 一些问题和回答
在 1989 年,在 CERN 工作的 Tim Berners-Lee 写了一个关于信息管理的建议《Informational Management: A Proposal》,提及基于超文本来构建文档网络的想法,这份文档被公认为 Web 的起源。
直到现在,很多人也不是很清楚 “上网” 指的是上什么网。“上网” 实际上指的就是接入 Internet,而我们平时使用搜索引擎、访问网页、使用网络聊天应用都是指使用 Web。前者相当于一个高速公路,提供各种底层的数据传输协议、架构等,后者相当于是一个非常大的物流公司,提供具体服务,比如说:在浏览器中输入网址、访问网页,实际上就是访问远程服务器的 80(HTTP)/443(HTPPS) 端口,而还有其他的服务(比如收发邮件)则使用的是另外的对应端口。
1989 年诞生时,Web 由三种技术构成:HTML、HTTP、URL,而 CSS 和 JavaScript 是几年之后(1995 年前后)才出现的。
HTML 是超文本标记语言,用来做 Document;
HTTP 是超文本传输协议,用来传输 Document,在 TCP/IP 之上,封装的是 HTTP 这个资源的数据包;
URL 是统一资源定位符,在 HTTP 的上下文中,一般也被称为网址,在浏览器的地址栏中显示,例如 https://developer.mozilla.org
。
客户端(浏览器)因为是直接面向用户,所以就是前端,而服务器因为用户不能直接接触到,所以就成了后端。
在这个时代中,浏览器更像是一个阅读器,页面的更新必须依靠浏览器的刷新(重新向服务器发送一次请求,获取 HTML)进行页面的整体替换。
这个时代的标志就是 Ajax,浏览器可以不用刷新网页,通过 JS 的对象在后台就能向服务器发送请求,局部更新页面,实现了 Web 从一个简单的页面到 Web App 的跨越。
这个时代是从 iPhone 的发布开始的,Web 逐渐开始跨向移动领域,用户体验越来越被重视,前端开始真正变成一个独立的工种(职业),得益于 Node.js 的问世,前端工程师也能够处理后端的工作了,为前端的规模化、敏捷化打下了基础
Web 浏览器主要分为:
服务器技术主要有:
终端和跨端技术主要有:
浏览器语言有:
常用框架和工具有:Node.js、koa、React、Vue、TypeScript、git、Babel、webpack、esbuild 等 *(在学习一个框架 / 工具时,可以去了解一下其作者,写这个框架 / 工具的初衷是什么,这样可以帮助更好的理解和学习)*
推荐两篇文章:
路线图推荐:
学习永无止境,翻滚吧后浪!
Explainer demo
Find the right community/group
Web IDL for APIs link
Step-by-step algorithms
GitHub, Markdown, respec, bikeshed, etc.
Get an early review w3ctag/design-reviews
Write web-platform-tests (WPT) tests
Championing a proposal at TC39
How to write a good explainer
Presenting a Proposal to TC39
Reading a proposal draft
Stage 3 Proposal Reviews
How to experiment with a proposal before Stage 4
Implementing and shipping TC39 proposals
W3C Technical Plenary / Advisory Committee Meetings Week(简称 TPAC) 是 W3C 一年一度的全球技术大会,汇集 W3C 各工作小组成员 (工作组、兴趣组、社区组等)、咨询委员会 (AB)、技术架构组 (TAG)、会员单位代表 (AC)、公众特邀专家以及全球社区成员,通过为期 1-2 周的集中互动交流,深入探讨未来开放 Web 平台技术方向。
加入会员对公司来说,有几个方面的好处:
在大公司的项目里,基本见不到用 jQuery 的了
对于技术发展不是那么快的公司,项目代码里可能还会用到 jQuery
之前流行的原因是:早期很多浏览器的实现不一致,jQuery 解决了跨浏览器的兼容问题
但是现在浏览器的发展趋同化,浏览器的多样性实际上在减少,兼容性的问题越来越少,jQuery 就没那么重要了;相反,组件式开发框架 React、Vue 和函数式实用工具库变得比较受欢迎
所以 jQuery 没有必要花太多时间去学,如果感兴趣可以学一学
由于前端工程师学习 Node.js 比较简单,所以应用还是比较广泛的,比如 ToB 和 ToD:
框架和 js 的学习是相辅相成的,框架实际上是一种更高层次的抽象,对框架的实践 & 运用也能使你对 js 架构、设计模式层面有更深入的理解
有,元宇宙平台可以给前端提供 API 接口,从而使开发者可以在元宇宙平台中开发丰富多样的应用
WebAssembly 实际上是两种开发生态的融合,为了解决前端的计算量 & 性能问题,JavaScript 的性能是毫秒级的,Rust/Go 等原生语言的性能是纳秒级的
任务层面:前端开发者可以了解怎么把原生的应用转换成 WebAssembly,以及其完善、扩展
提高层面:作为前端开发者也应该了解底层的系统编程语言,Rust/Go 都是很值得去学习的,以便了解系统底层原理
低代码平台对前端来说是种机遇,可以为前端提供很多工作岗位,但同时也是一种挑战,需要很多新的算法、技术解决方案
WebAssembly 在大公司应用的还是很多的,大公司对于解决应用性能的需求是十分迫切的,且也有相应的资源进行人才扩招和项目落地
在规模不是太大的公司,对性能的需求不是特别高,就不会优先考虑
很大。建议看一下 esbuild 的官网,esbuild 使用 go 语言编写,而 webpack 使用 Node.js 编写,其性能差异可达百倍。