jikeytang / jikeytang.github.io

jikey
216 stars 58 forks source link

做为一个前端工程师,是往node方面转,还是往php方面转 #4

Open jikeytang opened 10 years ago

jikeytang commented 10 years ago

文章背景:问题本身来自于知乎,但是我感觉这个问题很典型,有必要把问题在整理一下,重新分享出来。 当看到这个问题之前,我也碰到过很多有同样疑惑的同学,他们都有一个共同的疑问该学php还是nodejs,包括我自己也曾有过同样的经历。幸运的是,通过我内心的挣扎和对当前市场供需关系以及行业发展前景的综合衡量评估后,我还是在接触了java, php之后回到js这片天空上来了。一方面是客观因素,一方面是兴趣导致的,前端太好玩了,值得为此奉献一点激情或青春。 其实这也是一个开发者成长必须经历的一个洗礼,一个磨难,一个挑战,他是一个必然的过程。很多人不差智商,不输情商,四肢健全,就是学不好一门语言。我认为最主要还是败在了坚持,专注上面了。经受不住内心私欲或其它语言的诱惑,都一一败下阵来。缺少的就是:坚持专注。业界坚持专注代表: @司徒正美@张鑫旭 。司徒大牛 600篇js文章,是岁月、历史和势力的见证。张同学42页博文也是伴随着我们的不断成长。 关于html5,他是个新东西吗?是新瓶装老酒而已,有实际处理问题的经验,可以平滑的过渡,学习成本很低,但并不表示没有。

然后说了解后台语言,到底要了解到什么程度呢? 其实说后台开发语言,其实他包括两类语言,一个叫操作数据库的语言,比如java,php,nodejs,ruby,python,c#等等。一个叫数据库操作语言,比如sql,包括insert,update,select,delete四个动作。所有的页面的一切数据交互都基于这四个操作。从我个人的经历推荐两本书:php与mysql程序设计,第四版,细说php,第二版。这两本都是比较全面的介绍了php,包含了php基本概念与mysql的知识,但都比较浅显,入门而已。 到现在你会发现,其实从前端的角度出发,语言有三种:操作数据库的语言,数据库操作语言,操作dom的js。然后就有方向了,学了js,学任何一门操作数据库的语言(后台语言),数据库操作语言,然后就可以自由组合搭配。而且语言之间有很大的相似性,都可以无缝的跨界。区别的是语言开发的所依赖平台,比如c#依赖于.net,php经常与apache,mysql结合,java依赖于jdk等等的。开发工具也各有不同,比如vs,phpstorm、zendstudio, intellij idea, eclipse等等。但他们的api却很像似,粗暴点说,你抄我我抄你,你中有我,我中有你。 从前端的角度出发我推荐2门语言:php,nodejs。想照顾一些老的东西,维护一些老项目,就选php。展望新方向尤其io操作比较频繁的可以了解一下nodejs。这两个语言各有所长,只是nodejs从语法上来说跟js是无缝的。php的oop跟接近于java的纯oop风格。但这2个从操作sql的方面来说,有很大的相似性。按照这个结论下来,无论选nodejs,php都可以,可以从主观上判断,你更喜欢那个。或者做一个小的留言板,看看那个更符合你的思维习惯。 一般的瓶颈就是你得少,建议多写,用解决实际问题的经验来跨越语言造成的障碍。 建议从以下的顺序来锻炼后台语言:

  1. 留言板, 2, blog
  2. 企业站,
  3. 商城
  4. 新闻综合站。 基础的入门之后,就是框架了,从我个人浅显的了解当中,分享一下经验,大概市面上有这几个框架:
  5. ci 经典的轻巧框架,在全球的使用量比较靠前,入门比较简单。
  6. thinkphp,国内人用的比较多,是国人开发,现在势头真猛,比ci封装的更好,也更傻瓜。
  7. yii,这个是目前全球排名第一的框架,但是入门曲线稍高。
  8. zend frame这是有php组织开发的框架,文档比较规范,也比较重,适合构建大型项目。
  9. laravel 这是一个呼声比较好的一个新型框架,借鉴了Symphony,各方面比较优秀,博众家之所长,但是相对中文资料比较少。 等这些了解了,估计已经入门了,学习应该找到具体的方向了。另外兄弟连的视频教程,质量一般,胜在量多,从基础到框架,应有仅有,最主要是免费。

然后回归正题,只是建议你了解,点到为止,了解是为了把前端干的更好。那什么时候真正的深入学习?建议在学好js的前提之下,吃透js。 比如了解js的作用域,闭包,原型,继承,尤其是作用域与面向对象是js的特色也是与任何一门后台语言比较容易混淆的两个地方。 请向各个业界js大牛看起,不一定非要那么深的深度,但一定达到自己力所能及的高度。 比如有个自己的框架,如司徒正美avlon,比如有一个自己写的小框架,如玉伯的seajs等等。

另外我个人的经验:学什么语言不重要,重要的是趋势你学语言的动力,说白了真正的需求来自那些。我认为需求有两方面。一方面是内在主动型的。比如js学习到一定的程序,写了很多demo或想法需要用更个性化的方式来呈现,这时候需要建一个个人网站或博客来管理你的内容。这时候才选择语言,了解需求产生,开发,发布上线的流程,对你以后的前端工作也是有帮助的。另外一个是外在被动型的,比如同学,家乡的朋友,需要你帮忙做一个企业网站,小的电商网站来做为他们初期企业文化愿景宣传的一个互联网通道,这时候就是一个外在的需求。拿我个人经验来说,我的php经验完全是来自于一次接私单的经历。虽然那次私单以失败而告终,但我在一个月的业余时间里边彻底的了解了php的开发方式,语言特征,后来根据这个基础我成功的开发上线了另外一个朋友的个人网站:http://jing-ui.com,这个网站的开发心得一直想写,但机会不凑巧,只能说敬请期待。明确一个自己感兴趣的目标之后,在选择语言,以兴趣引导语言,学习才有动力。比如做网站,那可能就是php,nodejs,做个简单的blog,在实践中慢慢了解语言,在学习中慢慢成长。 nodejs或php都有各自的应用场景,要么选一个公司现在用的,要么选择一个适合自己思维的。

如果你学会了其中的一个,然后在去了解其它的,可以说,入门会很快,因为里边有很多相同的东西。

最后总结一下我个人的心得:每个人都有好奇之心,这对做技术的来说并不是什么坏事,正因为这颗好奇之心,不断的带领向前迈进。另外了解一下满足一下好奇心没什么不好。就如同我当时学习php一样,感觉学习之后有多牛B,真正的学习后做了一个网站出来之后发现,确实收获不少,对前端也有帮助。但是js的水平还是在原地,除了擅长使用jquery之外,并没有太多的擅长。所以我了解之后迅速回归到原生js的学习当中,就是发起的这个项目 jikeytang/frontcode · GitHub豪情前端作品列表: 然后这是我写了2个月的战果,放到生产中去,肯定有不少bug,但重要的是迈出了第一步。 到目前为止我感觉,还没有达到一个自己满意的力所能及的高度,努力中。但人的精力是有限的,能力是有限的,在有限的精力里边把一件事情做好就已经很不错了。

mybedhome commented 10 years ago

建议标题修改为往nodejs还是往php方向

jikeytang commented 9 years ago

@mybedhome 已改,谢谢提醒。

darrenliuwei commented 7 years ago

写的很棒