Post

【转】Frontend Roadmap

如有侵权,请联系 yuyao.jiang22@gmail.com 删除。

鱼皮哥的今晚前端路线不是很详细,所以本文诞生了,很长时间没发文了,诸君共勉!

注意本文适合纯前端乃至想要进阶全栈的同学,我会尽量把各个关键点列出

基础阶段

  • HTML:HTML4HTML5,一些新特性要了解,比如contenteditable属性
  • CSS:CSS方面比较关键,分几个节点
    • 第一个阶段:熟悉基本语法到CSS3
    • 第二个阶段:学会运用预处理器如LessSass,学会CSS Module(普通实习够了)
    • 第三个阶段:学会原子化CSS如TailwindCSSUnoCSS(进阶)
    • 第四个阶段:学会运用后处理器PostCSS,运用各个插件(进阶)
  • JavaScript:JavaScript主要为如下
    • 基本语法,操作DOM,BOM等
    • ES6+后的语法
    • 正则表达式
    • 设计模式(发布订阅模式建议学好,很常用,其他如单例模式了解即可)
    • TypeScript:JS的超集,我的建议是在学完js后就先了解好ts的基本语法,对以后有帮助
    • Canvas(可选,有2D和3D)
  • 数据结构和算法:学好这个对后面的源码部分有帮助
    • 数组:队列,链表,哈希表等等
    • 排序:双指针,二分(比较重要)等等
  • 数据交互:这块就是和后端交流最多的地方了,也分阶段
    • (基本)Ajax:学好最基础的交互方法
    • (基本)Axios:Ajax的封装常用库,分几个小阶段
      • 掌握基本用法
      • 进阶就是你用Ajax自己封装出一个简单的Axios
      • 更进一步就是二次封装axios,这点在项目中很多
    • (基本)Fetch:建议掌握
    • (进阶)WebSocket,SSE
    • 必备)网络模式,HTTP协议,TCP三次握手四次挥手等,就是计算机网络部分,部分大公司很看重

提升阶段

  • 包管理工具,目前较多,基本只需了解命令,进阶的话需要了解工作区等概念
    • npm(node官方)
    • cnpm(不推荐了现在)
    • yarn(一般)
    • pnpm(推荐,在速度方面很快且在后续的Monorepo项目中运用多)
  • 工程化:即构建工具一类,目前来说你想学深必须学好这里,如果很急的话暂时可以跳过,但不急的话建议先学懂这块再去学框架会更好
    • Webpack:老牌常用的工具,进阶就是会定制插件
    • Vite:新生代,构建很快,进阶就是会定制插件
    • Gulp:不推荐了
    • EsBuild:可选
    • SWC:可选
    • Babel:让我们使用新语法和 api,babel 会在编译中转为目标环境的支持的语法(进阶必学)
  • 项目管理:Git,学会多提交github代码,这里不多表述
  • 框架:主要分几个
    • React:生态丰富,主要学好hooks,函数式编程已成主流,基本的库如下
      • React-Router:路由
      • Redux:状态管理,也有其替代如Zustand也用的多
      • Antd:UI库,我的建议是学的时候可以自己尝试用原生写一个类似的组件,因为企业中的需求很多不一样,需要自己定制一些UI组件库(后面UI库单独列一下)
      • 进阶的一些如动画库 react-transition-group,可以根据需求寻找
    • Vue:生态丰富,现在Vue2版本虽然停止维护,但还是建议学,很多面试会问Vue2和Vue3的区别
      • Vue-Router:路由
      • Vuex:状态管理,有Pinia替换
    • Angular:老牌,但国内用的少,需要掌握 Rxjs
    • Solid:新生,国内用的少
  • UI组件库单独:
    • PC端
      • Element UI
      • Ant Design
      • IView
    • H5端
      • Vant(用的最多)
      • Muse UI
    • 小程序:(一般来说大前端包括小程序)
      • Vant和iview

进阶阶段

一般来说你学会前面的时候,运用好框架做好项目就可以实习了,这时候只要基础好基本没问题

