新版百度开发者创建应用不能做web用哪个

»»百度FEX刘平川:做最专业的前端(图灵访谈)
  刘平川,百度前端基础技术团队负责人。从&有啊&和&乐活&到如今的FEX,一种创业的热情一直跟随着他。FEX的关键词包括开源,前端,全栈,和专业。虽然他们是基础技术团队,但是就像&内部创业一样&,他们也需要时刻面对来自产品线的各种反馈。刘平川希望可以让FEX的技术影响扩展到百度,乃至整个行业。但他也坦诚说,&我们需要很强的抗压能力&。
 激情和责任
  你从什么时候开始编程的?
  刘平川:真正开始编程是上大学之后和朋友去做了一个网络监控系统,接触前端是当时工作关系写了几个脚本的UI开源组件。后来2008年当时百度在做&有啊&的C2C,我对这个事情挺感兴趣。当时我虽然学了计算机,但实际上并没有真正从事这个行业,有些遗憾,于是我就来到了北京,真正开始了前端工作。
  听说在此之后您还有一些创业的经历,能简单介绍一下吗?
  刘平川:我在百度两年半后从&有啊&拆分出去创业了,叫&乐活&。当时有很多&有啊&的同事也纷纷出去创业。大家做C2C的时候聚到一起是因为有一个理想:把&有啊&这件事做成。虽然&有啊&最后没有做成,但是大家心里面都萌生了一个想法:下次一定要做出点事来,这也是我愿意拆分出去创业的原因之一。
  我在乐活创业一年多遇到很多问题,最后创业算是失败了,但是学了很多东西。最大的感触是创业不是有想法就能做得成,大多数的创业其实是水到渠成的事,因为需要天时地利人和。
  后来我回到百度,加入了FEX团队。回去之前我就想,这个机会如果再晚一年可能我就不会考虑了,如果过了当时的年纪要真正再去花所有的时间和精力去做好技术是很难的。所以既然来了,我就希望能在FEX团队安静地把技术做好。
  刚来到百度FEX时情况是什么样的?
  刘平川:原来这个部门人还挺多的,整个百度所有的前端都在这个部门。在我回百度之前,前端已经拆分到每个垂直部门了,还剩下大约一个60人左右的团队,支持公司很多产品线上前端基础技术上的业务。之前对这个部门了解程度有限,只知道这个部门有些不一样,也有很多技术牛人。但是怎么样去做好,其实说老实话我不知道。我当时的想法就是希望能让这个团队在这个行业里面留下一些痕迹而已。
  60个人已经是 3 个贴吧的规模了,如果有60个人,就不得不干60个人的活。这个规模至少得把好几个大产品线给接下来,我们暂时搞不来。人宁可少也不要多,人一多很多事情没法做。我之后做了很大的调整,把一些方向,比如Flash拆分到垂直产品线去了,现在只有30人。这么做的目的只有一个,就是为了个人和部门的长期利益。
  我自己是很有激情去做好这个团队的,但很多人可能觉得我是一时兴起,也就干3个月热度吧。我希望给每个人一个舞台,团队平台做到足够大的影响力。一年过后,我可以告诉大家,今年团队的状态很好,已经不需要太多管理了。
  你在这里面的角色是什么?
  刘平川:我其实现在走的是M(管理),不是T(技术)。我的角色就是在各个负责人之间找我应该做的事情,为我们中长期的目标打算。比如我们团队的技术影响力,部门技术更长远的规划,我们明年做什么,怎么把部门做得更好。
  去年底我们规范了运行机制,整体所有方向上包括技术规划和Review机制,还有各方向目标都公布出来。周报上面会写负责人是谁,衡量标准是什么,需要多少人力,什么Level,在什么阶段交付,这个事情对产品线的价值是什么,都会写在上面。今年很多事情都比较上正轨,后面才考虑做技术品牌和技术规划。这件事情团队其他同学,比如多益和牛尧付出很多,我只是做一些顺水推舟的事。
  今年我们的重点是在线化,包括很多内容:资源打包优化、全流程优化、数据监控,等等。也包括我们把PC端的一些复杂应用Web化,这也是今年的一个目标。在技术影响力上面,从我们的一些开源项目也好,跟业界的接触也好,我希望通过外部的资源和信息引入,推动内部更快地发展。
  你们和产品线的关系如此紧密,你的压力是不是很大?
  刘平川:我们各技术方向负责人压力确实会比较大,我们有机会可以接触到产品线里所有的人,产品线自然可以看到我们的每一个阶段。每季度或每半年,他们要看到我们的产出是什么,如果没有很合适的交代的话,会受到产品线的质疑。我们也曾经遭遇过做了几个技术项目都没有得到认可的情况。可以想象这就像内部创业一样,创业需要很多的尝试。我们做得好了,每个产品线都会多给点资源。但如果我们做不好,就什么都没有。
  无论是否做成我一直坚信的是,只有没做好的事,没有做不好的人,态度是首要的。一个团队可以做很多事,一个人可能这个事情做不好,做另外一个事情就好了。一个人发光发热需要时间,也需要一个巧合。
 技术能解决什么问题
  你认为技术/工程师和产品的关系是什么样的?
  刘平川:我曾和一个朋友讨论技术,他的一套理论让我哑口无言。他说,设计模式就是人想出来的,也是一种想法的抽象,你觉得设计模式做的就对了吗,我的代码乱是错的吗,如果我把技术问题解决了,你为什么要管我是怎么解决的呢,是否是你们对技术的评判标准有问题呢?后来我想,是不是我们对代码优雅这个问题已经形成了一些思维定式,对于代码杂乱和提供问题快速解决方法的人有种不屑一顾呢?
  我的一个朋友创业,他团队中的某个工程师,一个人仅用了一个月的时间搭完产品上线了。虽然技术的可维护性几乎没有,那你说这个人的技术是好还是不好?这件事情没有办法用传统的思维来评判。原来的标准其实都是一种大公司式的评判标准。虽然他的代码别人无法维护,但是他做的事是有价值的,创造的经济价值比传统科班出身的人多得多。后来其他工程师维护起来说代码太乱,用了3、4个月把代码改好。而这种能闯的人对创业公司其实更具有吸引力。
  设计哲学这件事恐怕没有人能讲清楚。所以有些事不要太较真,要看这件事是为了什么。如果过两年这件事仍然对我们很重要,那就有价值,但是从大多数情况来看,一般过半年就不再重要了。
  技术永远是一种手段,而不是目的。产品最终结果不在乎你技术有多牛,只在乎你能把产品带到什么高度,在这过程当中能解决多少技术问题。
  为什么要工程师自己担任产品经理?
  刘平川:我们没有产品经理,技术需求来源最主要从产品线来,我们需要了解工程师开发中的痛点,产品中的体验问题,找到合适的切入点开发出靠谱的技术方案。
  现在每个技术方案负责人都是方案的产品经理。我要求团队的同学需要用这些做产品的思路来做技术,这样思考才会技术项目做得全面,系统,也更具有说服力。
  一些比较具有前瞻性的项目我们可以先做原型,原型做完后再给到产品线中去,如果不回到产品线里去,我们肯定会做偏,技术会没有宿主。每个人都会有很多技术想法,如果你最后没有落实到产品线的话,就没有意义,所以我们做技术需要用产品的视角来做。
  技术方案的推广上原来我们大多是强推着产品线工程师在用,甚至变成他们的KPI,这是有问题的。强推还不成熟的技术反而会引起负面效果。后来我们分阶段对待,不用行政手段。把技术方案的使用广度作为一个阶段性的衡量标准,比如当某项技术方案质量做得足够好的时候,再去看一个周期内落地了多少产品线,这样的评价才更会有意义。负责人需要每个阶段都有相对明确的定义,让每个工程师都能理解这个目标。
  技术人员身兼经理的必要性在哪?
  刘平川:基础技术的团队与产品业务团队有很大的不同。以前我带过几个业务团队,我个人的感觉是产品业务团队的运行是由产品业务来驱动的,经理协调&人&的时间比较多。
  而在基础技术团队,是技术驱动项目,用产品思路做事,没有职能体系之间的协调会影响效率的问题。我们很少开会,每周固定的会议只有部门例会。团队之间技术讨论是最多的,所以我们会议基本都是在技术讨论与评审,我也需要参加,还要拍板决策。
  如果基础技术团队的经理只负责协调人而不管技术还会有一个问题。由于经理没有办法判断技术的趋势,缺乏技术创新,团队的技术视野会逐渐受限。这样的经理思维方式也不会跟一线工程师在一个频率上面,沟通不了。所以我认为基础技术团队的经理应该和高工有同样的职能,经理就是拥有行政权利的工程师。
  您曾经提过技术的止盈止损这个概念,是指什么?
  刘平川:技术既需要止损也需要止盈。很多技术项目可能当你做到一定程度之后,会发现它的意义已经不是那么大了,这个时候就应该果断地止盈或止损。
  比如说编辑器,我们的UEditor编辑器在行业里面,至少在国内还算可以了,现在很多外部公司也都在用,我们每天都会收到问题反馈邮件。但我从去年就在考虑,我们这个组的方向不能只限于做编辑器,应该把这个组的视野拓宽一点。是不是可以将现有PC本地端有的东西,放在Web上面去试试,我们认为Web有这种能力,可以解决很多现有阶段Web的复杂功能。在今年,原来的富文本方向也转变成富应用方向,目前百度脑图、矢量可视化公式编辑也都是这个方向的产出。
  止盈止损是经济学里的一个概念,即是适可而止。放在技术上大概的意思就是像编辑器那样的成熟项目,可以暂时减少人力放缓发展。把人力资源抽调配到目前更具有创新性的其他技术或虽不成熟但需要快速突破的方向上。我们可以一直抱着旧的东西不放,这块技术可以让我们活下去,但我一直认为,如果只做那一块技术而不愿意去扩展,其实就太小看我们自己了。
  今年您参加了韩国举办的WWW年会,有什么见闻?
  刘平川:今年WWW大会在韩国首尔,主要的赞助公司是Naver,他们不仅有搜索引擎,还有一个叫Line的App,就是微信的韩国版。在韩国Naver就是百度+腾迅的产品架构,国内很多大互联网公司都&抄&过这个公司的产品。
  我们国家的互联网公司在国外的知名度还是不高,更谈不到影响。与会场的一些参会人聊天时发现,他们不太清楚中国的互联网情况,也不知道百度、淘宝。后来我们提到百度是本次赞助商之一,他们才知道百度。 在韩国找路线的时候没法用百度地图,只能用Google。用它可以通过中文搜索酒店景点名字,包括公交路线也都能找到。如果没有Google 地图的话,我们几个没有一个人能在首尔出行,这给我触动很大。真正做得好的技术可以利用到很多行业,影响到很多人。
  您能简要介绍一下FEX正在从事的开源项目吗?
  刘平川:开源在FEX是一种心态,接受review与check,接受反馈,希望用UGC思路把技术项目做得更好。目前我们也是这么践行的,从项目代码到面试题,以及博客和style guide,都接受Pull Request和Issue。
  现在我们的开源技术项目大家熟知的有七八个,FIS、编辑器、脑图、公式、HTML5上传组件、移动组件。暂时都是工具和组件类偏多,目前star总量有近2000,fork也有大几百。
  是我们最新推出的项目,它是一个在线脑图编辑器,已经和百度云盘打通了。从技术角度来看,是因为之前我们有一定的矢量技术基础,所以初期脑图原型我们开发时间并不多,1个人不到1个月的时间开发完成上线,现在也在接受反馈,不断迭代。
  上线以后,从Web内容消费与创作的产品思路来看 ,云盘解决了文件存储的问题。而文件内容,例如办公系列,教育图形公式的一些内容创作,还有很大的可在线化空间。我们做的话,既能沉淀技术,还可以帮百度做很好的内容创作工具,落地到阅读、贴吧、知道、百科或云,甚至可以诞生出一个完整的创作平台。从对脑图的反馈来看,大家非常希望出现更多Web形式的全端在线查看、编辑与分享的工具。
  FEX上最受欢迎的项目,现在的发展状况怎么样?都有哪些公司在用?都有什么人在贡献代码?
  刘平川: FIS 的使用人群可大致分成三类。
  第一类是百度内的工程师,随着产品线使用广度的不断扩宽,FIS已成为公司大多产品线前端开发的标准。我们把技术服务做好,有问题第一时间解决;一旦有新产品线使用,我们会有同学跟进到产品线里进行培训。公司内反馈最多,我们也最为关注,我们会将他们的反馈抽象放到FIS上,慢慢积累,使得FIS从量变到质变。公司内其他团队为FIS贡献不少,比如即将上线的NodeJS框架,是与文库同学一同合作开发的,可以说FIS是在所有产品线的工程师帮助下才能走到今天。
  第二类是从百度离开后将FIS转而带到其他公司的工程师,这是对FIS的认可。他们认为它可以为新的环境创造价值,解决新环境的问题。现在至少6家公司都是这样,同时他们也会对FIS贡献部分代码。
  最后是通过国内外的技术杂志、讲座上看到对FIS技术的介绍,感兴趣并使用的工程师。这些工程师从了解到使用的周期相对会比较长,目前贡献的代码不多。但我们现在也很重视这样的人群,所以对文档不断维护,并持续更新,而官网最近也把FIS重新定位成前端工具和用工具及框架生成的解决方案,同时增加了使用解说视频,帮助大家更快地了解和使用FIS。
  FEX名字的由来?
  刘平川: FE代表前端(front-end),X代表了每个人都能独当一面,不仅所有事都了解一些,而且还有一个专长。就像X战警一样,每个人都有自己独特的能力,但是作为团队可以一起把事情做得更好。
  在网站上可以看到FEX的口号是&Best or nothing&,这看起来是一个比较有野心,也比较有风险的情况。你们怎么平衡跟现实之间的关系?
  刘平川:最早我们自己也没想清楚怎么样定位自己。无论是基础技术组还是通用组,感觉都不能很好地体现我们的能力。去年经过半年时间,我们逐步精简后把&专业&作为我们的定位,所有的技术项目、文章与践行都围绕&专业&来做。
  与产品线合作,我对团队同学有几个要求:第一,我们一定要在这个方面做得比他们更专业更全面;第二,别人能做到的我们也要能做到;第三,我们也要去做业务,不要说只做基础技术部分,业务基础一样要做专业。
  你们团队里面的内部构成是什么样?
  刘平川:目前一共是4个大的方向:
