现阶段的我(两年前端开发经验)对各个技术栈该理解到什么程度

学习前端两年了,感受有点迷茫,学习没有重心,感受什么都会点,又感受本身什么都不会,真的有点难受,但愿各路大佬给我提点建议。javascript

javascipt

不太好说,调用堆栈,this的工做原理.做用域(函数做用域, 块级做用域和词法做用域)闭包。当即执行函数, 模块化, 命名空间。面向对象编程,原型,原型继承,原型链,Class。函数式编程,数组的一些方法map,forEach等。偏函数,currying in javascript,bind。异步编程,promise,async,generator.
后续:
继续看书,js不错的书挺多的。。
前端

1.前端框架 vue.js && react

了解代码的大致流程,熟悉每一个特性的用法,能够不知道源码是如何执行的,但要知道每个特性出现的意义。如为何vue里面会有computed,为何要出现这个东东?简单说就是达到灵活运用的程度.
后续:
(1):框架出现的目的是什么,解决了哪些实在的问题,有没有一些写起来不舒服的地方,提出一些本身的想法
(2):写一些通用的‘好用’的组件,如react中的'高阶组件'
(3):读源码,一些特性具体是如何实现的,源码的总体架构流程
(4):尝试模拟的写出一个相似的框架vue

2.状态管理容器 redux or vuex

以redux为例,上手很容易,只有少数的api,运用起来很方便,须要理解redux的实现机制,redux的中间件实现原理,redux源码.java

3.node

理解common.js,require模块机制。node.js error代码的捕捉方法。event loop.HTTP创建一个web服务。node的内存管理,垃圾回收机制,buffer,Stream,Readline。异步api,nexttick/setImmediate.process,cluster,进程间通讯。
后续: (1):单元测试
(2):C++写一些扩展模块
(3):cluster保证负载均衡,理解守护进程,进程相关问题.
node

4.后端框架 express or koa

应用express or koa 搭建一个node服务,配置路由,理解后端渲染,理解cookie+session。理解next,use,router.mysql

后续:
(1):理解express和koa中间件机制的差别。
(2):koa如何应用async,await
react

5.计算机一些底层的东西(编译原理,操做系统)

操做系统方面,理解线程和进程的概念,js中的异步代码,事件队列,内部涉及到了线程间通讯。理解同步,异步,阻塞,非阻塞的区别,了解那几种IO模型,nodejs的异步io的内部机制要想搞清楚,这些概念要理清。
编译原理方面:nginx

对于编译型语言如C语言,词法分析(状态机)->语法分析(抽象语法树AST)->中间代码(相似于java中的.class字节码)->目标代码(汇编)->二进制机器码()web

对于解释性语言如javascript,词法分析(状态机)->语法分析(抽象语法树AST)->中间代码()---->黑盒子(如java的虚拟机))-->运行结果。正则表达式

理解编译型语言和解释的区别在于,编译型语言直接拿到的是二进制文件去执行,解释型语言是从源码去执行。

感受做为一个前端工程师,也应该去写一些编译型的编程语言,最好是C语言,这样能够更好的理解编译型语言和解释型语言的区别,也会更容易的接受typescript的出现。

后续:
webkit的js引擎的一些优化的技术,如JIT
V8引擎的机制

6.网络协议

目前理解的是OSI的7层协议 物理层,经过媒介(光纤,电磁波)传入bit.

数据链路层(交换机),将比特组装成帧和点到点的传递.

网络层(ip协议)。数据包的传递.

运输层(TCP,UDP),抱文传输,TCP,三次握手四次挥手,断点续传等,可靠。UDP,直接传过去,无论对方有没有接收到,不可靠。

会话层(创建、管理和终止会话,会话协议数据单元 SPDU).

表示层(对数据进行翻译、加密和压缩).

应用层(FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS).网络通讯的大致流程了解。
理解HTTP协议,熟知请求头和响应头的结构,大部分经常使用的header, status的含义。

后续:
(1):深刻学习TCP协议,基于socket编程。

7.对数据结构的理解程度

理解数组,链表,双向链表,栈,队列,字符串,哈希表,二叉树的基础,平时本身实现相对复杂的东西如前端路由,promise实现,应用的就是树(DFS/BFS)和链表等,感受图在前端领域目前应用的很少,若是不是计算机专业出身,感受‘暂时’能够不须要会。
后续: (1):堆 (最大堆,最小堆)
(2):优先队列
(3):字典树,AVL树,红黑树
(4):图,有向图和无向图

8.对算法的理解程度

感受前端应用更多的仍是排序算法,冒泡排序,插入排序,选择排序,快速排序。查找算法,二分查找。树的深度遍历,广度遍历。字符串的KMP算法,正则表达式匹配。
后续:
稍微复杂一点的算法,堆排序,归并排序,希尔排序。

9.mysql / redis

用过,基本的增删改查。
后续:
继续学习

10.nginx

配置反向代理,别的都不太懂。 后续:
继续学习

11.代码能力

目前能够实现一些单一的功能,如本身实现一个前端路由,实现一个promise,但本身模拟去写一个前端框架,力有不逮。 多思考,多写一些不同的代码,多看一些别人的代码。

12.解决问题的能力

求解答

相关文章
相关标签/搜索