国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

客戶端JavaScript的5個弊端

開發 前端
譯注:原來的標題是:“我們為啥不用AngularJS:…”,后來作者覺得不妥就改掉了,因為AngularJS是通常適用于單頁面程序框架(SPA) 很多人理解為對AngularJS的抨擊,但這并不是他的本意。

譯注:原來的標題是:“我們為啥不用AngularJS:…”,后來作者覺得不妥就改掉了,因為AngularJS是通常適用于單頁面程序框架(SPA) 很多人理解為對AngularJS的抨擊,但這并不是他的本意。 

幾個月前,當我們打開Sourcegraph網站的時候,它是一個富AngularJS應用,服務器只要把原始HTML和JSON endpoints返回,剩下的就交給Angular來搞定了。我們就這樣懵懵懂懂地做出了最初版本的Sourcegraph。

但是單頁(single-page) JavaScript框架并不適用于每一個站點。Sourcegraph就是一個內容為主的站點,我們漸漸發現這個富js應用的開發還是弊大于利;下面是我們在探知這條路上遇到的溝溝坎坎,希望對有雷同遭遇的開發人員一些幫助。

下周,我們來討論更多地關于我們是如何從AngularJS遷移server-side GO templates

客戶端JS框架的5個弊端

我們早就知道這會有很多的困難,但是不知道到底有多難

1. 搜索排名和Twitter/Facebook預覽

[[109642]]

搜索引擎爬蟲和社交網站的預覽抓取器不能加載純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,需要復雜的配置而且很慢。還好我們有像ng-boilerplate這樣的project來幫我們做配置,但是如果你想添加一個自定義的步驟還是逃不出又慢有復雜的怪圈(我為什么說Grunt復雜,看看這個配置文件就知道了)

一旦你配置好了你的應用,你仍然要忍受漫長的JavaScript構建時間。你可以把dev和production構建通道分開來提高開發速度,但是始終免不了走這么一遭,用AngularJS尤其如此,他需要在丑陋的代碼前使用ngmin(如果你用了這個功能)。其實,Sourcegraph因為這些丑陋的JavaScript表現代碼幾度被毀

還好,Gulp已經有了極大的提高

4. 慢,不可靠的測試

[[109644]]

測試JavaScript-only的站點需要使用基于瀏覽器的測試框架,比如SeleniumPhantomJS,或者WebLoop。安裝這些(除了PhantomJS)通常意味著安裝WebKit和Java依賴,配置Xvfb(機關新的PhantomJS移除了這些先決條件),或者運行一個本地的VNC客戶端和服務器來測試。***,你還需要在持續集成的服務器上設定所有東東

相反,測試服務器端產生的頁面通常只需要類庫來或者URLs并解析HTML,安裝和配置起來簡單許多

一旦你開始寫瀏覽器測試,你必須處理異步加載。你不能在頁面還沒有加載的時候就測試頁面上的元素,但是如果在一個特定時間端里沒有加載,你的測試就會失敗。瀏覽器測試類庫提供了很好地功能來處理這種情況,他們只能在負載的頁面里使用這些功能

如果你想聯合重量級瀏覽器來進行(Selenium,加上Firefox或者Webkit)很復雜的測試(因為瀏覽器的異步特質)?你的測試需要很多配置,很長的時間來執行,而且很不可靠

5. 慢,可以緩解,但沒有解決

在富JavaScript應用中,頁面轉化幾乎是瞬間發生,然后所有的特定元素異步加載。在server-side應用中,完全相反:頁面在服務器端加載完成前不會發送到客戶端

聽起來似乎是client-side應用勝利了,但是也許會是個坑也不一定

當用戶點擊一個鏈接,client-side應用會立刻加載頁面并呈現。如果用戶用sidebar導航到一個需要5秒鐘才可以加載的頁面。***次感覺很快,但是如果一個用戶需要的信息在sidebar里,對用戶來說就感覺很難受。即使你需要的特定內容立即呈現,你仍需要忍受加載指示器和頁面填充后的抖動

