这是我参与「第四届青训营 」笔记创作活动的第 8 天。 (第八篇笔记)
本篇笔记记录 Web 标准与前端开发相关的内容,主要包括前端开发的 起源、架构、变迁;前端应用的领域;前端的语言、框架、工具;前端学习的路线图;以及 Web 的各种标准。
前端开发
起源(时代发展)架构变迁
在前端发展中,可以不同阶段分为三个时代:
-
只读时代(1989~2004):
- 主要技术: HTML / CSS / JavaScript;
- 特点:单向发布;静态只读;链接跳转;刷新页面;表格对齐元素;CGI;
- 表现为:展示数据、内容的时代。
-
体验时代(2005~2010):
- 主要技术:AJAX/ Web API / jQuery;
- 特点(关键词):动态交互;社交媒体;用户可产生内容;单页应用;jQuery;YUI;
- 表现为:用户可以提交内容;可以与网络应用交互;
-
敏捷时代(2010~ now)
- 主要技术:Fetch / Node.JavaScript / Webpack;
- 特点(关键词):模块化;组件化;转译;打包;框架(React、Vue)
- 表现为:各种 Web 技术不断涌现,使得开发网络应用更加敏捷;
应用领域
根据面向不同的群体,有不同的领域:
- To Business
- To Customer
- To Developer
根据不同的运营环境:
-
浏览器:包括桌面浏览器和移动浏览器,以及移动 App 里的 Web View,都属于浏览器直接渲染的 Web 应用;
- 桌面浏览器包括:Chrome、Edge、FireFox、Opera、Safari;
- 移动浏览器主要是 Chrome 和 Safari。
- 小程序提供商定制的浏览器引擎。
前端不仅包括要开发在浏览器和 Web View 运行的网页,还要开发在小程序中运行的小程序 Web 应用。
-
服务器:
- 目前主要还是 Node.js。npm 包管理pintail为世界最大的程序包管理平台。
- 还有 ExpressJS、koa 等 Web 开发框架生态。
- Deno 新 JavaScript 开发运行环境。也是 Node.js 的作者 Ryan Dahl 开发的作品。
不同的终端和跨端:
-
命令行/终端:
- Webpack CLI
- Babel CLI
- Vue CLI
- React CLI
-
桌面跨端:
- Electron
- NW.js
-
移动跨端:
- React Native
- Flutter
语言、框架、工具
前端必须掌握的三门语言:
- HTML 负责构建页面;
- CSS 为页面提供装饰;
- JavaScript 赋予页面的动态和交互;
更多的前端工具以及其作者:
- Node.js - Ryan Dahl
- koa - TJ Holowaychuk
- React - Jordon Walke
- Vue - 尤雨溪
- git - Linus Tovalds
- Babel - Sebastian Mckenzie
- webpack - Toblas Koppers
- esbuild - Even Wallace
前端离不开前端代码运行的环境:浏览器、网络和服务器。
- 要了解浏览器的工作原理:w3c/20190603_cncuckoo_深入理解现代浏览器.md at master · 75team/w3c (github.com)
- HTTP 原理: An overview of HTTP - HTTP | MDN (mozilla.org)
- Web 服务器能力相关的内容包括:本地文件系统和文件操作;网络和管道 API;套接口;子进程等;
前端学习路线:Frontend Developer Roadmap: Learn to become a modern frontend developer
前端 Web 标准
可以从三个方面了解:
- Web 标准组织;
- W3C 和 ECMA 的情况;
- W3C、ECMA 等规范的制定流程;
Web 标准组织
- W3C
- ECMA
- WHATWG
- IETF
关于 Web 规范的制定流程
W3C 规范制定流程:
Source / W3C Process Document
- WD: 工作草案 Working Draft
- CR:候选推荐 Candidate Recommendation
- PR:提议推荐 Proposed Recommendation
- REC:推荐标准 Recommendation(W3C 标准最终形态,但不是强制性标准)
W3C 的规范从草案到发布涉及下列方面:
- Explainer:建议说明文档;例如标准化某个领域的 API ,要先写一个简易文档。
- Find the right community / group:找到合适的社区和小组,将简易文档提交到该社区和小组充分讨论;
- Web IDL for APIs :IDL(Interface Description Language,接口描述语言),用于描述 API 的一种标准方式;(🌰 Web IDL Standard (whatwg.org) )
- Step-by-step algorithms:分步算法,就是要把算法步骤描述清楚;
- GitHub, Markdown, respec, bikeshed, etc。工具;
- Get an early review w3ctag/design-review:事先请TAG(Technical Architecture Group,技术架构组)进行设计评审;
- Write web-platform-tests (WPT) tests:编写WPT测试。
ECMA TC39 规范制定流程:
负责制定 ECMAScript 规范的是 TC39,(TC是Technial Committee,技术委员会的意思):
- Stage 0:strawman,以任何形式提交的想法;
- Stage 1:proposal,提案,特性的正式建议;
- Stage 2:draft,草案,具有语法和语义的描述;
- Stage 3:candidate,候选,规范文本完备,有了两个实现 ;
- Stage 4:finished,完成,可以成为标准,通过单元测试
Web 标准会议
- W3C 会议
- ECMA 会议
🔗 贴上相关的链接:
W3C:
- 官网:www.w3.org
- Github:github.com/w3c
- 规范查询:www.w3.org/TR
- 全球会员:www.w3.org/Consortium/…
- 中国会员:www.chinaw3c.org/china-membe…
- 标准流程:www.w3.org/2020/Proces…
- 研讨会:www.w3.org/participate…
Ecma TC39
- 官网:www.ecma-international.org
- TC39:tc39.es
- Github:github.com/tc39
- Discourse:es.discourse.group
- AM会员:www.ecma-international.org/about-ecma/…
- Contributing to ECMAScript:github.com/tc39/ecma26…
- 各TC会议日程:www.ecma-international.org/about-ecma/…
WHATWG
- 官网:whatwg.org/
- Github:github.com/whatwg
- 规范查询:spec.whatwg.org/
IETF
- 官网:www.ietf.org/
- Github:github.com/ietf