前端进阶相关

352 阅读3分钟

个人整理内容,仅供参考。

初级学习路线

  1. 建议掌握一定的计算机基础知识,前端涉及到比较多的:计算机网络、数据结构、操作系统、编译原理。
  2. 学习路线:
    • 菜鸟教程等线上教学入门基本的HTML、CSS、JS...
    • 红宝书、你不知道的JS、ruanyifeng的es6教程、CSS世界...
    • FreeCodeCamp做题闯关
    • 了解jQuery、BootStrap
    • 开始接触Vue/React框架,阅读官方文档并尝试造玩具
    • 了解NPM、Webpack,使用一些脚手架进行快速开发(vue-cli、create-react-app)

进阶可能涉及到的知识点

  • 安全:XSS CSRF 中间人攻击 http-only csp 转译用户输入 same-site:lax

  • 协议:HTTP/HTTPS Websocket TCP/IP UDP

  • 加密:base64编码、md5、RSA、SHA256(对称加密、非对称加密)

  • 网络: HTTP/0.X 1.X 2 长连接 管道 Keep-Alive 一个tcp连接可以发起多个http请求 队头阻塞 多路复用 Hpack算法

  • 缓存:强缓存协商缓存 Cache-control:max-age Expires Last-Modified If-Not-Modified-Since Etag If-None-Match Cookie/LocalStorage/SessionStorage

  • DNS:输入URL到页面展示经过的步骤 本地DNS缓存 本地DNS服务器 根服务器 顶级域名服务器

  • 内核JS引擎线程/定时触发器线程/http以部请求线程/GUI渲染线程: 页面渲染流程 重绘 回流 如何提升页面性能(debounce、throttle、按需加载、懒加载、首屏优化、SSR)

  • CSS基础:flex/BFC/预处理语言 布局 动画

  • JS基础: 原型/原型链 构造 继承 this指向 作用域 上下文 变量提升 闭包 es6相关 函数式编程(pure function、 functor、curry\effect)

  • 工程化:webpack配置 treeshaking pluign/loader差别 Mock服务原理 跨域解决方案(本地代理与Nginx反向代理) hash/history路由异同

  • NPM相关:

    1. 版本号语义化
    2. 主版号.次版号.修订号( x.y.z )
    3. 主版号:当你做了不相容的 API 修改,
    4. 次版号:当你做了向下相容的功能性新增,
    5. 修订号:当你做了向下相容的问题修正。
  • 测试:单元测试、e2e测试(Mocha、Chai、puppeteer)

  • 大前端:node(express、koa2、eggjs)、redis、mongodb(非关系型数据库)、mysql(关系型数据库)、docker、k8s、中间层(graphQL)、自动化工具(jenkins+hooks CI/CD)、基础建设系统(监控平台、发布系统、性能分析如利用lighthouse及一系列页面性能指标)、埋点、low-code、webIDE、微前端

  • 算法基础:队列/栈/链表/树(二叉树、二叉搜索树)/图 排序(冒泡、快排、计数排序、堆排序) 原地哈希 双指针 滑窗算法 递归 迭代 背包 动态规划 二分查找 DFS BFS 最短路径 剪枝 贪心

  • 模块化:CMD、AMD、CommonJS、ES6模块化

  • 组件库:如何设计一个组件库、storybook、文档生成

  • 框架基础:Vue/React源码 diff算法 组件通信 路由原理 状态管理(redux/vuex/dva/mobx)新特性(react-hooks、composition-api)

  • 设计模式:观察者 工厂 发布-订阅 建造者 策略 原型模式

  • 架构:RBAC(Role-Based Access Control )基于角色的访问控制RBAC0~3、管理后台类项目设计、技术栈选型的原则

  • 跨平台:Taro、各类小程序平台(一套代码多处使用、抽象层、不同平台编译器、v-dom本质作用)、dart、mpaas(原生开发、热部署、热修复)

  • 跨领域:计算机图形学(Canvas、WebGL、Threejs、数据可视化、VR/AR)、机器学习(tenserflow)

前端涵盖的东西越来越多,需要接触了解的只是也越来越不局限于以往理解的前端工作内容了。做前端给我最大的感受就是你真的需要一个好的领路人,他会让你少走很多弯路,各个阶段你需要学习什么掌握什么,力用在该用的地方上。