我們來考慮如果開發人員想在那個頁面添加新功能。是很難讓她的功能必須快速加載的-因為都是異步的,所以誰會在意頁面底部過了幾秒才加載呢?如此反復幾次,整個站點讓人感覺滯后很抖動

在server-side 應用中,如果一個API調用很慢,整個頁面就會停滯直到徹底完成。這個不容忽視的server-side慢節奏很容易被測量并會公平地影響每一個人。但是在client-side應用中很容易被忽略

你可以說,一個好的開發團隊應該避免這些錯誤,并且client-side JS 框架不是罪魁禍首。是的,client-side JS框架提高了速度。這一點改變鼓勵了任何開發團隊

下一步?

上面說得都不是大問題。我們已經做了很多來減輕上述情況。

總而言之,上述種種以為這client-side JS 框架加大了我們開發的負擔。

而且要記住,每一個站點都是不同的。Sourcegraph是一個內容站點,他得頁面在加載后不會有太多的變化(相較于富JS應用),我們依然愛著浙西技術,但是他們不一定是構建主站點的正確工具。

原文鏈接: Sourcegraph   翻譯: 伯樂在線 - 蔡蔡

譯文鏈接: http://blog.jobbole.com/61681/

責任編輯:林師授 來源: 伯樂在線
相關推薦

2009-06-12 19:18:08

REST客戶端框架JavaScript

2019-09-08 16:45:19

JavaScriptHTML5GitHub

2015-06-03 09:27:05

JavaScript客戶端檢測技術

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2016-11-14 18:02:50

2009-12-21 09:05:22

2011-08-17 10:10:59

2011-03-21 14:53:36

Nagios監控Linux

2011-04-06 14:24:20

Nagios監控Linux

2018-11-02 08:53:28

開源Android郵件客戶端

2015-08-05 11:40:24

Linux FTP客戶端

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2011-03-24 13:00:31

配置nagios客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2022-03-14 09:35:43

Pythonhttpx

2011-03-29 16:07:32

CACTISNMP

2010-07-19 16:30:19

Telnet客戶端

2010-07-22 12:24:31

Telnet客戶端
點贊
收藏

51CTO技術棧公眾號

