前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
        • 四个时代
          • 黑铁时代 - 插件化
          • 青铜时代 - 模块化
          • 白银时代 - 组件化
          • 黄金时代 - 专业化
        • 资深工程师的下一站
        • 小结
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 以史为鉴:前端开发的四个时代

在前端整体进入组件化开发时代后,手写各种 UI 组件成为了许多前端工程师入门后的第一课。而对于工作了几年的资深工程师来说,手写组件已经不再是问题,但对于如何帮助团队提升整体开发效率以及个人接下来的技术成长方向却开始变得非常迷茫。

以铜为鉴,可以正衣冠;以人为鉴,可以明得失;以史为鉴,可以知兴替。

想要摆脱对未来的迷茫,最好的方法就是向后看,看一路走来前端开发是如何从服务端主导的静态网站一步步发展到现在由客户端主导的单页应用。只有了解了过去前端分别在不同的阶段解决了怎样的问题,才能更好地看清楚未来要向哪里去。

# 四个时代

# 黑铁时代 - 插件化

在前端界大名鼎鼎的 jQuery 诞生于 2006 年,那时还没有 Google Chrome,微软刚刚发布了直到现在还在令许多前端开发者头疼的 IE 7。

jQuery 作为试图抹平不同浏览器之间 API 差异的先锋进入了人们的视野,并在之后很长的一段时间内占据了 Web 开发领域统治性的地位。那时开发一个网站并不需要先配置一个复杂的脚手架,只需要新建一个 HTML 文件即可,开发者们也远未意识到未来前端开发究竟会复杂到什么样的程度,以页面为单位的开发方式在当时看起来并没有什么问题。

那时还没有人提出组件的概念,基于 jQuery 的 UI 组件都被称为 jQuery 插件(plugin),代表着在任何浏览器环境下都可以即插即用。

项目的开发速度完全取决于页面数量的多少及布局的复杂程度,所有的变量都挂载在全局之下,引用的各个插件之间相互独立,这样的开发方式似乎并没有给开发者们留下多少可以优化的空间。

# 青铜时代 - 模块化

随着 Ajax 等技术的普及,客户端 JavaScript 的代码量也越来越大,开发者们开始无法忍受全局变量带来的命名冲突,各个插件之间虽然相互独立但多个插件之间的依赖关系却也变得越来越复杂。这时前端开发对于模块化的需求变得非常强烈,于是便涌现出了 RequireJS 和 Sea.js 两大专注于解决前端模块化问题的类库,以 Sea.js 发布 1.0 正式版的时间为参考,那时是 2011 年 7 月。

解决了命名空间和文件依赖的问题,前端终于可以轻装上阵。配合着日趋成熟的各种 UI 插件库,这时前端项目的开发速度有了第一次质的提升。

摆脱了全局变量的限制,越来越多的前端插件被沉淀了下来。页面数量虽然依然被作为衡量开发量的一个重要指标,但在开发流程中各个模块之间已经开始了协作,开发一个新页面的工作量也不再完全等于页面本身。与此同时,

fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
        • 四个时代
          • 黑铁时代 - 插件化
          • 青铜时代 - 模块化
          • 白银时代 - 组件化
          • 黄金时代 - 专业化
        • 资深工程师的下一站
        • 小结
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