菜鸟到大神的上位历程,即学即用走向人生巅峰

  技能

  前端的技能其实除了JavaScript(包括NodeJS)、HTML、CSS以外,还有很多。其实前端的技能树很大,这里只能列一些我开发中见到的说一说

  语言基础

  JavaScript:

  作用域链、闭包、运行时上下文、this

  原型链、继承

  NodeJS基础和常用API

  CSS:

  选择器

  浏览器兼容性及常见的hack处理

  CSS布局的方式和原理(盒子模型、BFC、IFC等等)

  CSS 3,如animation、gradient、等等

  HTML:

  语义化标签

  进阶

  JavaScript:

  异步控制(Promise、ES6 generator、Async)

  模块化的开发方式(AMD、CMD、KMD等等)

  JavaScript解释器的一些相关知识

  异步IO实现

  垃圾回 收

  事件队列

  常用框架使用及其原理

  jQuery:基于选择器的框架,但个人认为不能叫框架,应该算工具库,因为不具备模块加载机制,其中源码很适合阅读钻研

  AngularJS/Avalon等MVVM框架:着重理解MVVM模式本身的理念和双向绑定的实现,如何解耦

  underscore:优秀的工具库,方便的理解常用工具代码片段的实现

  polymer/React: 组件化开发,面向未来,理解组件化开发的原理

  CSS和HTML:主要是CSS3的特性和HTML5的特性,以及浏览器处理的流程和绘制原理

  DOM树、CSSOM树、渲染树的构建流程及页面渲染的过程

  解析HTML、CSS、JavaScript时造成的阻塞

  HTML5相关

  SVG及矢量图原理

  Canvas开发及动画原理(帧动画)

  Video和Audio

  flex box布局方式

  icon fonts的使用

  常用NodeJs的package:

  koa

  express

  underscore

  async

  gulp

  grunt

  connect

  request

  一些理念:

  响应式Web

  优雅降级、渐进增强

  dont make me think

  网页可用性、可访问性、其中的意义

  SEO搜索引擎优化,了解搜索引擎的原理

  SPA的好处和问题

  性能优化:

  减少请求数量(sprite、combo)

  善用缓存(application cache、http缓存、CDN、localstorage、sessionstorage,备忘录模式)

  减少选择器消耗(从右到左),减少DOM操作(DOM和JavaScript解释器的分离)

  CSS的回流与重绘

  项目

  版本管理:首推Git,用过Git都不会想用SVN了

  Git:本地版本管理的机制

  SVN:远程中心的版本管理机制

  自动化构建:主要就是less、模板、coffee等的预处理以及对代码压缩和合并

  Gulp:基于流构建,速度快、模块质量好

  Grunt:独立任务构建,速度慢,配置蛋疼,灵活性高

  预处理和模板引擎

  less:语法简单,但功能有限

  jade、ejs、velocity等模板引擎,各有各的长处

  coffee:python工程师最爱,我没用过

  环境搭建:主要是将线上代码映射到本地,并在本地启动一个demo服务器,至于模拟数据的mock,见仁见智了

  本地代理:ihosts

  自动化测试:在业务较为稳定的情况下,可以通过自动化测试来减少测试的事件,但需求较多的时候,维护测试用例的成本会很高,可能用自动化测试会起到反效果

  jasmine

  mocha

  生态系统

  npm

  bower

  spm

  搭建一个属于自己的博客

  git pages

  hexo

  jekyll

  未来

  Web Componets:面向未来的组件化开发方式

  HTML模板

  Shadow DOM

  Custom Elements

  HTML Import

  移动端Native开发:这也是需要了解的,以后前端工程师会经常地和webview打交道,也要了解native开发

  其他

  有些东西不是考敲码就能弄好的,我参与实习的时候感受到了很多,这些是我遇到的也是我感觉自己做的不好的地方

  对于业务的思考:我个人这方面非常欠缺,所以放在最前面,在敲码前要多思考业务

  交流和沟通能力:这个非常重要,前端同时需要与项目经理、产品、交互、后台打交道,沟通不善会导致很多无用功,延缓项目

  知识管理、时间管理:input和output的平衡,output是最好的input。如何做好分享,参与社区,做好交流,作好记录

  对新技术的渴望,以及敢于尝试