有没有工作几年有经验的前端工程设计人员工作总结和我分享一下 参加工作以后主要会用到什么技术??? 谢谢了

令人更想不到的是,车上居然还坐着一车“妖魔鬼怪”。
北京电影学院2017年度招考开始,考场外帅哥美女如云。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  今天石家庄达内就来和大家讲讲web前端开发需要学习什么?前端开发又需要用到哪些开发工具?然后分享一些前端开发的免费课程给大家,然后也简单的和大家介绍下前端开发的前景和薪水工资情况,下面就简单和大家介绍一下。
  web前端的职能
  web前端工程师其实在不同的公司,有不同的职能,但是称呼都是类似的。
  1.做网站设计、网页界面开发
  2.做网页界面开发
  3.做网页界面开发、前台数据绑定和前台逻辑的处理(我是属于这种的)
  4.设计、开发、数据
  web前端的核心技术
  web前端开发需要掌握的技术:
  1、学习html,这个是最简单的,也是最基础的.要熟练掌握div、form table、ul li 、p、span、font这些标签,这些都是最常用的,特别是div和table,div用于布局、table也可以用于布局,但是不灵活,基本table是用来和数据打交道.
  2、学习css,这里说的css不包括css3,一般我们看到web前端开发工程师的要求里面,有一个会使用css+html 或者 css+div 来进行界面布局,所以css是用于辅助html来布局和展示的,我们称之为“css样式”,为什么会说css+div呢?因为我上面说了div就是html主要用于布局的东西,所以div就是核心掌握的东西!那么css肯定必须要配合div来使用才好.css要熟练掌握float、position、width、height,以及对于的最大最小、会使用百分百、overflow、margin、padding等等,这些都是跟布局有关系的样式,一点要掌握.
  3、学习js. 可能前两个大家觉得还过的去,看到js就蛋疼了,其实吧,js入门很简单的,不需要会很多东西的,只要会根据某个id、或者name拿到网页dom或者样式、或者值,然后会给某个id或者name的元素标签赋值、或者追加数据、追html,这个是跟数据有关系的操作,然后数据逻辑判断,效果方面的,无非就是跳转、弹框、隐藏什么的,把这些全部结合其他就是实际用途了,代码一点都不难,会了这些基础js,其他的直接百度就好了.然后看多了,用多了,就什么都不是问题了.
  4、学习jquery.jquery是相当于把js封装了一套的一个js插件,目的就是操作起来更方便,代码写的更少,jquery入门也很简单,那些是入门需要学的和js一样,只是换成了jq的代码.其他的一样百度就够了.
  5、最好会点后台语言,比如java、php,为什么呢?因为我们前台界面的数据都是从后台来的,如果会点后台代码,就知道怎么跟后台交互数据是最好的,这样节约时间,也可以让前端代码更规范.不然可能因为你的写法和后端给来的数据不能结合上,那么前端代码又得重新写,那就更蛋疼了.
  6、学习css3+html5,为什么这个放最后呢?哈哈,因为我自己也不太会,毕竟术业有专攻嘛,虽然这个很流行,但是我是搞后端的,在工作中用不到它,只有在自己网站需要改样式,或者朋友网站样式出问题的时候,我才会去临时去研究下.但是如果你们是准备专门搞前端,那么最好还是学一下的.
  上面6点,基本是一个搞web前端开发工程师需要掌握的技术,然后我也尽量的把自己的一点点经验告诉了大家,但是大家不要以为上面6点就只有我说的那么容易,不,他们之所以被人使用,之所以这么火,就是因为强大!我说的这么简单仅仅是打消你们觉得很难的原因,万事开头难,我讲的都是入门的方法和技巧以及需要知道的东西.另外告诉大家一个秘密,不要以为代码很难敲,现在什么语言都有自动提示代码的功能,只需要输入一个字符,两个字符,后面的代码都会弹出来让你选择!还怕啥呢?所以你也不要怕你英语不好了。
  web前端薪资待遇
  web前端开发的薪水工资:
  这个是个敏感的话题,我是在上海这边,2年工作经验的web前端开发工资差不多10K~15K,如果你会些后台技术,并且前端技术很牛逼的话,到20K也是可能的.这个工资的多少主要取决于你的技术情况,所以工资也不一定的.但是北上广的一个web前端工程师的市场价差不多就是这样,如果是二线省会城市,可能就是8K~10K,也是不错的.我们搞技术这个行业,工资的多少取决于你技术的好坏。
  免费课程
  web前端开发免费课程:
  这个我免费做个广告吧,我当时学技术专业知识的时候,就去听过达内的免费训练营的课程,讲的还不错,有不懂的还可以直接请教老师解答,讲的确实不错,我最喜欢里面的王春梅老师,他讲的HTML、CSS、Java都特别的细致,你们也可以看看,领取福利:点击阅读原文,抢报6天免费课程名额!
  另外我们搞编程都会经常查阅一个叫api的东西,这个相当于使用手册,比如java api 、php api 、js api 什么的,大家直接这样百度,html+css的api 应该是可以找w3c的一个网站,对新手学习很不错.
  必备开发工具
  web前端开发需要用到的工具:
  最常用的就是dreamweaver,推荐大家使用dreamweaver cs6,cs6之前的貌似问题挺多的,cs6目前是功能最强大,问题最少的了,dw有一个比较方便的就是可视化编程,可以边看效果边敲代码,还有自动提示代码的功能。
  还有就是ediplus,这个其实就相当于一个字体有颜色的记事本,我就是用这个,因为我感觉dw占用内存太多了,搞的电脑卡,所以我直接用ediplus写代码,至于这个有没有代码自动提示功能我就不知道了,大家可以百度下是否有相关插件.还有就是eclipse可以写java、php还有上面的各种代码!Zend Studio 是专门写php的,但是上面这2种工具比较专业,是我们专业开发人员用的,所以大家自己看着办.Photoshop这个就不用说了.
  想了解更多web前端开发干货的,可关注”河北达内(hbtedu)”微信公众号后留言给我们,我会在第一时间回答大家的问题。也欢迎大家QQ来咨询更多课程详情或者申请免费试听web前端培训课程,相信大家了解之后会有个更明确的认识。
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
达内创办于2002年,专注IT培训14年,采用先学习,就业...
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:2016年前端技术观察(下)
(本篇为下半部分,更多详情请接上文)关于前端的核心竞争力如果说服务端同学进击全栈是试试水,Native进击全栈是试试水,那前端里很多同学进击全栈就是在拿生命在玩全栈了。服务端玩玩Node,不喜欢就算了,玩玩Angular和Bootstrap也就在后台开开荤,前台各位视觉设计,UAT还原检查,各种动效,用Angular和Bootstrap能把自己玩死,而后台基本上一直是服务端的自留地,很多做前端开发的同学甚至没开发过后台界面吧?Django甚至都自动给你生成了。后端的核心竞争力在哪儿?在添删改查,在数据库设计,在性能优化,在shell脚本,在分布式,在网络安全。玩玩票不影响自己的大本营。同样可以一门语言前后台通吃的Android开发,你看看他们对全栈是不是像前端圈那样热情。从DNA来看,对Java语言可比JavaScript和Node更亲吧?再往远了说,看看C++客户端的同学对服务端有没有那么大热情?还是那句话,好学是好的,前提是自己的大本营要守住,一专多长。你得先专一门,再想着横向扩展其他领域知识。前端开发的核心竞争力是什么?2016年年中,我在微博上说,前端的核心竞争力在于一些HTML标签、CSS,JavaScript的熟练度上。这些东西是前端自己领域的知识,比如Form2.0、Websocket、离线缓存、Webworker、Border-image、Canvas。一些同学回复说“核心竞争力居然只是些API,这有什么难度?”此言差矣。或许这样认为的,以跨界而来的“全栈”工程师居多。有些知识确实只是API,比如JSON.stringify和window.getComputedStyle之类,看了就会用,用起来也没有什么实践方面的坑。但并不全是,比如Form2.0可是有一系列新东西,新标签如output,新类型如number,新属性如pattern,新的CSS伪类如:valid,需要融合在一起考虑,形成一个Form2.0的解决方案。再比如Canvas2d,Canvas提供了像素级API,可以直接存取颜色,可以把像素导出成base64的字符串,提供了DOM没有能力,但同时也完全没有了DOM的便利,比如Canvas上画的某个按钮该如何进行事件监听呢?比如不能使用CSS了,该如何实现:hover伪类,又如何让布局实现自适应性呢?什么样的情况下该使用Canvas,什么情况下该使用DOM,如果有某个功能必须依赖Canvas实现,比如在网页上做个美图秀秀,将产品的哪些元素放到Canvas上,哪些元素放到DOM上,两者又如何合作呢?换成纯Canvas解决方案会不会更适合呢?前端的知识不同于服务端,大部分的工作量都在图形界面上,而图形界面是件很细的活,工作量和技术含量全在细节。我经常对非前端的同学举一个例子——你知道垂直居中有几种方法,不同方法的优缺点吗?有些跨界而来的同学,以及部分前端圈的新同学都不以为然,嘲笑说这叫“回字的四种写法”。其实,前端在实战时,垂直居中有多种方法,基本上没有方法是无副作用的,要看情况,不同的情况要选用不同的方式才能实现最好的自适应性。感兴趣的同学可以去搜搜看前端的垂直居中方法整理。看完之后,就能明白前端CSS的精彩和玄妙。我批评很多同学基础不扎实就开始乱折腾,不是说多学习不好,而是说大本营都未扎牢,如何实打实地高效完成日常工作?ES6、CoffeeScript、React、Webpack等,都解决不了你在实战时遇到的具体挑战。这全是些外围功夫,并非核心。先把核心学好,外围功夫什么时候学都可以,又不难,你说对吧?那么什么是核心呢?HTML、CSS和JavaScript。我指的是原生的这些东西,不用上来就跟我说React的JavaScriptx语法重定义了HTML,Sass改良了CSS,TypeScript给JavaScript带来了静态语言的语法,这些都是外围,今天是React,明天可以换成Angular,今天是Sass明天可以换成Less,今天是TypeScript明天可以是CoffeeScript,这些不重要。就像jQuery鼎盛时期,很多同学不学原生JavaScript,上来直接就上手jQuery一样,走不远。要理解jQuery为什么这么封装,其实在底层发生了什么,用原生会遇到什么问题,直接用原生能解决吗?把原生的技巧学熟了,这些外围的东西上手很快,而且什么情况下用什么,心里会非常有底。过去,前端领域并不像如今这样浮躁,很多人都知道基础的重要性,也知道基础是什么。但当跨界的“全栈”进入前端圈以后,很多浅显的道理都被有意无意地搅昏了。速成、革命、淘汰、全栈成了主旋律和政治正确。可是,就像投资界里爱说的一句话一样:“风起来了,在风口上猪都会飞。可是等风停了,还在飞的是老鹰,而猪会摔死。”风会停吗?当然。该潜心修炼还得修炼,基本功不扎实以前,别糊里糊涂跟风浪费自己时间,缺什么要恶补。今天说得很热闹的HTML5其实是从HTML4加强而来,两者不是替换关系,而是“强化”,就像ES6之于ES3一样。很多新入行的同学希望可以速成,然后从哪儿热门往哪儿入手,这其实不对,最好的学习方法是从HTML4学起,尽管在实践时有很多HTML4时代的技巧,在HTML5时代有了更好的替换方案,但也有很多HTML4时代可以一直用过来的技巧。让我担心的是,HTML4时代的好书,到了HTML5时代已经不再出版了,而HTML5相关的书籍基本上只讲了HTML5相较于HTML4的增量部分。而HTML4时代的书和相关技巧就这么失传了。除了书,博客和所谓社区也是一样,现在已经不再讨论以前的一些精华技巧了,有些技巧确实是淘汰掉了没有什么价值,比如IE6的hack技术,但也有些技术是很棒的CSS技巧,比如CSS滑动门依然适用。我推荐一下几本书和学习步骤,给有心弥补基本功的同学:《CSS网站布局实录》——国产CSS2入门书,有些技巧已经淘汰,但仍不失为最好的CSS入门教程。《无懈可击的Web设计》——讲CSS应用技巧的书,国内外粉丝别多,说是开创了CSS技巧流派也不为过。《DOM JavaScript编程艺术——JavaScript最好的入门书,没有之一,这本书是帮助你了解如何将DOM、CSS和JavaScript连接起来的一本书。严格来说,后端Node根本不算JavaScript,JavaScript是基于ES语法的一门脱水语言,如何实现的胶水?这本书将带你入门。《JavaScript高级程序设计》 ——JavaScript必读的一本精典,读完之后对JavaScript的理解和实&践会上升非常大的一个台阶。《编写高质量代码——Web前端开发修炼之道》 —— 举贤不避亲,这本书是我写的。推荐的原因是,这本书重点讲团队合作的注意事项。虽然一些具体的技巧,在今天已然过时,比如IE6的hack,但在团队合作方面的思考,直到今天我也没看到其他书在讲,这些思想没有其他书可替代。《HTML5和CSS3权威指南》——目前为止,我读过的HTML5方面最好的一本原创书。配合实例进行API讲解,非常详细具体。连HTML5都提供了哪些底层的东西都不知道,又该如何去用好它呢?在我看来,是学习HTML5的必读书。《响应式Web设计:HTML5和CSS3实战》——作者是《无懈可击的Web设计》忠实粉丝,所以很自然地,这也是本CSS技巧流派的书,侧重点在CSS3的实践技巧上,让人大开眼界。《JavaScript设计模式》——JavaScript在实战时的高级技巧。前端很棒的书有很多,这只是几本我觉得最不该错过的书而已。从HTML4一路到HTML5和移动时代,一路上有了很多新技巧,也淘汰了一些旧技巧。当下的学习氛围虽然前所未有的强烈,但急功近利和盲目无头绪现象也很严重。在我看来,很多人不愿意做苦活累活扎扎实实打基本功,一句“那些都淘汰了”就拒绝了所有的优秀遗产,希望花少量时间看看流行时髦的新工具新框架,然后就迅速挤身行业顶端,这想法既偷懒又幼稚。什么是外围功夫,什么是真核心技巧,什么是珍珠什么是盒子要分得清,自欺欺人并不是什么明智的想法。你可以几天几个星期就掌握的东西,别人也可以,就算人家比你笨,多花一倍的时间也能跟上你吧?要真的拉开和其他人的距离,只有下苦功这一途。这些话,恐怕没有几位前端老人愿意说。当我问他们,拼命强调新风向,而不再提基本功,造成知识断层,造成这些同学心高气傲但完成不了工作怎么办时,一些老人的回答是“他们自己不重视基本功,怪我喽”。如果你基本功很扎实了,想学什么外围功夫都可以,虽然多学总不是坏事,只是在决定投入使用时,还需要看团队情况再慎重决定,团队合作要考虑的事情有很多,要有责任感,别只顾着自己当Geek。关于Angular,后台,SPA关于Angular,我是不认同的。Angular是Google服务端团队折腾的作品,整套代码组织的思路和服务端的MVC框架如出一辙:URL路由 + Controller + 数据抽象 + 模板引擎。虽然服务端出身的同学会倍感亲切,但这真的不是前端代码最好的组织方式。我对此的判断是,Angular团队因为自身服务端出身的基因和思维模式,创造了一个对服务端团队最友好的框架,目前用户群体也是以服务端团队为主,适用场景以后台这种定制动效和定制UI要求不高的场景为主。事实上,Angular2决定使用TypeScript开发我也毫不意外,因为TypeScript本来就是Java服务端团队更喜欢的静态严格语法,Angular团队决定讨好他们自己讨好和他们相同背景的程序员群体,放弃普通前端工程师习惯的脚本弱类型习惯,也完全是情理之中的事。唯一让我奇怪的是,我们的传统前端工程师为什么要去追捧这么一个框架呢?人家根本就没在意你好吗?就像从传统服务端转到Node服务端的同学会奇怪,为什么一群前端工程师对Node服务端这么感兴趣一样?这关前端什么事?我们去凑什么热闹?最近流行一个段子,说一个放羊的和一个砍柴的聊了一天,然后天黑了,人家放羊的羊吃饱了回家去了,可你砍柴的呢,你的柴呢?你的前端基本功呢?你的前台应用场景呢?我觉得“全栈”这个词很讨厌,原因在于它搅混了很多事。从定岗上来说,后台的前端部分,到底是由谁来开发?是由前端工程师来开发呢,还是由服务端工程师自己来开发?在过去相当长的一段时间里,后台是怎么开发的?是由Frameset来组织代码的,并非SPA,后台的界面往往非常难看,基本上只是后端工程师自己顺手就给做了,没什么UI定制需求,也没什么动效,了不起有些正则表达式验证而已,连AJAX的要求都不高。前端工程师基本上是不做后台相关的工作的。那么如果后台并不是给自己使用的,而是给第三方使用的呢?是外包公司呢?后台界面如果需要有更好的卖相怎么办?Extjs就派上用场了,还算不错的界面设计和丰富的组件,而且完全支持SPA开发,只不过Extjs组织SPA是以组件为单位来组织的,并非服务端熟悉的MVC那一套。所以这种情况下,后台是需要依赖专业的前端工程师介入的。Angular最适用的场景应该就是这样的情况了,取代Extjs,让后端工程师自己按照自己的熟悉的方式进行“全栈”开发。问题是,后台因为种种原因,从来也不是前端工程师的主战场啊。后端能自己搞定自己玩去嘛,前端工程师在实际工作中,更多的工作在什么地方,在前台啊,和视觉设计师的PSD直接打交道吧?和交互设计师或产品经理设计的交互动效直接打交道吧?要切页面,要玩透CSS吧?跟人后端工程师屁股后面追Angualr,结果人家Angular升级到2用TypeScript了,不兼容了,傻眼了吧?信不信人服务端过来的“全栈”比你一前端玩Angular玩的更溜?而且就算你辛辛苦苦把Angular那么复杂约束性那么强的一套框架学得特别顺了,可是别忘了你的工作主战场在什么地方?你是天天在写后台,当我没说,可是如果你天天在写前台,那是真心找虐……醒醒,你这砍柴的别陪人放羊的一起谈全栈了。前台最适合以什么方式组织代码,下面我会再讲,现在先跟后端工程师谈谈心 ——以Angular来为后台组织SPA真的是最好的实践吗?和传统的Frameset相比,真的性价比更高吗?首先,我赞成从纯技术角度来看,Angular是适合后台场景的方案之一,只是即使是后台开发,也有三种技术方案可以使用:Frameset——一般的后台,能用就行了,样式,无刷新都不重要,反正给自己人用的,怎么快怎么来。开发速度快,需要前端配合,分工也容易,维护也容易,招人门槛、人流失进行交接都风险小得多。在技术选型之前,先想想你是否真的需要为后台提供SPA。Angular——给第三方使用的后台,对样式,无刷新体验要求较高的,而团队中又没有专职前端工程师,需要服务端工程师自己上的,结合Angular和Bootstrap是个不错的选择。只是Angular这一套的学习成本不低,而这一套其实又很难和普通前端前台需求普适,性价比不高。如果想用一套技术完美通吃前后台的前后端代码组织,你应该考虑方案3。组件化组织,自己抽象——其实思路和Extjs一样,以组件化方式来组织后台的SPA。只是Extjs的学习成本也不低,而且样式也不好定制,所以你需要的并不是去学Extjs,而是学习如何自己封装组件。封装些Scene、SceneManager、Widget抽象类、组织个SPA出来很简单的,模块化组件化可维护性都不是问题。有同学会问了,那模板呢?通信呢?首先模板不是必须的,我个人不推荐在前端使用模板引擎,这在本质上和组件化是相悖的,就算真的要用模板引擎,有很多垂直的JavaScript模板引擎可以选择,通信也不用Angular那么麻烦,通信最主要是想解决一个什么问题?组件和组件之间解耦,但又需要保留组件内部的Context,很简单,通过全局的自定义事件,为事件进行传参,就可以轻松实现组件的通信了。多简单一件事,折腾出约束性这么强的一个框架出来,何苦呢?关于自定义事件,以及组件化,我做过一个视频教程,不依赖React之类的框架,很原生态,方便对组件化的具体技巧有更深入的理解。有兴趣的同学可以看看“阿当大话西游之Web组件”(/learn/99)。关于React2015年底我批了Angular,同时也批了React。但我反对它们的理由其实并不一样。首先,React是组件化的思路,这个我是认同的。首先跳出Web前端这个圈子,咱们看看别的GUI技术,无论是桌面软件开发、Flex、移动还是游戏,都是以组件的方式来组织代码的,可以说GUI编程按组件来组织代码是普适的最佳实践。Web前端有两方面的原因,导致其代码组织方式出现了Angular这种非主流:Web服务端是唯一可以和HTML无缝结合的,这是为什么JavaScript、PHP、ASP又被叫做动态网页的原因。所以前端和服务端有扯不断理还乱的历史原因。看看服务端染指iOS或者桌面开发容易不?前端的原生控件实在太少也太弱(看看.NET和Flex的控件),数都数得清楚,text、radio、checkbox、password、button、img、audio、video等,长期以来,前端不得不自己封装组件,Extjs、YUI、Dojo、Prototype无不如此,还有丰富的各种jQuery组件。成也封装败也封装,封装给前端带来了强劲表现力的同时,也降低了前端同学自己动手写组件的能力。大多数人都是拿来主义,但拿来主义并不是最可怕的,可怕的是拿来主义的同学没有意识到组件之于GUI的意义是那么不可动摇。举个简明的例子说明Angular的MVC和组件化之间的不同吧:Angular是什么思路:而组件化是什么思路:Angular为代表的类服务端MVC框架,上来直接分成M、V、C三个层,然后将互相关联的三块分到了三个层里去,这么干最大的坏处是破坏了抽象。而组件化的核心就在于抽象,将相关的属性方法内聚到一个组件里去,这是符合面向对象的思维模式的。我自己既做前端开发也做服务端开发,服务端开发在MVC框架的帮助下,基本上在应用层不需要做任何的抽象,Controller不过是函数而已,M是和数据库、缓存打交道的命令而已,即使有ORM抽象,那也是框架替我抽象好的,不用我自己做任何抽象,而模板引擎就更加机械化操作了。但我做前端开发时状态完全不一样,我需要通过组件化来将界面变成一个个自定义的组件,我需要不停地抽象:这是不是可以抽象成一个组件?它的属性有什么?它的方法有什么?它的DOM节点最外层容器是什么?我如果要封装方法该封装什么方法为公用,什么方法为私用呢?我需要不停地进行思考,因为前台的界面是各种各样的,不可能像服务端一样由框架高度抽象出一些通用逻辑进行封装的。事实上,前端除了少数的通用组件可以直接使用第三方的,比如模拟弹窗、富文本编辑器什么的,大多数的需求只能自己封装,这是件非常考验人面向对象思维能力的事。所以,我认为前端的前台需求,不应该由重框架来提供解决方案,“轻框架 + 组件化 + OO”设计才是最优解。也就是说,前端不应该多提供约束性的框架,而应该提供基础工具帮助和通用组件就可以了,在应用层,要考验前端工程师自己的能力,没有任何框架可以帮你去抽象你的业务需求。所以我觉得前端比服务端苦逼很多。那么我说的“轻框架 + 组件化 + OO”设计是不是之前没有业内的实践呢?当然不是。事实上,前端长久以来,一直是轻框架 + 第三方组件的模式。只不在过应用层,各家公司的前端工程师大多数能力水平很有限,而业务需求也并不复杂,所以在前端圈里OO设计和自定义组件并没有流行开来,究其原因主要是门槛有些高,而大多数程序员们又自我要求很低。听不明白轻框架 + 第三方组件 + 应用层面条代码?想想jQuery + jQuery组件 + 大多数前端工程师用jQuery写的代码你就明白了。既然jQuery已然可以提供必要的帮助了,那么还要React干嘛?jQuery有一个致命的问题,就是jQuery本身是基于plug模式来写扩展的,对第三方组件并没有统一的更组件化的方式来标准化它们,这就直接造成了不同的人写jQuery组件会有不同的风格。这对团队合作并不是什么好事情,如果说是第三方组件,如果封装的质量很好,倒也罢了,毕竟只使用它的API就够了,内部实现再怎么乱也不用去计较。问题出在自家公司的自定义组件,如果公司里有几个人团队合作,一个人一个风格怎么行?我们需要一套标准来约束大家按相同的风格来组织代码。这就是React最大的意义所在,填补了jQuery的这个不足。但这是否意味着离开React就无法组件化了?当然不是,比如我的视频教程里就有另一套风格的组件化范式。这套风格并非是我原创,而是从YUI3学来的,思路是可以穿越语言和框架的,我不过是将这套思路从YUI3带到了jQuery。事实上我是YUI的忠实粉丝,真的是座巨大的金矿,随着雅虎日渐衰落而停止了维护,真是让人遗憾不已。requireJs、React的组件生命周期,YUI早已在2008年就实现了,它的思想超出这个时代很多年。但这又如何?技术理念的先进有什么用呢?还不如会推广和上手门槛低来得实惠,我觉得YUI和jQuery相比,一个是航空母舰,一个是小渔船,但又如何?jQuery获了开源大奖,API上了犀牛书,成了事实上的工业标准,而YUI呢,谁还记得这个低调的大拿呢?我不再追流行,也不看理念是否先进,而是重视工业标准,原因正因为我并没觉得有多少新东西,而且理念先进不等于接地气,不接地气不讨好普通的懒惰的程序员就很可能活不下来。可能因为受过太多伤,所以变得不再容易被挑唆,变得格外挑剔吧。有兴趣的同学可以看看我曾经写过的一篇文章,文章写于Flex在前端圈异军突起,无比时髦的2008年。现在看来,这些激情还是太幼稚了。《[RIA之争,我的看法]》一些喜欢说我不求上进倚老卖老的同学,想送给他们一句王朔的话:谁没有年轻过,可是你老过吗?说回到React的问题上。我之所以不认同,并不是认为React在技术上一定是走错了路,而是因为React把简单的事情越搞越复杂,现在一提React就是React全家桶,它的野心很大,还想解决Native开发的问题,但经验告诉我,这很危险,这意味着学习门槛、团队合作成本、招人成本、人员流失风险。如果React并不能带来技术普及,只是昙花一现呢?谁来为公司里的那些遗留代码负责?谁又来为初出茅庐基本功都未扎实的同学浪费的时间负责呢?我脑子里时常想的是YUI、Dojo、Extjs这些过去前辈们的心血,就这么基本毫无痕迹地被遗忘了,而jQuery这小草根居然活下来了。谁能保证React这个套路下去,不是个短暂的狂欢呢?除了一些在社区里闹腾的同学,这些技术真的被广泛采纳和推广下去了吗?以我的经验,深表怀疑。再强调一下,对于个人要学习,没有任何人会阻拦你,而且学习是对的。问题是,别轻易在团队里强推,想清楚在公司里推广起来坑多还是利多。我总是习惯性站在一个技术负责人的立场上来看问题,难免保守,我只是希望激进的同学理解,公司并非个人的实验田,你不开心你会考虑换工作,但你留下的摊子,还得有人收拾。所以我想,冲突的根本应该就在于此吧。React总的来说,不像Angular走错了路,但因为全家桶的原因门槛越来越高,这不是个好现象,未来有待观察。个人不是太看好,但确实也没有更有力的挑战者。要么像我一样坚守jQuery,自己做组件抽象类,配合jQuery的第三方组件工作,等待更有冠军相的角色出现,代替jQuery成为新工业标准,要么就小心翼翼用上React好了,我也想不到有什么别的路可走,当下这阶段确实挺邋里尴尬的。另外,别小看jQuery,我认为jQuery仍然非常坚挺,而且仍然有非常大的可能性成为最后赢家——补上组件抽象类和单向数据绑定就可以了。而这些通过jQueryui都不难做到。组件化是对的,但组件化框架其实是很轻量级的,用不用框架,以及用什么框架问题都不大,不是说有了什么组件化框架,就像奢龙刀一样开了外挂了,不是的。组件化不过是编写高质量代码的基础而已,真正的挑战在抽象上。能不能养成面向对象的思维模式才是关键,而面向对象要具体去抽象组件时,是没有定式的,要看应用层具体的需求去做抽象,这也是为什么我说前端不该去做约束性特别强的框架的原因所在。轻框架,重应用层抽象才是GUI编程的正途。关于抽象和面向对象,你真的掌握了吗?封装、继承、多态、设计模式、解耦、API设计这些真的都熟练了吗?我接触过的前端,绝大多数同学都毫无概念,均表示听说过,尝试过,但实践不多。我扔几个案例出来,感兴趣的同学可以拿来做一下面向对象编程的练习:/js_demo/1//js_demo/10//js_demo/35/可以看看我的源码,如果是你自己开发,又会如何组织代码。关于SPA和Web Site说到Angular、React之类,很多同学都会提到SPA和Web App。然后说SPA的春天来了,说代码质量要提高了,jQuery可以去死了。但事实上,真的如此吗?后台是否搞SPA我其实并不关心,搞不搞都可以,搞的话我也不打算用Angular来做,服务端的全栈们如果要用Angular搞后台我也没意见,只是你自己开发的自己维护,别你做的技术选型硬拉上我。但对于前台部分,我期待SPA其实很多年了。从我用Flash做RIA应用时,我就知道前端做SPA比起Web Site要复杂多少了。我2008年开始写HTML的SPA,早期做的一个很复杂的例子,现在还有保存,请见:/tbs/manage.html。真的很复杂,当时通宵了好几天。我从2009年开始,做的前端程序基本全是SPA,我很早就在一些技术大会上讲,前端应用时代会来临(当时还没有SPA这个叫法),模糊C/S和B/S的产品形态边界,同学们要抓紧时间提高自己,不要到时被淘汰了。但我等了很多年,也没迎来SPA的大爆发。Web Site一直是主力产品形态,根本就等不来SPA时代。今天很多同学说SPA说得很热闹,事实上很可能只是这些同学的一厢情愿。事实上,SPA时代等是等不来的。一个可悲的事实是,工程师在公司里的定位都是执行层,而非策划层,策划是上游,对应的岗位是公司老板,最次也是产品经理,不是工程师。而产品经理们会什么呀?他们身上没有技术基因,不会主动想到Web前端可以做新的产品形态的。如果产品层面没需求,你怎么等来SPA时代?只有一个可能性能等来,就是国外有一个非常成功的项目,是用SPA做的。那么国内很可能从老板到产品经理会跟风去抄袭一个。也就是说,国外的老外们不做出点什么产品创新,我们国内的工程师就很难有机会有生产环境上做些SPA的富应用了。有些同学拿了几个简单的页面给我看, 到了AJAX无刷新,然后display:none和block实现了场景切换,跟我说,看,我们SPA了。其实真不是。在我看来,SPA真正的威力不是把多个网页变成单个网页,而是在产品形态上就彻底跳出网页般的排版布局。比如说做游戏、做网络IDE、做网页版PhotoShop之类。而这,需要的不仅是技术能力,而进一步需要产品设计能力,能不能技术驱动产品创新,不要再折腾什么技术工程化,发点力在技术产品化上。如果Google的工程师不用AJAX做Gmail,网络邮箱是不是会一直是Frameset方式?如果Google不做Google Map,是不是我们就一直没有网页地图可用了?我们自己能不能主动想想Websocket、Canvas2d、WebGL、CSS3之类的东西能不能做些和HTML4时代不同的产品出来?我举个例子,带图画板的网络聊天室怎么样?基于WebGL的Mmorpg怎么样?在同一个页面上打通DOM和WebGL会怎么样?我再留一个问题给各位思考:Canvas可以实现截图,toDataURL方法嘛,那么DOM能不能通过技术手段实现截图功能?给个提示:遍历DOM节点,然后做z轴上的排序,然后一个一个将他们画到一个看不见的Canvas上去……几年前我就一直置力于技术驱动产品创新,号召圈里的同学们多投入点精力在技术产品化上,不然HTML5那么多牛逼的功能都白瞎了,说是进入了HTML5时代,可是产品形态依然没有啥变化,身为前端工程师我觉得很耻辱。可是,我一个人的能力实在有限,我努力了几年,我也号召了几年,然后终于放弃了。现在我已经死心转型做产品了。相信我写了这样的文章,看官看完之后,依然会该干嘛干嘛。关于SPA,再多说两句,就是SPA的代码组织方式不用围绕URL路由来组织,如果是个纯单机应用没有服务端,是不是代码就没法组织了?当然不是。路由是好东西,但我推荐用自定义事件来进行路由,不要用URL。这里有个我写的斗地主单机小游戏,有兴趣的同学可以看下:/js_demo/29/ 。最后,SPA什么时候可以迎来大爆发?我反正挺悲观的,我等了6、7年没等来。现在说得热闹,可是没见着几个SPA的强产品需求。没有产品层面的强需求,其实意味着折腾来折腾去,不过是前端圈自己在玩,孤芳自赏,以及面试时为难应聘者,跟前端面试时面算法似的。React Native和PhoneGap再说说React Native。我不看好这种方式,阉割版的CSS导致前端技能的受限,对Native底层的黑盒导致调试和扩展的困难,另外“learn once write anywhere”的性价比也并不高。而且,公司定岗的原因,iOS和Android团队也绝对不会对你友好,就像前端学了点Node服务端去挑战Java、PHP后端位置一下。于技术,于团队,真的是坑多于利的技术。相比之下,PhoneGap那种思路,GUI交给Webview里的H5,底层交给iOS和Android,Native和H5通过jsBridge通信,是团队合作成本最低的方式,而且只要jsBridge写得好,一套HTML5代码也是最容易实现“write once run anywhere”的。三端的界面可以共用一套代码。我更倾向于后者。当然,一个不容忽视的问题是,webview当前的性能还有严重问题,如果交互效果复杂一些,在低端机上的表现就会卡顿,所以采用这种技术方案时,受限于性能,产品的设计要尽量简单。当下并没有完美的解决方案,但各方面原因考虑下来,hybird仍然是更好的选择。React Native唯一能拿出来说事的只有webview性能不好这一点,只是如果webview的性能问题在未来得到解决了呢?记得摩尔定律吗?所以说React Native不过是个不怎么样的临时解决方案而已,一旦webview的性能问题得到质的变化,React Native就没什么存在价值了。当然,话又说回来了,webview性能问题什么时候能够被解决呢?也没那么乐观,反正我从2011年等到现在也没等到。iOS其实已经很不错了,Android的碎片化是个深坑。对了,我徒弟就用HTML5做了个SPA,用hybrid方式包成了iOS和Android的App,叫做“健康日记”(一个致力于帮助你养成健康规律生活习惯的App)。在Android下确实被碎片化折腾死了,但开发团队确实成本很低。感兴趣的同学可以下载试试。关于微信小程序今年一个很热闹的词就是微信小程序,从上半年张小龙宣布应用号在筹备,到下半年小程序SDK掀开神秘面纱,小程序着实牵动了很多人的心。很多人稀里糊涂说微信小程序是H5技术,其实看完SDK我发现这跟HTML5没有半毛钱关系。微信小程序和之前百度、UC、QQ浏览器、Chrome Web Store、Firefox OS的Webapp完全不同。作为一个开放平台,不知道微信为什么放弃百度轻应用的思路,设计这么个SDK。坦白讲,这么设计SDK讨好不到任何人,Native开发的同学并不熟悉,而前端开发的同学也会觉得怪怪的很受限制。最重要的是,HTML5代码没法简单适配一下移植过来,还得重新开发一套。也就是说,这是一个伪HTML5的技术,开发的同学又多了一个平台要侍候。我猜微信平台的同学可能会说,这是出于性能上的考虑。但我只能说,店大欺客,仗着用户量高,对开发者真不友好。做“健康日记”时,本来打算借应用号的东风的,希望在应用号发布上简单适配一下就上微信的,结果等了半年等来这么个SDK,一看程序完全没法移植,要完全重新开发一套出来,只好放弃了。就仗着用户量,iPhone不也活活逼死了Flash吗,你牛。关于前端的缺人和高薪水我工作十年以来,前端圈前所未有如此盛世,技术圈也热闹,薪水也涨得飞快。但不得不说,技术圈的热闹和薪水涨得飞快并没有关系,仅仅是个巧合。技术圈的热闹,原因在于跨界和伪全栈。薪水涨得飞快,原因在于HTML5的应用场景变多了,和技术没有关系。说说HTML5现在的应用场景吧:PC端浏览器移动端浏览器超级App的Hybrid微信公众号这种App开放平台微信朋友圈微博的营销页面百度轻应用(很小众)后台(部分公司)微信小程序(姑且也算)特别需要注意的是“超级App的hybrid”、“微信公众号”和“微信朋友圈微博营销”这三点,在移动互联网之初的年,C/S结构的App是主流,Web已死是主基调,这两年前端的日子不算好过。然后随着淘宝、京东这种超级App越来越多,C/S结构更新麻烦,特别是iOS还需要在App Store审核的问题越来越放大,超级App不得不选择Hybrid的方式来进行发布和团队合作。而随着App也提供开放平台,Hybrid是唯一的选择(直到微信小程序打破它),前端的需求量突然大增,供不应求,于是前端长久以来一直被严重低估的局面终于得以扭转,薪水一路水涨船高。这种局面其实在年的Android和iOS圈里也发生过,然后培训机构大量提供Android和iOS培训,再然后供求关系得以平衡,Native工程师的薪水恢复到了正常情况。有需求就会有供给,值得注意的是现在培训机制也在开展HTML5培训了,等到HTML5工程师被培训机制批量提供出来,前端的好日子也就到头了。到那时,风就停了,猪就会摔下来。所以不要稀里糊涂地被技术圈的大跃进冲昏了头脑,你学会了两个时髦工具,面试官也在面试时问到了你时髦工具,然后你也顺利到了很高的薪水,就真以为是工具帮了你,你的能力真的就高了。不是的,是时代的原因。那个坐你旁边工作了好几年的一声不吭的老Java工程师薪水没你这个小毛头高,并不是人家水平没你好,并不是人家工作技术含量低,并不是人家比你笨,仅仅是因为做Java开发的太多了,市场饱和度高,仅此而已。所以偷着乐就可以了,然后赶紧补基本功。写在最后我曾经写过一篇文章,叫“置疑精神”。所以也请读者带着置疑精神来看我的这篇文章,认为有道理的,就听,认为不对的,保留你的疑问,不要迷信任何权威,这是技术人该有的美德。虽然我写了这么多,但也有可能,全是错的。作者:曹刘阳,网名阿当,资深Web技术专家,必杀技“前端开发、软件架构和敏捷开发”。先后任职于雅虎、淘宝、新浪企业。在“如何编写高质量代码”领域研究颇深,《编写高质量代码——Web前端开发修炼之道》作者。&责编:陈秋歌,关注前端开发领域,寻求报道或者投稿请发邮件。

我要回帖

更多关于 设计人员年度工作总结 的文章

 

随机推荐