使用最好技术的不可见成本:AngularJS

jopen 10年前

英文原文:The Unseen Cost of Using the Best Technology: Angular.js

  很多企业家都对使用最好的技术代表着什么存在盲区:他们认为这更像是新技术将提供的功能,需要多长时间完成编码,以及是否值得。

  他们常常忽略了基于公司能力去选择前沿技术的后果,而是雇佣、做 SEO、兼容很多浏览器和集成通用插件。

  我们雇佣的前端工程师建议了 AngularJS,在做了研究之后,发现 Google 支持它,我们决定尝试。Ember.js 貌似太新而没有太多的最新文档,我们听说,即便 Backbone.js 已经非常普遍了,AngularJS 与 Backbone.js 相比,是更加优雅的解决方案。

  这个决定让我们感到高兴,但是我们对于随之而来的、没有预料到的、很多不同问题感到吃惊,在我们首次决定使用 AngularJS 时,并没有小心权衡。下面是你采用 AngularJS 之前应该考虑的一些地方,而实际上适用于任何新的前沿技术。

  1)低版本浏览器

  AngularJS 不支持低于 8 的 IE 版本。目前,我们的网站不支持 IE8 和 IE9,我们仍然在尽量解决中。搞清楚 IE10 当中的 bug 花了不少时间。所有 IE 用户占到了 25% 流量,IE8 和 IE9 大约占到了这部分流量的 80%。还不能使用我们网站的用户是相当多的,严重影响了我们的转化率。

  面向 IE8 和 IE9 这些低版本浏览器编程已经足够困难了,在那些浏览器很少能处理好 CSS 怪异现象的前提下,增加一个新的前沿前端技术也就成了相当巨大的障碍。

  2)SEO

  如果你有完全用 AngularJS 实现的 app,那意味着相当有可能你的源代码只是 JavaScript 文件。Google 还没有找到抓取动态内容的有效方法,如果你不做出一些调整,你可就要倒霉了。

  我们有了存在于 AngularJS SPA(单页应用程序)之外的“混合”页面,它们是 Django(我们在用 Python 框架)里的普通页面,内容是可被爬虫抓取的。这些页面只在一个地方调用了 AngularJS,那就是搜索框,当你搜索的时候,AngularJS 会被调用。

  这意味着我们有必要让一堆附属内容散落在中央 AngularJS 的 app 周围。

  这也意味着在页头和页尾的某些代码需要被复制,因此当我们想增加一个类库或标签时,我们需要在两个地方增加。

  3)Adsense、Clicktale 以及很多类库都不能直接使用了

  Adsense 不能在载入动态内容的网站运行。事实上,做个变通方案,是可以让它成为可能(iFrame 等等)的,但是违反了服务条款(TOS:terms of service)。这意味着,AngularJS 以及使用了 Ajax 的任何东东,都不能直接使用 Adsense 了。

  我稍微休息一会儿:是的,世界上最重要的在线广告领导者还没有找到一种在动态载入内容的网页上呈现广告的简单方法。而 AngularJS 是新兴的、通过 Ajax 载入动态内容的,肯定不可以了,Google 也没有找到有效的解决方案也是让我颇受震动的。

  Adnsense 不能正常运行是因为它要等到 DOM 被构造好以后,才能基于网页内容实例化广告。它是在网页载入完成之后才执行的,但是对于 AngularJS 之类的“单页应用程序”,你从来不需要重新载入一个页面,所有内容都是动态载入的,在“页面”直接实现了无缝切换。

  花了一整天找到的解决方案就是使用 Doubleclick For Publishers【注2】,一个不同的 Google 产品,通过它来载入 Adsense。一旦新的“页面”被载入,我们不得不“刷新”广告区域。这是个小伎俩,却是有效的。

  真的花了好长时间才搞定的。

  与 Clicktale 类似,我们使用软件监视用户会话并找到可用性问题。对于普通网页,你只需一段代码,但是对于我们的网站,我们不得不使用它们的特定 API。

  本来 5 分钟的事情,以色列的技术团队来来回回搞了一周。

  4)程序员

  很多程序员对新技术不了解,因此当雇人的时候,你不会有太多选择。

  在我们发起了重要的合作伙伴关系的那一天,前端程序员离职了,我们才碰到了这个问题。我们招到了某个员工的一个白俄罗斯朋友,他实际上有对 AngularJS 贡献过源代码。他们从他的日程上抽出时间作为对我们的个人支持。但是我们说到的大部分人没有 AngularJS 经验,通常的反应会是“是的,我们正打算学习呢,因为它绝对是未来,但是我们还没有这方面的专家。”

  总结

  总之,在你面临使用 AngularJS 之类的新技术的选择时,你需要考虑的因素有很多,决不仅仅是“它是一个不错的框架”。你需要考虑招到人有多大难度,这个人要了解该框架,像 SEO 之类业务的其它方面的后果、广告集成以及跨浏览器兼容。

  我们对 AngularJS 非常满意,因为我们有资金和时间来开发长期内可持续的功能,不过,它一定不适合每一个人。

  当前沿技术引发的所有潜在复杂问题出现时,做为一家公司,要确信你有能力搞定。

  • 原文地址:http://davidlitwak.com/the-unseen-cost-of-using-the-best-technology-angularjs
  • 注1:Clicktale 成立于 2006 年,相对于偏统计的流量分析工具,Clicktale 偏向定性,它可以告诉使用者为什么网站转化率上升了,用户体验上升了?而不是简单的流量多少,流量产生时间和流量渠道。主要是因为 Clicktale 能够录制网站访客行为,将访客的一举一动全都录制下来,并且通过播放器完整地展示。除了视频录制,还包括热力图、转化漏斗、表单分析等强大功能。 Clicktale 追踪数据的技术属于 Javascript 标记,类似市场上通用的跟踪,例如 Adobe Sitecatalyst, google analytics, 百度统计,CNZZ 等,代码安装非常简单和方便。http://www.clicktale.com
  • 注2:DoubleClick for Publishers (DFP)是 Google 的第三方广告托管解决方案,前身为 Google Ad Manager,集成 DoubleClick 的 DFP 产品之后推出正式的 DFP 系统。https://www.google.com/dfp/