工程架构和流程优化,能力上可以理解为&全栈&。包括百度几乎所有产品线在用的FIS、静态资源自动优化打包优化、持续集成、全流程优化等,同时也在一定程度上承载我们其他方向组件与工具的输出。
监控评估,包括现在几乎所有的前端数据的收集与监控,比如前端性能的监控,浏览器新特性的检测,异常的监控,XSS检测。这其中还包括评估,也就是针对监控和产品核心指标的关系,以及我们自己的技术项目应用到产品线里的价值评估情况。
Web富应用,有编辑器,个性化的可视化展现,百度脑图,可视化的矢量公式编辑等。
还有就是全端技术,比如WebUploader的快速上传组件、移动端的组件库GMU和之前在做的轻应用中的轻组件。
  轻组件是怎么回事?
  刘平川:原来的组件要么是原生客户端的一套组件,要么是Web的一套组件,我们认为轻组件就是这两套的综合。比如一个滑动的图像展示,如果你要在目前的Web上展示的话,它的流畅度不高,用原生的话就会很快。所以如果你用JS在我们提供的API上写代码,它会在不同的运行情况下用不同的方案。这就像PC时代Flash插件的思路,没有Flash插件就变成最原始的显示,有Flash运行时体验会更好。这就是一种轻组件的思维。
  为什么你们需要的人是全栈工程师?
  刘平川:我们在FEX博客上招聘要求全栈/全端工程师,还要求充分的自驱。在公司内部我们团队会维护自己的服务器和知识库的系统与机器。这些搭建都是我们自己完成的。虽然前端数据系统的Hadoop不是我们自己搭的,但是MapReduce的脚本都要自己写。