国产精品亚洲欧美日韩一区在线| 91久久精品一区| 欧美视频观看一区| 日本一区二区三区视频在线看| 欧美日韩免费视频| 日韩精品在线中文字幕| 91精品国产自产在线观看永久∴| 亚洲精品在线不卡| 国产女人在线观看| 欧美国产1区2区| 欧美日韩dvd| 欧美资源在线| 97碰碰视频| 国产精品密蕾丝视频下载| 亚洲人在线观看| 99re在线视频| 亚洲 欧美综合在线网络| 欧洲精品在线播放| 日韩电影免费一区| 成人女人免费毛片| 欧美三级伦理在线| 国内精品久久久久久久久| 国产一区二区三区影视| 精品久久久久久久久久久院品网 | 99不卡视频| 欧美怡红院视频一区二区三区| 天堂资源在线亚洲视频| 亚洲h色精品| 欧美亚洲另类视频| 91欧美日韩在线| 久久精品国产精品亚洲| 亚洲伊人av| 日韩hd视频在线观看| 久久久久久久激情视频| 欧美下载看逼逼| 亚洲东热激情| 精品一区二区日本| 亚洲在线视频| 日韩av在线电影观看| 日本在线观看不卡视频| 欧美一区二区三区四区五区六区 | 日韩毛片中文字幕| 美女网站视频在线| 亚洲爱爱爱爱爱| 大菠萝精品导航| 亚洲一二三在线| 欧美va在线观看| 久久亚洲影音av资源网| 一级毛片精品毛片| 26uuu另类亚洲欧美日本一| 极品束缚调教一区二区网站| 国内伊人久久久久久网站视频| 黄色免费大全亚洲| 国产精品白丝jk喷水视频一区| 精品国产一区二区三区噜噜噜 | 国产高清精品软男同| 久久精品国产精品青草| 一区二区三区四区五区视频| 国产精品91xxx| 亚洲色成人一区二区三区小说| 国产日韩精品一区| 蜜桃专区在线| 欧美麻豆精品久久久久久| www.久久久久.com| 亚洲一级免费视频| 免费成人蒂法| 国产精品二区二区三区| 日韩av一区二区三区| 国产九色porny| 一区二区三区国产精品| 黄色av网站在线播放| 正在播放亚洲1区| 真实原创一区二区影院| 好吊色欧美一区二区三区视频| 久久精品国产一区二区| 高清欧美精品xxxxx| 亚洲视频一区二区在线观看| 国产一二三在线观看| 亚洲美女在线观看| 欧美日本成人| 伊人狠狠色丁香综合尤物| 国产三级欧美三级日产三级99| 翔田千里一区| 日韩精品在线看| 性欧美xxxx免费岛国不卡电影| 成人欧美一区二区三区视频xxx| 麻豆国产欧美一区二区三区| sihu成人| 日韩精品中文字幕在线不卡尤物 | 国产一区999| 成人午夜剧场免费观看完整版| 欧美午夜久久久| 欧美7777| 成人欧美一区二区三区黑人| 国产在线精品视频| 中文字幕免费在线| 亚洲欧洲黄色网| 91成人影院| 日韩 欧美 高清| 91精品午夜视频| 在线成人动漫av| 欧美图片激情小说| 欧美亚洲国产一卡| 欧美调教视频| 好吊色视频988gao在线观看| 午夜欧美在线一二页| 免费观看欧美大片| 91久久精品国产91性色| 9l国产精品久久久久麻豆| 91这里只有精品| 欧美综合在线观看| 成年人网站91| 1024在线播放| 亚洲一区二区三区视频| 久久在线观看免费| 美女高潮视频在线看| 电影午夜精品一区二区三区| 久久久久久亚洲综合| 第一中文字幕在线| 99c视频在线| 一区二区三区在线免费| 国产一区二区三区| 欧美一区二区激情| 日韩欧美成人激情| 国产日本精品| 三级无遮挡在线观看| 韩国三级日本三级少妇99| 成人性生交大片免费看中文| 中文字幕在线观看网站| 岛国视频一区| 欧美性猛交xxxx| 四季av一区二区三区免费观看| 91av俱乐部| 麻豆一区二区在线观看| 国产91丝袜在线观看| 麻豆mv在线看| 一区二区免费在线观看| 欧美一区午夜视频在线观看| 91精品国产视频| 在线播放av片| 成人黄色在线播放| 亚洲一区二区综合| 国产精品探花在线观看| 国语对白在线视频| 国产suv精品一区二区| 1024精品合集| 尤物tv在线精品| 国产污污在线观看| 成人黄色在线免费| 色妞www精品视频| 亚洲国产美女| 精品在线播放午夜| 中文一区二区三区四区| 97影院手机在线观看| 欧美—级高清免费播放| 成人福利在线看| 9色视频在线观看| 欧美夫妻性生活| 国产综合自拍| 国产午夜视频在线观看| 91天堂在线视频| 五月激情六月综合| 精品一区不卡| 国产在线制服美女| 96国产粉嫩美女| 欧美色涩在线第一页| 伊人激情综合| 成人免费网址| 青青草原国产免费| 国产一区二区激情| 91在线观看高清| 丁香五月缴情综合网| 四虎国产成人永久精品免费| 97免费在线视频| 亚洲电影中文字幕在线观看| 日韩欧美一区免费| 91sp网站在线观看入口| 日韩视频精品| 亚洲视频777| 国产网站一区二区| 国产精品一线天粉嫩av| 手机福利在线| 欧美日韩综合网| 亚洲欧洲日产国码av系列天堂| 国产精品主播直播| a级日韩大片| 亚洲1024| 欧美国产二区| 亚洲欧美日韩直播| 久久色.com| 欧美综合久久| 国产秀色在线www免费观看| av磁力番号网| 久久久国产视频| 亚洲一区二区三区中文字幕在线| 在线精品国产| 日韩成人av电影| 精精国产xxxx视频在线动漫| 亚洲在线www| 精品丝袜一区二区三区|