• 遂宁一女医生为救病人长期扮小丑 背后真相令人动容 2018-03-17
  • 末世之人生赢家 末世危机 472 帝都大乱斗之娃落敌手 书阁网 书阁网,文学,书库,玄幻奇幻,武侠仙侠,都市乡土,历史军事,体育游戏,科幻灵异,女生动漫,其他类型,全本小说 2018-03-17
  • 深港舞剧《弟子规》将举行粤港澳大湾区巡演 2018-03-17
  • 财经“名嘴”靠忠诚高升特朗普首席经济顾问? 2018-03-17
  • 伊能静深夜发文感慨生老病死 三个我希望献忠告 2018-03-17
  • 英媒:中国计划2021年交付首架C919客机 与波音 2018-03-17
  • 【脱贫攻坚春季攻势】农技服务助力产业扶贫 2018-03-17
  • 重生九七当军嫂 苑树山无弹窗广告TXT下载 2018-03-17
  • 市十五届人大常委会第九次会议召开 2018-03-17
  • 邯郸通报6起破坏营商环境典型案件 2018-03-17
  • 湖南小伙不远千里求医威海国安医院 2018-03-17
  • 前后3任河南省委书记同日有新职 2018-03-17
  • 卖盐场边境检查站第一位女兵侯晓凤 毒品藏多深都逃不过她的一双慧眼 2018-03-17
  • 国际经济界人士看两会:中国实现高质量发展可期 2018-03-17
  • 重磅!特维斯卷入洗钱案 已被阿根廷警方通报 2018-03-17
  • 北京赛车怎么赚钱 资讯 关注 科技 财经 汽车 房产 图片 视频

    新车

    旗下栏目: 新车 导购 行情 养护

    详解客户端JavaScript框架的5个弊端

    来源:未知 作者:xinbwang 人气: 发布时间:2017-06-30
    摘要:几个月前,当我们打开Sourcegraph网站的时候,它是一个富AngularJS应用,服务器只要把原始HTML和JSON endpoints返回,剩下的就交给Angular来搞定了。我们就这样懵懵懂懂地做出了最初版本的Sourcegraph。 但是单页(single-page) JavaScript框架并不适用于每一

    北京赛车怎么赚钱 11.www.dfczq28.com 几个月前,当我们打开Sourcegraph网站的时候,它是一个富AngularJS应用,服务器只要把原始HTML和JSON endpoints返回,剩下的就交给Angular来搞定了。我们就这样懵懵懂懂地做出了最初版本的Sourcegraph。

      但是单页(single-page) JavaScript框架并不适用于每一个站点。Sourcegraph就是一个内容为主的站点,我们渐渐发现这个富js应用的开发还是弊大于利;下面是我们在探知这条路上遇到的沟沟坎坎,希望对有雷同遭遇的开发人员一些帮助。

      下周,我们来讨论更多地关于我们是如何从AngularJS迁移server-side GO templates

      客户端JS框架的5个弊端

      我们早就知道这会有很多的困难,但是不知道到底有多难

      1. 搜索排名和Twitter/Facebook预览

      搜索引擎爬虫和社交网站的预览抓取器不能加载纯Javascript站点,而如果提供替换版本又慢又复杂

      有两种方法可以允许爬虫阅读你得站点。你可以在服务器端运行一个浏览器实例用以执行你的应用里的Javascript,然后返回HTML结果(PlantomJS或者WebLoop)。 或者你可以为你的站点专门建立一个HTML版本为爬虫服务

      第一个方法需要你为每一次页面加载建立一个headless浏览器(或者tab),比起直接产出HTML,这样会花费很多的时间和系统资源?;谀阌玫目蚣?,会花费很多的工作来决定什么时候已经准备好的页面将被渲染。 你可以缓存页面,但是如果页面经常改变,不但优化甚微而且会增大复杂度。

      这样做还会降低你的页面加载速度好几秒,对搜索引擎排名也不利。(PlantomJS需要Xvfb和WebKit)

      第二个方法(做一个服务器端站点)对简单地站点有效,但是如果页面很多,那用这个方法就形同噩梦。

      如果Google认为你的服务器版本站点跟你的主站版本有很大的不同,那他就会狠狠的惩罚你,到时候你连怎么死的都不知道

      2. 不可靠的统计和监控

      很多分析工具需要易于出错,人工集成来使用HTML5 history API(pushState)用于导航。因为他们很难自动检测到你的应用使用pushState导航到了新的页面。即使可以做到,他们仍然需要等待你应用里的信号来收集新页面的信息

      如何解决这个问题呢?取决于你的客户端用什么导航和你想集成什么分析工具。用Google分析+Backbone.js?尝试一下backbone.analytics。用Heap(顺便说一下,太酷了)和UI-Router?设置你自己的$stateChangeSuccess并调用heap.track

      还没完事呢!你想追踪起始页面加载?也许你在双向跟踪他?你会跟踪失败的页面记载吗?如果你使用replaceState代替pushState呢?如果你错误的配置了分析挂钩或者属于检查导致依赖升级搞坏了事情。当你发现的售后,很难去恢复你错过的分析数据(或者消除重复数据)

      3. 又慢又复杂的构建工具

      前-后端JavaScript构建工具,比如Grunt,需要复杂的配置而且很慢?;购梦颐怯邢駈g-boilerplate这样的project来帮我们做配置,但是如果你想添加一个自定义的步骤还是逃不出又慢有复杂的怪圈(我为什么说Grunt复杂,看看这个配置文件就知道了)

      一旦你配置好了你的应用,你仍然要忍受漫长的JavaScript构建时间。你可以把dev和production构建通道分开来提高开发速度,但是始终免不了走这么一遭,用AngularJS尤其如此,他需要在丑陋的代码前使用ngmin(如果你用了这个功能)。其实,Sourcegraph因为这些丑陋的JavaScript表现代码几度被毁

      还好,Gulp已经有了极大的提高

    北京赛车怎么赚钱
    责任编辑:xinbwang

    最火资讯