下面的内容就是进阶部分了,一般来说在实习不会问,源码方面大公司问的多,普通实习的同学了解即可

  • SSR服务器渲染:有利于SEO搜索引擎优化,一般是进阶学习
    • NuxtJS(运用在Vue框架)
    • NextJS(运用在React框架)
  • 小程序:大部分公司都是前端写小程序,所以有必要还是学一下,实习的话一般不需要

    • 原生小程序(不推荐)
    • Uniapp
    • Taro
  • 跨端:如安卓,iOS

    • Uniapp:用的挺多
    • Flutter:这个可选,因为需要学习一门新的语言dart,所以难度较高
    • HTML5 Plus:挺常用的
    • Hybrid:很常用,可以嵌入到原生安卓和ios开发
    • ReactNative:React的跨端,学过react的话上手难度很低,很不错
  • 源码:这块很多问的大多都是框架的底层,很多大公司会问,建议多看网上八股和看源代码

    • Vue:如v2和v3底层实现,diff算法等等
    • React:如fiber架构,hooks的区别等
  • 可视化:可选,一些公司用,技术如Echarts,DataV,Ucharts等

  • 微前端:可选,进阶学,大公司一般有用

    • 乾坤(阿里)
    • macro APP(京东)
    • 无界(腾讯)
  • 服务器:想要进阶的必备

    • Linux的基础
    • Nginx基础,Nginx的插件,lua语言
    • Pm2: 很常用的服务器库,进阶必备
  • 技术方案:各个需求的整合

    • 主题切换:如白天黑夜

    • 数据埋点和服务监控:大公司非常常用!

    • 性能监控和指标分析:作为高级工程师必须考虑好性能问题

    • monorepo:该项目想要用到另一个项目的东西,就需要这个技术了,目前pnpm方案很不错

      很大一部分你所熟知的项目都是该架构,如 React框架

    • 国际化:如果需要发布在外国,就需要该技术的支持了

  • NodeJS:它是贯穿整个项目的基石,各个包各个库都是通过node来运作,作为JavaScript的运行时,它的重要性无可置疑

    • 包管理工具,上面已有概述

    • 核心模块:如process,child_process,net,os,util等

    • Express:前端变全栈的基石

      • Koa:集成框架,流行度高
      • Egg:不推荐,毕竟该项目业务团队都没了
      • Nest:很流行的框架,尤其在国外用的很多
    • Mysql:学会数据库才知道后端,所用技术为mysql2

    • ORM:调用数据库的集成框架

      • Knex:新手上手
      • Prisma:最常用的框架,集成了多种数据库
    • Redis:内存数据结构存储系统,很常用,使用技术为ioredis

    • lua:一种轻量级、高效、可嵌入的脚本语言,在自动化方面很常用

    • serverLess:无服务器架构模式,建议学

    • 爬虫:没想到吧,node也可以做爬虫相关的,所用技术为puppeteer

    • 学无止境,node还有定制脚手架,定制命令行交互,甚至可以做嵌入式!

学无止境阶段

这个阶段一般来说就是选择自己感兴趣的了,学习的路线远不止这些,各类技术层不出穷

我只介绍一部分仅供扩展视野

  • SSG技术:静态站点生成

    • VitePress:很常用的SSG技术框架
    • Next:支持SSG
    • Rspress:字节开源的基于rust的ssg框架
  • 桌面开发:

    • Electron:常用的跨桌面端开发框架
    • NW.js:以前常用的框架
    • Tarui + Rust:新生代构建
  • Web系列:目前来说很多地方都有用,但只有用到的时候才学

    • WebGL:专门做图形绘制和渲染的

      • three.js框架:3D渲染
      • openGL:需要学着色器语言,学习图形学
      • 数学:做图形绘制需要用到数学的向量、矩阵、三角函数等等
    • WebRTC:该技术主要用于音视频通话,浏览器录屏等

    • Web Socket:主要用于聊天室等等

    • Web Worker:允许我们在 js 主线程之外开辟新的 Worker 线程,并将一段 js 脚本运行其中,它赋予了开发者利用 js 操作多线程的能力。

    • Web SQL、IndexDB:存储大量客户端数据,推荐IndexDB

    • Web Components:用于构建可复用用户组件的技术

    • Web Assembly:简称wasm,一种通用字节码技术,它可以将其他编程语言(如 Go、Rust、C/C++ 等)的程序代码编译为可在浏览器环境直接执行的字节码程序。

      想不到吧,浏览器也可以跑C和C++这种代码

    • Web GPU:用于在 Web 应用程序中访问 GPU 的功能,js也能调硬件

    • Web View:跨端中为什么h5可以做呢,就是运用它,可以在原生中通过网络引入h5从而嵌入

    • Web AR:通过传感器等实现智能交互等

    • Web Serial:允许网站从串行设备通过脚本读取和写入的方式微控制器、3D 打印机和其他串行设备等设备进行通信的一套 API,通过它我们就可以和单片机通信了!神奇不!

    • Web Containers:基于wasm的系统,可在浏览器端启动nodejs环境!

  • JavaScript运行时:新生代有bun包子技术

  • 区块链:Web3JS技术

  • 游戏开发:Cocos,虚幻五

  • 嵌入式开发:Ruff js

  • 人工智能:TensorFlow和face-api

    以上知识仅供参考,有可能打错了嘿嘿,学习的路线永无止境,加油吧同志们!

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.