日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
服務(wù)器端生成的JavaScript響應(yīng)

Basecamp中的大多數(shù)Ajax操作都是在處理服務(wù)器生成的JavaScript響應(yīng)(SJR)。它的工作原理是這樣的:

創(chuàng)新互聯(lián)建站是一家專業(yè)提供岳普湖企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、做網(wǎng)站、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為岳普湖眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。

  1. 表單通過一種XMLHttpRequest驅(qū)動的形式提交。
  2. 服務(wù)器創(chuàng)建或更新模型對象。
  3. 服務(wù)器生成包含了針對該模型對象的更新了的HTML模板的一個JavaScript響應(yīng)。
  4. 客戶來評估處理由服務(wù)器返回的JavaScript,然后會更新DOM。

這種簡單的模式有一些重要的優(yōu)勢。

優(yōu)點#1:重用模版而不影響性能

無論是第一次渲染和隨后的模版更新,你都可以重用模版.如果使用Rails,有一部分技術(shù)像郵件/信息用于這兩種情況。

如果你只返回JSON格式的信息,你得用你的模版將展示這些信息兩次(一次是服務(wù)器端的第一次回應(yīng),一次是客戶端隨后的更新)—除非你做一個單一面頁的JavaScript app,這個app的第一次回應(yīng)是用JSON/客戶端生成方式。

后面那種方式會很慢,因為要等整個的Javascript庫load完并在客戶端生成好模版你才能看到效果(這是Twitter早期所用的方式,但隨后被背棄)。但至少在某些情況下這是一個合理的選擇而且不需要多個模版。

優(yōu)勢 #2: 客戶端需要更少的計算性能

雖然嵌入HTML模板的JavaScript可能造成響應(yīng)數(shù)據(jù)量比JSON格式的響應(yīng)要多(盡管用gzip壓縮后幾乎可以忽略),但是這不需要客戶端去做很多的運算來更新頁面。

這意味著,從端到端的觀點出發(fā),處理 JavaScript+HTML的響應(yīng)數(shù)據(jù)的速度,應(yīng)該比處理帶有客戶端模板性質(zhì)的JSON數(shù)據(jù)要快,至于快多少,取決于客戶端模板的復(fù)雜程度,以及客戶端計算性能。而且這個速度應(yīng)該是二倍關(guān)系,因為,服務(wù)器生成的模板可以通過緩存在多個用戶之間共享(詳見 Russian Doll緩存)。

優(yōu)勢 #3: 容易跟蹤執(zhí)行流

使用SJR會讓跟蹤執(zhí)行流變得非常容易。請求的機制是標(biāo)準(zhǔn)化的,是會帶有輔助邏輯“l(fā)ikeform_for @post, remote: true”. 當(dāng)然沒有必要對于每個動作都帶上輔助邏輯。 接著控制器會以渲染完整視圖的方式來渲染響應(yīng)中的部分視圖,其中的目標(biāo)只能是JavaScript 而不是完全的HTML

完整示例

0)首先使用消息模板

 
 
 
  1. All messages:

     
  2. <%# renders messages/_message.html.erb %> 
  3. <%= render @messages %> 

1) 以Ajax方式提交表單.

 
 
 
  1. <% form_for @project.messages.new, remote: true do |form| %> 
  2.   ... 
  3.   <%= form.submit "Send message" %> 
  4. <% end %> 

2) 服務(wù)器創(chuàng)建模型對象.

 
 
 
  1. class MessagesController < ActionController::Base 
  2.   def create 
  3.     @message = @project.messages.create!(message_params) 
  4.  
  5.     respond_to do |format| 
  6.       format.html { redirect_to @message } # no js fallback 
  7.       format.js   # just renders messages/create.js.erb 
  8.     end 
  9.   end 
  10. end 

3) 服務(wù)器產(chǎn)生內(nèi)嵌入HTML的JavaScript響應(yīng).

 
 
 
  1. <%# renders messages/_message.html.erb %> 
  2. $('#messages').prepend('<%=j render @message %>'); 
  3. $('#<%= dom_id @message %>').highlight(); 

最后評估響應(yīng)工作是由form_for產(chǎn)生的XMLHttpRequest-powered表單來自動處理的。視圖因此由于新消息而更新,此外新消息也通過JS/CSS動畫高亮顯示。

超越RJS

當(dāng)我們一開始使用SJR時我們將它和一個叫做RJS的前身一起使用,使用RJS你需要寫Ruby模板,然后再將它們轉(zhuǎn)變成JavaScript。它是Coffeescript(或Opalrb,如果你喜歡的話)的簡化版,它錯誤地讓許多人舍棄了SJR模式。

現(xiàn)在我們不使用RJS了(更迭的原因通常很簡單——優(yōu)勢不是那么大,只有極少數(shù)情況下才需要的沒有必要那么復(fù)雜),但我們卻一如既往地致力于SJR。

這并不意味著JSON數(shù)據(jù)在服務(wù)器端產(chǎn)生和視圖在客戶端形成的模式一無是處。對于我們的UI需要很高的保真度的時候,以及像日歷這樣的,有大量的視圖狀態(tài)需要維護(hù)的時候,這樣的模式還是非常合適的。當(dāng)需要走這條路的時候,我們使用Sam的卓越 Eco template system (認(rèn)為ERB對于CoffeeScript).

如果你的網(wǎng)絡(luò)應(yīng)用都是高保真度的UI,那么走上面提到的那個路子是完全沒有問題的。只是你正在花費高價給自己購買些花哨的東西,不過這算是個問題。但是如果你的應(yīng)用有點像Basecamp或者Github這樣網(wǎng)絡(luò)上的以文本為基礎(chǔ)的主流應(yīng)用,那么你完全應(yīng)該張開雙臂擁抱SJR

 Russian Doll-caching, Turbolinks 和 SJR的融合簡直就是一杯難以置信的給力雞尾酒。它可以創(chuàng)造出快速的,現(xiàn)代化的,而且非常優(yōu)美的代碼類的網(wǎng)絡(luò)應(yīng)用,好好享用吧!


當(dāng)前名稱:服務(wù)器端生成的JavaScript響應(yīng)
URL網(wǎng)址:http://m.5511xx.com/article/djgshee.html