JS 说起来必须是一个神器,这个当年10天内被开发出来的神器,以一种谁也想象不到的速度快速发展,它击败了Java Applet,逼死Flash,当Android和IOS看似一统全球的时候,JS慢条斯理的和Html5一起蚕食App市场,甚至还出来了NodeJS 这种连后端都不放过的残暴东西。
 
原生和WEB的两种方式一直在争论不休,而我自己在三年前就是绝对的WEB支持者,windows对于JS支持的更彻底,只是Winphone一直不给力。
 
好 吧,对于拿NODEJS做后端工程项目我还是有点不情愿,然而提供各种辅助工具什么的还是挺不错的。JQuery,Ajax和RequireJS和 Angularjs和PhoneGap都是一些标志性的转变,还包括ReactJS。JS简直了,简直了,简直什么都不放过。
 
所以JS简单么?我带着你们了解一下JS工程师是什么样子的。
1 工作内容:
 
JS工程师其实分成两类,一个是套页面的,一个是前后端分离的。
 
对 于套页面来说,JS工程师的职责非常简单,一个是做一些简单的动画和交互和验证,轮播图,弹框,验证用户名是否为空等等。另一个就是通过Ajax取一些后 台数据,然后在页面上展示出来。那个时候的JS工程师并不被太多人重视,很多时候一些后端的人把前端的工作也做了--除了写CSS,大部分的后端工程师写 点JS还是不成问题的。
 
可 是前后端分离的出现,彻彻底底的改变了前端的世界。前端居然有架构了,前端居然也有“编译”的概念了(你能想象么,JS的项目居然不能直接打开源码直接使 用了,必须要经过编译才可以)。前端工程师和后端工程师只通过Json数据交互(感谢Nginx提供了一个完美的跨域解决方案,再也不用什么Jsonp 了),然后服务器端的同学发现:好简单啊,我对Android,对IOS,对Html都只需要提供一套API就够了~~
 
前 端同学更开心,再也不用去搭建各种悲剧的开发环境了!前端变的很轻,而且控制欲很强(AngualarJS好赞),页面跳转神马的SoEasy,而且也有 了Bower这样的包管理工具,还有类似于JSP自定义Tag的指令,MVC,还有了Service的概念,马丹,前端到底发生了什么!
所以我们现在说到的,基本上就是前后端分离的工程师,他们的工作职责就是和IOS&Android的工程师一样,跟后端定接口,确定框架和架构,分模块,然后跟后端联调互相吐槽对方是渣渣。
 
项目结束之后修复线上Bug,不停的跟用户说:在我这里是正常的,你换个浏览器试试?不行就清一下Cookie,再不然就换台电脑。
 
2 需要技能:
 
环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】
基础【Http,REST,跨域,语法,组件,F12,Json,Websocket】
框架【JQuery,AngularJS,Bower,RequireJS,GruntJS,ReactJS,PhoneGap】
业务【金融,教育,医疗,汽车,房产等等等等各种行业】
第三方【微信,QQ等各种第三方登录,支付,IM,地图,语音,视频,图片】
 
环境不说了,参考CSS的。
基础跟CSS差别就好大了,要有一些网络协议的基本概念,要了解什么是Http,什么是Https,什么是WebSocket,什么是Rest,各种JS的语法(太复杂的完全不用管,别去管什么闭包什么Prototype什么This的指向),Json是必不可少的东西。
 
框 架就多了去了。直接拿JQuery来学习就好,表去太在意什么原生语法,大部分场景你都不用担心引入一个JQuery的库导致系统变 慢,AngularJS真是一个好东西,表太纠结一些细节,Bower,RequireJS和GruntJS这些会有一些前端大牛帮你搭好框架你直接用就 好了。 
想做点App就用PhoneGap,想尝试一下ReactJS就去试吧(我很想试一下然而看到有Render就看不下去了)。
 
必须提醒一次,如果你是从CSS转到JS的,这里强调的就是,你必须要懂业务逻辑,这跟CSS完全不需要懂业务逻辑简直是天壤之别,很多时候你并不是因为技术而无法学会JS,而是缺少对于业务逻辑的理解。
 
当然啊,这并没有完。还有无数的第三方库等着你,做微信呢你必须要用WX的SDK,要用百度地图呢就必须要用百度的SDK,还有各种支付啊神马的。如果你要做IM就有环信啊神马的。
 
所以。JS就是一个真正的程序员,一个真正的工程师,不但要能把代码实现,还需要理解需求,需要懂得编码规范,需要知道如何控制项目流程和进度风险,需要修复线下Bug,需要调优,需要做版本管理,需要制订接口,需要编写技术文档,还需要做新技术的调研或者是带新人。
 
现在你了解了咩?
 
3 发展前景:
 
我说了那么多,你们对JS的期望也很高了吧。坦白的说,有点高的离谱!
JS是唯一一个可以在两年之内薪水到20K的职业。虽然工作五年或者是七年的JS在薪水上差别并不太大,但是也已经让很多人难以置信了好么。
 