因为我们的工作不是狭隘的前端领域,也不局限于语言,需要涉及前后端。Web服务器以前就叫前端,开发流程优化这些工作我们都做。而流程的优化像持续集成与前端的运维就涉及到传统的前端和后端,这就要求我们在技术上也要掌握这个方向。
  基础团队对于整个公司的价值是什么?
  刘平川:我们现在想得比较清楚,是因为也经历过迷茫。去年各方向的负责人曾坐在一起讨论过我们应该做什么业务,我们做的业务应该有什么样的特性,我们应该怎么样跟产品线合作,整个前端和后端怎么合作。讨论过后我们发现,基础团队做的事应该是业务团队&重要而不紧急&的事。
  我们认为对于业务团队来说,基础技术可要,也可不要。没有我们业务团队也能招人做,但业务团队需要我们,是因为有我们他们能做得更快更好更专业。如果业务团队使用了你的技术,那么基础技术团队的水平就决定了业务团队开发的技术架构的平均水平,这体现在开发效率、开发质量、带宽利用与人力成本上。
  带领FEX团队的过程中,你有什么感触?
  刘平川:很多的触动都是这个团队的同学给我的。我认为他们很多人比我优秀,我在团队中的作用就是让大家同心协力,有一个目标感,一起把一个事情做好。
  比如团队的多益,技术非常好,之前我一直觉得应当给他技术上挑战很大的事情去做。后来他主动去搭团队的blog,把原来分散的代码仓库转移过来。而且他在博客上也发表了很多文章,也主动写了我们的开源面试题。我问他,你会不会期望做更多技术上有挑战的事,他回答说,他很希望能做这些帮团队扩展技术影响力的事情。很多技术能人可能比较喜欢独善其身,不愿意把个人与团队放在一起。我很幸运的是团队里都是既追求技术理想,也愿意配合团队目标的能人。团队有共同的价值观,每位工程师都希望把各自方向的技术做到极致。
  百度最佳员工我们部门就有5个。我们还拿到公司级别的 2个平台工具奖,1个最高创新奖。其实大家心里面都希望未来能拿一个公司的最佳团队奖。我觉得既然大家都能这样想,那我也不怕有什么事情做不成了。
