zoukankan      html  css  js  c++  java
  • 2019年前端工程师应该学什么?

      参加工作三年多了,最近业务不是很忙,心里反而空落落的。最近参与了一个公司UI库开发,发现自己不懂的东西实在太多。以此为契机吧:

    1. 有必要把近两年的经验知识沉淀一下,与标准和文档进行一一印证,查漏补缺。
    2. 工具不仅要会用,用的好,还要知道原理。
    3. 即便是有些知识暂时用不到,作为一名有点追求的工程师,应该提前做一些知识储备。

      写到此处惊觉自己这两三年在技术上还是成长了的,2016年我需要看着前辈们的分享,大家说有用我就学,听前辈的总没错,2019年我可以根据自己的经验和体会总结出该怎么去系统的学习了,并且轻重缓急自己心里都有底。

      现在返回到标题,前端工程师应该学什么?我写了一个大纲,但里面的学习目标是对自己说的,发出来一是为了跟大家分享一下,共同学习;二是希望你们帮我看看,有没有遗漏下的。

      我的自我定位并没有找准,前端领域太广,到底哪个点最适合自己,并且值得深入钻研?我不知道。但先全学一遍,查漏补缺总没错的。

      我觉得自己仍然,仍将,一直都会是一名前端小学生。

      本文没有劝退效果,请放心阅读。如果你是应届生,找准自己的定位,慢慢来。

    前端工程师

    一、语言基础

    1. HTML相关

    • HTML标准,跟进了解最新的HTML标准更新。
    • HTML标签语义化,嵌套标准等。
    • 可访问性。

    学习目标:重新梳理各标签关系。面向国际、未来的网页结构,符合可访问性规范。

    2. CSS 相关

    • CSS标准,跟进了解最新的CSS标准更新。
    • CSS属性,最新属性等。
    • CSS编程,Houdini。
    • Web Fonts

    学习目标:重新梳理css属性之间的关系,更多的功能尝试使用css实现。掌握关注最新的css发展。

    3. JavaScript相关

    • ECMAScript标准,最新提案等,浏览器DOM,BOM。

    学习目标:熟悉JavaScript的基础API,参数搞清楚。掌握最新的JavaScript语言动向。

    4. Node.js相关

    • Node.js 全局API,原生模块等,了解最新的Node.js动向。

    学习目标:熟悉Node.js基础原生API的作用和使用。为学习服务端开发打下基础。

    5. TypeScript(TS)

    • TS大火,成未来开发趋势。
    • TypeScript的使用。与JavaScript的区别

    学习目标:熟练使用TypeScript。

    6. AssemblyScript(AS)

    • 除了可以将cc++,Rust,Kotlin,Golang等高级语言转译为WebAssembly字节码外,一门全新的语言AS也可以。AS是TS的严格子集,可以一并学习为WebAssembly开发打下基础。
    • AssemblyScript的语法和使用

    学习目标:了解基础语法,可以将AssemblyScript文件编译成.wasm格式。有了它,可以不用去复习C/C++了。

    7. Dart

    • Flutter持续火热,Dart作为开发基础,应该掌握
    • Dart的语法,了解与JavaScript的区别。

    学习目标:熟练使用Dart语言。

    8. Markdown

    • 语法,使用。
    • 写文章,写文档必备

    学习目标:熟练使用Markdown写文章,项目文档等。

    9. Shell脚本

    • 语法,常用函数

    学习目标:可以使用shell编写出比较常见的程序。

    10. SQL语言

    • 常用语法,函数

    学习目标:可以写出常见的CARD查询的sql语句。

    二、计算机基础

    1. 数据结构与算法

    • 经典算法的思路
    • 常用的数据结构

    学习目标: 熟练掌握经典的算数思想,以便应用到业务代码中来,会在合适的场景选择最优的数据结构。

    2. 计算机网络

    • HTTP协议,TCP协议,UDP协议
    • HTTPS,HTTP2
    • DNS
    • WebSocket

    学习目标:掌握并了解这些网络协议的原理,可以用以实践。

    3. 电子计算机组成原理

    • 进制
    • Unicode,ASCII,UTF-8等编码
    • 计算机工作原理

    学习目标: 了解自己的伙伴,为了解“云”主机、虚拟主机奠定基础。

    4. 操作系统

    • 计算机操作系统原理
    • Linux操作系统的使用

    学习目标:了解操作系统是如何工作的,可以自主使用linux操作系统,掌握常用的命令。

    三、进阶

    1. 工程化

    • webpack, rollup
    • babel 使用与原理,可以用来与ECMAScript最新语法一一印证。
    • eslint,stylelint,prettier等代码风格与语法审查工具的使用
    • unit test库或工具的使用
    • sass编程,语法
    • postcss后处理器
    • uglify原理与实现
    • 多人git协作流程
    • gitlab的搭建与使用
    • CI/CD
    • git hooks, husky,commitlint
    • 文档输出,StoryBook,gitDoc,gitbook等
    • npm, lerna
    • yarn
    • markdown render。markdown写的示例可在线执行
    • 模块化,js模块化在ECMAScript和Node.js已经学习过,这里主要是指css模块化的几种方式
    • 数据mock

    学习目标:可以从无到有快速搭建起一个多人协作的现代化前端工程项目,选择合适的工具提高开发效率,保持团队成员代码风格统一,并最大限度的利用工具保障代码质量。

    2. 组件化

    • Vue
    • React
    • WebComponents
    • 浏览器兼容性,canIUse

    学习目标:熟练使用Vue,React进行开发,了解组件化未来趋势WebComponents。掌握数据驱动思想,掌握经典的双向绑定实现原理,阅读源码,深入了解。掌握衍生产物如前端路由,数据管理的设计思想和实现。

    3. 基于Node.js的Web服务开发

    • koa
    • express
    • pm2
    • RESTFul 风格
    • 进程管理
    • 数据持久 MongoDB,mysql等
    • 数据缓存 redis等
    • 长链接服务
    • SSR
    • Docker
    • Nginx配置, openresty
    • 云主机,共享主机等

    学习目标:可以独立完成Web服务的搭建和部署。

    4. 基于Node.js的CLI开发

    • 常用的CLI开发库和原理
    • 比较流行的CLI库的设计思想,实现思路

    学习目标:可以独立开发CLI,当有需求时,可以快速定位到此方案。

    5. 桌面应用开发

    • Electron
    • NW.JS

    学习目标:了解一种基于JavaScript的桌面应用的开发,当有需要时,可以迅速定位到此技术方案。

    6. 移动应用开发

    • Flutter 及相关衍生技术
    • React Native及相关衍生技术
    • PWA
    • WEEX

    学习目标: 了解和掌握。可以使用Flutter或RN开发一个移动APP。了解PWA。

    7. 第三方平台开发

    • 微信小程序
    • 支付宝小程序
    • 百度小程序
    • 快应用
    • wepy
    • mpvue
    • taro

    学习目标:可以快速上手任何一种开发小程序。了解小程序的实现方案。了解业内流行的小程序开发库的实现思路。

    8. 插件开发

    • chrome插件API
    • DevTool扩展
    • VSCode等IDE插件开发

    学习目标:了解插件可以做到什么,当有需要时,可以迅速定位到此方案来。

    9. 浏览器工作原理

    • 排版引擎,浏览器渲染原理
    • 脚本解释引擎,脚本运行原理,v8
    • headless无头浏览器,puppeteer

    学习目标:掌握浏览器工作原理,可以应用在性能优化和自动化测试上。

    10. 性能优化

    • RAIL 模型
    • 硬件基础:帧、帧率、显示器绘图原理
    • 渐进式网页指标(Progressive Web Metrics,简称 PWM’s)
    • 常用的性能优化手段

    学习目标:了解性能优化手段,写出性能优异的Web应用。

    11. Web浏览器安全

    • 浏览器安全策略:同源策略,内容安全策略,沙箱
    • 常见的攻击方式:XSS,CSRF
    • 其它:CRLF攻击, DNS劫持和DNS污染,点击劫持,浏览器插件漏洞攻击等
    • 了解常见对称加密和非对称加密算法

    学习目标:了解常见的Web浏览器攻击手段,避免写出有安全隐患的网站。

    12. Web服务器安全

    • 常见攻击手段:目录遍历,DDOS,重放,密码破解,SQL注入
    • 其它攻击手段:CC攻击,端口渗透

    学习目标:了解常见服务器攻击手段和原理,避免写出有明显漏洞的Web服务。

    13. 监控统计

    • 前端脚本错误监控:错误堆栈形式,实时监控实现方式
    • 前端性能监控:性能指标,实现方案
    • 服务端监控:硬件监控,系统监控,应用监控,网络监控,流量分析,日志监控,安全监控,API监控(可用性、正确性、响应时间),性能监控,业务监控

    学习目标:掌握如何自主建设或搭建开源监控平台。了解一些常见的监控指标的含义。如性能相关的指标TTLB、QPS是什么意思,业务相关的指标PV,UV,CTR等等代表什么。

    14. 可视化

    • canvas进阶
    • svg进阶
    • WebGL基础
    • 计算机图形学
    • 常用库:ECharts, D3等

    学习目标: 这是面向未来的前端技术。了解常见的可视化技术方案,当有需求时可以迅速定位方案。关注并可使用最新的技术开发酷炫的应用,实现数据可视化。

    15. SEO

    • 搜索引擎爬虫原理
    • 搜索引擎权重算法
    • 与SEO相关的网页标签

    学习目标:了解搜索引擎的实现原理以及搜索结果的排序算法。如果是对外的网站,可以自主完成简单的SEO,使网站在搜索引擎中的排名尽可能高些。

    16. 开发与调试

    • 浏览器脚本调试
    • Node.js 调试
    • Chrome Dev Tools进阶使用(环境模拟,渲染性能,内存使用,端点调试,抓包,控制台内置函数等等)
    • IDE
    • 使用帮助开发的插件,如拼写检查等。

    学习目标: 熟练掌握Chrome调试工具的使用,对于脚本开发、性能优化都大有裨益。掌握Node.js服务的调试方法。

    17. UI库

    • UX基础
    • 色彩原理,色光三原色,网页色彩表示方法
    • 网页色彩搭配原则,色彩心理学
    • 常用UI组件的实现
    • 常见UI组件的使用和源码

    学习目标: 具备一定的美感和用户体验关注度,当没有设计师参与时,可以自主设计一些交互方案,了解常见UI组件代表的含义,可以在合适的需求上使用合适的组件。了解常用UI组件的设计与实现思路,可独立开发UI组件库。

    18. WebAssembly

    • 原理
    • 优势
    • 简单应用开发

    学习目标: 了解WebAssembly字节码的开发流程,了解其在浏览器中的运行方式,当需要时,可以快速定位到此方案。

    19. WebRTC

    • 实时通讯方案
    • 了解并进行可简单开发

    学习目标: 了解并关注WebRTC技术,了解其标准,实现原理,当需要时,可以快速定位到此方案。

    20. WebXR

    • 使用JavaScript开发VR和AR
    • 了解WebXR API,跟进草案进程

    学习目标: 了解并关注WebXR技术,了解其标准,实现原理,当需要时,可以快速定位到此方案。

    21. WebAuthn

    • 使用浏览器进行生物鉴权
    • 了解WebAuthn API,并进行简单使用

    学习目标: 了解并关注WebAuthn技术,了解其标准,实现原理,当需要时,可以快速定位到此方案。

      下面是一些补充思考:

      已经确定的事情:未来几年,5G全面商用,网络延时和传输速率将不再限制人类的想象力,万物互联时代随时随地无限触达。

      不确定的事情:可控核聚变技术的掌握。

      试想一下,即便未来做到了万物互联,我们可以进行实时的AR, VR交互,但是如果手机电池技术得不到发展,这些设想无疑于空中楼阁,无法落地。大家都清楚现在浏览器中使用WebGL等技术的耗电程度。假设人类掌握了可控核聚变技术,电量和网络都变得和空气一样无处不在,那才是真正可以放飞想象力的时代。

      大胆预测一下未来前端技术的发展趋势:基于WebAuthn生物鉴权,我们摆脱了密码鉴权的桎梏;基于5G的传输速率,应用安装在本地打开或使用Web打开访问毫无区别;基于WebAssembly,传统客户端可以迁移至Web端,并且拥有超高性能。假设手机电量技术取得了长足的进步,那么WebRTC,WebXR,WebGL必将得到广泛的应用。网站会发生质的变化,传统的DOM结构类的网页将称为历史,AR、VR、实时通讯等沉浸式交互会取代文字和图片,手机上只需要装一个浏览器,就可以做你想做的任何事。

      但未来何时到来尚且不知,立足当下,放眼未来,努力学习吧。

      本文发布于《一个小学生的博客》,转载请注明出处。

      全文完。

  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/dongtianee/p/2019qianduan.html
Copyright © 2011-2022 走看看