好多人在别的行业,工作十年都拿不到10K啊亲。
 
0~6个月:6K~10K
6~12个月:8K~14K
一年~两年:12K~20K
两年~五年:18K~30K
五年以上:24K~
 
JS的入门相对来说比CSS难的多,但是他的好处是学会一点是一点,并不像Java一样,绝对是前期Gank型英雄,到了6级就能四处杀人。Java是后期,要到16级以后才能出山才能够震撼全场。
 
所以JS相对来说比较平滑,而且现在学习的曲线也比较清晰,慢慢在业界都形成了相对完善的框架。JS可以选择前进的路有很多种,只要你不是太瞎,就没什么大的问题。
 
成长路径:JS菜鸟-JS初级工程师-JS中级工程师-JS架构师-UED-前端Leader-前端大牛
 
大概这个样子啦,JS工程师在后面有一点后续无力,一般来说,我还是强烈推荐JS,IOS,Android三者通吃,在我的带的Team中也一直要求他们这么做(虽然并未能完全实施成功)。
 
这三者有太多相似之处了,到最后你会发现,语言只是一种工具而已。要做的事情,其实是差不太多的,并不需要对所有的语言都特别熟悉,有一种打底的,其他的都可以随意去玩了。
 
4.入门门槛
 
必须有CSS基础,必须有CSS基础,必须有CSS基础。或者是有后端Java基础。
 
总之你要么是会了CSS,要么是精通了一种后端语言,千万不要CSS没学好,后端语言也不会就直接学JS,心里会没底,不踏实。
 
其他的都没什么了,列出来的基础知识,自己慢慢补就行了。
 
5.哪些行业适合做JS
 
IT界:CSS,然后是所有的都可以
其他界:所有的都可以
 
好蛋疼的结论然而事实上就是如此,这波JS的红利受益于微信,以及移动端的普及。我不确定在三年或者是五年之后会不会还是这种状态,然而三年和五年已经足够可以改变你的人生了,所以,你在等毛线?
 
6.职业限制
 
JS的职业限制也挺多的,主要就在于学习的方向上很容易误入歧途(至少在我眼里是这样的,相信我,我不是什么好人,我并不会我说过的每一句话负责)。比如说一直坚持喜欢用原生,各种喜欢写一些奇奇怪怪语法(我把我看不懂的语法都归结为奇怪的语法),各种回调等等等等。
 
学到一些好的框架其实很赞的,对于大多数人来讲,就够了。只是缺少一个清晰的指引。
有的时候你会发现,你对Http了解的比较少,会是一个瓶颈。
你对数组啊,循环啊不了解,是一个瓶颈。
你对MVC不了解,也是另一个瓶颈。
对Json不懂,不知道怎么定接口,也是个问题。
 
这些都学会了,也会遇到一些问题。就是JS的工程师三年,五年,七年的差别,大多数人都不算特别的大。
所以总会有人想学后端--但是我绝对不赞成学Java,NodeJS也可以不去学,不如去学习Python,更不要提PHP啦(我真心不喜欢PHP,不知道为嘛)
 
或者说,后端并不是语法,而是牵涉到算法,架构,性能,业务,选型等等跟前端几乎没有任何关系的知识,所以学习一门脚本语言,能做点简单的东西就好了。
 
还是需要把注意力转到IOS,Android上去。
 
7.去哪里学,怎么成长
 
如果你不想用这种方式去学习,还是我之前说的那些话,W3C,然后做点东西,跟着去一家公司实习。
 

参考文献 : 鸟哥笔记:互联网行业14个热门岗位

最新文章

  1. python 中文乱码问题2
  2. thinkphp 数据访问
  3. 如何显示二进制流的图片(利用img控件)
  4. Apache按日切分日志
  5. 【Unity3D自学记录】判断物体是否在镜头内
  6. 原生js颗粒页换图效果
  7. oracle学习笔记(二)设置归档模式
  8. 二叉树的JAVA实现-二叉树的增删改查CRUD
  9. MX记录
  10. java Map使用Object 做为Key的问题
  11. Mining 任务分类
  12. 运用Detours库hook API(原理是改写函数的头5个字节)
  13. linux系统find命令使用
  14. 查看Eclipse运行工程时使用的Command Line
  15. 关于L298N的应用
  16. sql server 性能调优之 SQL语句阻塞查询
  17. Jquery easyUI datagrid遇到空行做判断
  18. Visual studio 附加进程调试
  19. eval & sleep
  20. python的__str__()和__repr__()方法

热门文章

  1. Comet OJ - Contest #2题解
  2. requirements 操作
  3. 靶场sql注入练手----sqlmap篇(纯手打)
  4. Spring Boot 知识笔记(全局异常)
  5. 第10组 Beta版本演示
  6. Spring Security教程(四)
  7. SpringMVC之使用ResponseEntity
  8. keepass口令管理实践
  9. 第3课 auto类型推导(2)
  10. OpenSSL创建证书