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个热门岗位
- 一名合格的Web安全工程师之成长路径
最近经常听到公司的招聘专员反馈应聘者简历“水分”太大,尤其是技术岗位,例如Web安全工程师,明明是初级阶段的菜鸟,就敢写资深Web安全工程师:在几个项目做一些基础打杂的工作,就敢写带过团队,项目经验丰 ...
- GMTC 2019-前端夜话《聊聊前端工程师的成长和发展》会后简要总结
今天晚上去参加了winter主持的前端夜话:聊聊前端工程师的成长和发展圆桌论坛分享会,真的是收益颇多,这次的这个嘉宾阵容也是很有诚意的,在现在前端领域都是有一定影响力的嘉宾,嘉宾阵容也列一下: 主 ...
- 2015 前端[JS]工程师必知必会
2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...
- Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 问题总结 作者:轻舞肥羊 日期:2012-11-26 http://www.blogjava.net/fi ...
- js获取项目根路径
//js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...
- PHP工程师面临成长瓶颈
作为开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢?PHP工程师面临成长瓶颈 ...
- 一名IT从业者的英语口语能力成长路径
一名IT从业者的英语口语能力成长路径 来源: 微信公众号 发布时间: 2014-03-12 22:53 阅读: 6134 次 推荐: 24 原文链接 [收藏] 这篇文章是我最近十天口 ...
- java ,js获取web工程路径
一.java获取web工程路径 1),在servlet可以用一下方法取得: request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/” ...
- java 或者 js 获取项目访问路径(域名)
/** * 获得站点url * @return */ public String getWebUrl(){ String url = getRequest().getScheme() + " ...
随机推荐
- STM32片上Flash容量大小命名规则
- SVG学习(三)
_ 阅读目录 一:在SVG中使用样式 二:分组和引用对象 1. 理解 <g> 元素 2. 理解 <use> 元素 3. 理解 <defs> 元素 4. 理解< ...
- struts2学习1
struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以及思想 使用拦截器 struts2的历史 str ...
- three.js 添加三维坐标系
//显示三维坐标系 ); scene.add(axis);
- selenium--操作JS弹框
前戏 我们常见的弹框有三种,一种是alert弹框,一种是prompt弹框,还有一种是confirm弹框那他们有什么不同呢?不同点就是他们长的不一样,alert弹框有一段文字和一个确定按钮,如下 在来看 ...
- C# 动态加载(转)
原文链接地址:http://blog.csdn.net/lanruoshui/article/details/5090710 原理如下: 1.利用反射进行动态加载和调用. Assembly assem ...
- 【转】C# 对sqlite基本操作,带批量插入
原文地址:https://download.csdn.net/download/mic_gary/10154869 public class SQLiteHelper { //数据库连接字符串 pub ...
- Scala词法文法解析器 (一)解析SparkSQL的BNF文法
平台公式及翻译后的SparkSQL 平台公式的样子如下所示: if (XX1_m001[D003]="邢おb7肮α䵵薇" || XX1_m001[H003]<"2& ...
- Gamma阶段第十次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- 《Linux就该这么学》培训笔记_ch19_使用PXE+Kickstart无人值守安装服务
<Linux就该这么学>培训笔记_ch19_使用PXE+Kickstart无人值守安装服务 文章最后会post上书本的笔记照片. 文章主要内容: 无人值守系统 部署相关服务程序 配置DHC ...