验证消息:Admin10000
提示:常上QQ空间的朋友可关注,精彩内容不错过。
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心做WEB前端开发需要什么知识,怎么才能入行(被录用)_百度知道
做WEB前端开发需要什么知识,怎么才能入行(被录用)
提问者采纳
你好,我建议你去慕课网, 这是一个垂直的互联网IT技能免费学习网站
提问者评价
非常感谢你的建议,我已经在里面学习一天了。
采纳率100%
其他类似问题
前端开发的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁百度媒体云和开发者一起“云化视听新生活”
8月31日,在&2013中国软件开发者大会&上,百度移动&云事业部研发经理陈彬表示,自百度媒体云推出以来,受到了开发者的追捧。近日,百度媒体云还向开发者开放语音、图像、视频三大技术服务,帮助开发者降低技术门槛和开发成本,助力开发者迈入移动互联新时代。
业内人士评价,媒体云在移动互联网时代对于开发者具有非常高的价值,百度所推出的媒体云,降低了媒体应用开发技术门槛,极大地节省运营成本,实现和开发者一起&云化视听新生活&。
语音技术的&生态构建者&
&百度媒体云是基于百度内部深厚的多媒体技术积累,通过开放语音、图像、视频三大云能力,以百度媒体云的方式在移动及碎片化终端时代为开发者提供整体的媒体解决方案。&陈彬这样给出了百度媒体云的定义。
8月22日的&百度世界2013&大会上,百度已经宣布向开发者免费开放百度整个语音生态系统,这主要包括三个层次:第一,最底层的语音识别技术API,方便开发者通过API接口实现语音识别功能;第二,百度语音助手SDK,使服务和应用直接对接;第三,硬件可以直接安装百度语音助手,帮助初级开发者成长。
&百度语音识别技术从发展到开放,成功案例已经比比皆是,比如在2012年底小黄鸡趣味自动聊天机器人,通过搞笑和无厘头的自动回复迅速走红于网络;订票助手通过百度语音识别技术,实现了订票全程语音化。保益盲人地图通过使用媒体云语音SDK,实现了通用语音识别、通用语音搜索,以及音乐、视频、地图、app、网站名等垂直领域的语音识别技术等各项功能。&陈彬说。
业内人士表示,语音识别技术及能力的开放,更是实现了百度从&行业领跑者&到&生态构建者&的转型。
图像技术开放催出&明星应用&
&百度图像技术的开放则向开发者开放人脸验证、检索、属性识别以及图像能力,陆续有人脸验证、人脸检索、人脸属性识别、图像处理四种技术能力开放,开放方式为人脸服务SDK、人脸服务API、图像处理SDK等三种方式。&陈彬说。
百度的图像技术,催生出许多明星应用。其中,&百度魔图PK大咖&功能就是凭借着人脸识别技术和强大的图像能力,在全球超过20个国家和地区的App Store摄影与录像应用软件中排名进入前五,用户量突破一亿大关。&百度作为一家搜索引擎公司,在自然语言处理,语音搜索,图片搜索,视频处理等领域有非常深入的研究及长期的技术积累,最近非常火的百度魔图PK大咖 ,手机百度的&为你写诗&都是这些云能力的集中体现。&陈彬说。
陈彬坦言,近期人脸技术就会对所有开发者开放,目前已有多家合作伙伴接入,随着图像技术的开放,将有更多的开发者利用到图像的先进技术,从而开发出更多明星应用。
视频技术开放&惊呆小伙伴&
&视频是百度媒体云最先开放也是目前开放功能最多的方向,包括跨终端的T5播放内核及多屏互动SDK、视频云转码、点播及直播等,向开发者提供了完善的平台服务和解决方案。百度媒体云在极速播放内核、高效转码、实时传输及分发等方面具备核心技术优势,其中播放器SDK覆盖了主流平台,包括Android、IOS、Flash、HTML5等,Windows Phone版本也即将推出,在碎片化终端兼容性及稳定性上领先于国内其他播放器及MXPlayer等世界一流产品。&陈彬说。
他表示,尤其是视频LIVE直播服务,将会惊呆开发者小伙伴们,因为视频LIVE直播服务会把你的直播资源直接分享到他们的终端上,充分利用了媒体云实时上传、实时转码、实时分发、实时播放等SDK。中视里程创始人赵晓侠算是被惊呆的一个开发者&小伙伴&。赵晓侠已经与百度合作推出家用视频监控产品&i耳目&。他说:&通过利用百度媒体云、个人云存储等服务,我们只用了两个月就开发出i耳目。百度的技术框架,让我们节省时间和成本,非常便捷。&
&我们希望利用图像、语音、视频技术的三大开发武器,使开发者们获得技术支持,降低运营成本,同时加速商业变现。希望越来越多的开发者加入百度媒体云,我们一起&云化视听新生活&。&陈彬说。
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看资讯资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
相关的资讯有:
相关的博文有:
就在刚刚,魅族之前表示1月19日要“发红包”,现在官方正式揭露是新品发布会时间——...
最近三星GALAXY S6各种信息曝光不断,在陆续泄露用户配置文件和传闻会采用按压式指纹...
乐视在电视和视频行业顺风顺水,之后他们又打起了智能手机和汽车的主意。乐视要发布智...
在2015年极客公园创新大会中,锤子手机获2014最佳体验奖。极客公园创始人张鹏对话了锤...
最近有传闻称魅族将推出国际版MX4,其合作伙伴则是昔日手机巨头诺基亚。这款手机将主...
刚迈入 2015 年的时候,库克曾在自己的推特上写道:正在计划 2015 年的五大目标。这条...
流量宝”是欧朋浏览器开发的一款Android手机免费省流量APP,采用Opera云压缩技术,号...
在本届CES大展上,来自诺基亚的独立品牌Here地图也展出了当前和未来将要推出的地图产...
2011年10月对于苹果来说发生了两件大事,一是重新定义了智能手机的乔布斯突然离开了人...
作为和擎天柱同款车型的通天晓或许很多年轻朋友还不太了解。小编在这里跟他家简明介绍......
雷霆战机游戏中有非常强大的装备系统,很多玩家都不是很了解装备最强搭配的技巧,下面......
暖暖环游世界新品推荐~高分搭配技巧,暖暖环游世界中的新品套装使用可以分为每个细节......
天天酷跑小魔女怎么样~小魔女技能属性攻略,天天酷跑小魔女值不值得培养,培养方向是......
Copyright (C)
All rights reserved.
京公网安备号
请选择一张图片分享
要转发到新浪微博,请
要转发到QQ空间,请【移动web应用】到底是什么啊,感觉对开发者没有什么好处_百度开发者中心吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,259贴子:
【移动web应用】到底是什么啊,感觉对开发者没有什么好处收藏
1,不能投放广告2.没有基金扶持3,……好像什么都没有呢给个解释,我希望看到的是错的
1楼 15:35&|
相关的贴子753345103相关的图贴
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
内&&容:使用签名档&&
想了解更多关于 ”百度开发者中心“的信息,请&或关注前端开发微信微信号web007007
好的代码像首诗,烂的代码像坨屎
用Chrome开发者工具做JavaScript性能分析
你的网站正常运转。现在我们来让它运转的更快。网站的由页面载入速度和代码执行效率决定。一些服务可以让你的网站载入更快,比如压缩JS和CDN,但是让代码执行的更快你要做的事情。
代码中很小的改动都可能对造成巨大的影响。快速灵活的网站和可怕的“无响应脚本”对话框可能只有几行代码的差别。这篇文章告诉你如何通过用( Developer Tools)找到这几行关键的代码。
设置一个基线
我们来看一个简单的“颜色排序器”应用,这个应用展示了一个由各种颜色构成的网格,你可以拖拽这些颜色进行混合。每一个点都是一个div标签加上一些让它看起来是圆的的CSS。
生成这些颜色是需要技巧的,所以我借助了”Making Annoying Rainbows in Javascript”。
页面载入的很快,但还是花费了一些时间,在渲染之前还闪了一下。是时候对这个页面进行分析让它更快了。
在开始做优化的时候要设置一个基线,来明确这个页面的速度到底怎样。这个基线可以让你知道自己是否做了优化并帮助你权衡利弊。在这片文章里我们要使用chrome。
分析器(profiler)是chrome的一部分,点击小扳手下面的工具菜单就可以打开它。Firebug也有一些评测工具,但是webkit内核的浏览器(chrome和safari)在对代码进行分析和展示时间线方面是最棒的。还提供一种很棒的事件跟踪工具,叫做 speed tracer。
在时间线(timeline)标签下开始记录,载入页面然后停止记录,这样就设置了一个基线。(打开chrome,点击“时间线”标签,然后点击窗口底部圆形的黑色“记录”图标开始记录)。chrome是很智能的,只有页面开始载入的时候才会开始记录。我记录了三次然后取了平均值,以防我的电脑在第一次测试的时候运行的很慢。
我的平均基线,也就是从第一个请求到页面全部渲染结束所花费的时间是1.25秒。这个时间不是太长,但是对于这样一个小的页面来说也不算好。
我想让代码执行的更快,但是我并不知道是什么让它慢下来的。分析器(profiler)帮助我找到原因。
创建一个Profile
时间线(timeline)告诉我们代码运行花费的时间,但是并没有帮助我们知道代码运行的时候发生了什么。我们可以做一些改动然后不断的测每次代码运行的时间,但这是盲目的。profiles给我们提供了更好的方法。profiler告诉我们哪些函数的执行占用了大部分时间。让我们切换到chrome的“Profiles”标签页开始性能测试,这里一共提供了三种类型的性能测试。
javascript cpu 性能测试
显示javascript占用了多少CPU
css选择器性能测试
显示处理CSS选择器占用的CPU
显示javascript对象的内存占用情况
我们想要javascript代码执行的更快,所以我们进行CPU性能测试。我们开始性能测试,刷新页面然后停止。
通过性能分析首先知道很多函数在执行。“颜色排序器”使用了jQuery和jQuery UI,来处理些管理插件和解析表达式之类的事情。我发现列表最顶端的是decimalToHex和makeColorSorter两个函数。这两个函数占用了CPU13.2%的时间,这是做优化的好地方。
我们可以点击函数调用旁边的“下一个”箭头来查看完整的函数调用堆栈。展开后,可以看到decimalToHex是被makeColorSorter调用的,makeColorSorter是通过$(document).ready调用的。
弄清楚这两个函数是哪里调用的,也就弄清楚了让颜色可以排序并不是最大的性能问题。通常情况下性能问题都是由多余的排序操作造成的,但是在我的代码中相比与排序增加DOM元素花费了更多时间。
我想要让这些函数执行的更快,但是首先我想要将我的改动区隔开。在页面载入过程中会发生很多事情,我不想要这些影响到我的性能分析。
我做了第二个版本,这个版本中“颜色排序器”在我点击按钮之后才载入,而不是在document ready的时候载入。这就把文档载入的过程分离出去,让我可以只对颜色分类进行性能测试。调完性能之后我可以立刻改回去。 让我们调用新的函数testColorSorter并把它绑定到一个可点击的按钮上。
在我们进行性能分析之前改变应用可能导致意外的结果。这个改动看起来很安全,但是我还是要重新运行性能检测器来看看我是不是无意中改变了什么。我会开始一次新的性能分析,点击应用中的按钮然后停止。
我首先注意到decimalToHex函数的载入只占用了4.23%的时间。这是代码执行花费时间最多的地方。我们创建一个新的基线来看看这个方案对代码有多大的优化。
有些事件在我点击按钮之前有触发了,但是我只关注从我点击鼠标到浏览器渲染“颜色排序器”花费的时间。鼠标在390毫秒时点击,渲染事件在726毫秒处被触发。726减去390得到我的基线336毫秒。和第一个基线一样我重复了3次来取平均值。 这时,我知道如何获得并且得到了代码确切的运行时间,我们已经准备好开始解决问题了。
让代码更高效
性能分析器只告诉我们哪个函数造成的问题,所以我们要查看下函数的源码来了解函数做了些什么。
“颜色排序器”中的每一个颜色点都有一个16进制的色彩值,例如#86F01B和#2345FE.这些值表示一种颜色中红,绿,蓝三原色各自的数值。例如的背景色是#2456FE,代表红色的值是36,绿色的值是86,蓝色的是254,每一个数值必须是0到255之间的。
decimalToHex函数把这用RGB值表示的颜色转化为页面中我们使用的16进制颜色。这个函数十分的简单,但是我还是留下了一个可以去掉的调试代码console.log在那里。
decimalToHex 函数还在数字之前加上了补位。这是很重要的一点,因为有些10进制数字对应的是1个16进制数字。比如十进制中的10对应着16进制中的C,但是在CSS中需要一个两位数。为了让这个进制换算更快速,我们让这段代码不是那么泛化。我知道每个需要补位的数字长度都为1,所以我们可以这样重写这个函数。
第三个版本的“颜色排序器”只有在需要补位的时候才改变字符串,并且不用调用substr函数。有了这个新函数,运行时间是137毫秒。再次对代码进行性能测试,可以发现decimalToHex函数只占用了总时间的%0.04,到了列表的下部。
我们还可以发现占用CPU最多的函数是 jQuery的e.extend.merge。我不知道这个函数的作用,因为代码是压缩过的。我可以使用开发版本的jQuery,但是我发现这个函数是被makeColorSorter调用的。所以下一步我们先让这个函数执行的更快。
“颜色排序器”中的多彩颜色是用过正弦曲线生成的。在光谱中设置一个中心点,然后以一定的偏移来创建这个曲线。这就把颜色变成了一个“彩虹模型”。我们还可以通过改变红绿蓝三原色的使用频率来改变颜色。
我们要去掉console.log函数。这些调用非常的糟糕,因为每次执行都会调用decimalToHex函数,这意味着decimalToHex函数会被多调用2倍的次数。这个函数大幅度的改变了DOM结构。每次循环,都向id为colors的div中添加一个新的div。这就让我怀疑这就是e.extend.mergefunction做的事情。用性能分析器做一个小实验就可以搞清楚。 我想要一次把所有的div添加进去,而不是在每个循环中添加一个新的div。创建一个变量来存储数据,然后在最后一次性添加进去。
这个小改动意味着DOM只在添加所有div的时候做一次改变。用时间线进行测试,我们发现从点击到渲染花费了31毫秒。这个dom变动,使得第四个版本的运行时间降低了86%。我可以再次打开性能分析器(profiler),发现e.extend.merge函数占用了很少的时间,在列表中已经看不到它了。
我们还可以完全移除decimalToHex函数让代码更快一点。因为CSS支持RGB颜色,所以我们不需要把他们转换到16进制。现在我们可以这样写makeColorSorter函数。
第五个版本的执行只用了26毫秒而且代码行数从28行减少到18行。
在你的应用中进行Javascript性能分析
实际工作中的应用要比“颜色排序器”复杂的多,但是做性能分析要遵循同样的基本原则
设置一个基线,这样你就知道你是从何处开始的。
把问题从应用的其他代码隔离出来。
在一个可控的环境下进行优化,频繁的使用时间线(timelines)和性能分析器(profiles)
还有一些性能优化的准则
从最慢的部分开始,这样在时间优化上可以得到最大的提升。
控制环境。如果你换了电脑或者做了任何大的改动,都要设置新的基线。
多次分析以防你电脑的异常导致得到不正确的结果。
每个人都想要他的网站更快,你必须开发新的功能,但是新的功能通常会让网站更慢。所以花费时间来做性能优化是有价值的。
性能分析和优化使得最终版颜色分类器的执行时间减少了92%。你的网站可以变快多少?
本文固定链接:
【上一篇】【下一篇】
您可能还会对这些文章感兴趣!

我要回帖

更多关于 如何成为百度开发者 的文章

 

随机推荐