亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么返回生成的HTML而不是JSON是一種不好的做法?或者是嗎?

為什么返回生成的HTML而不是JSON是一種不好的做法?或者是嗎?

為什么返回生成的HTML而不是JSON是一種不好的做法?或者是嗎?使用JQuery或任何其他類似的框架從您的自定義URL / Web服務加載HTML內容非常容易。我多次使用這種方法,直到現在,發現性能令人滿意。但是所有的書籍,所有專家都試圖讓我使用JSON而不是生成HTML。它是如何比HTML更優越的?它快得多嗎?它在服務器上的負載是否很?。苛硪环矫?,我有一些使用生成的HTML的原因。它是簡單的標記,通常與JSON一樣緊湊或實際上更緊湊。它不容易出錯,因為你得到的只是標記,沒有代碼。在大多數情況下編程會更快,因為您不必為客戶端單獨編寫代碼。你是哪一方,為什么?
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

我實際上是雙方都有點:

  • 當我在javascript方面需要的是數據時,我使用JSON

  • 當我在javascript方面需要的是我不會做任何計算的演示時,我通常使用HTML

使用HTML的主要優點是,當您想要使用Ajax請求返回的內容替換頁面的完整部分時:

  • 在JS中重新構建頁面的一部分是非常困難的

  • 您可能已經在服務器端有一些模板引擎,它首先用于生成頁面...為什么不重用它?

我通常不會真正考慮事物的“性能”方面,至少在服務器上:

  • 在服務器上,生成一部分HTML或一些JSON可能不會產生太大的影響

  • 關于通過網絡的東西的大?。汉冒?,你可能不會使用數百KB的數據/ html ...在你傳輸的任何東西上使用gzip會產生最大的不同(不是在HTML之間選擇)和JSON)

  • 但是,可以考慮的一件事是,客戶端需要從JSON數據中重新創建HTML (或DOM結構)的資源...將其與將部分HTML推入頁面進行比較; - )

最后,有一點非常重要:

  • 你需要多長時間來開發一個新的系統,將JS作為HTML注入頁面所需的JSON +代碼發送數據?

  • 返回HTML需要多長時間?如果您可以重用一些已有的服務器端代碼,可以使用多長時間?


并回答另一個答案:如果您需要更新頁面的多個部分,仍然有解決方案/黑客將所有這些部分發送到一個大字符串中,該字符串將多個HTML部分組合在一起,并在JS中提取相關部分。

例如,您可以返回一些如下所示的字符串:

<!-- MARKER_BEGIN_PART1 -->here goes the html
code for part 1<!-- MARKER_END_PART1 --><!-- MARKER_BEGIN_PART2 -->here goes the html
code for part 2<!-- MARKER_END_PART2 --><!-- MARKER_BEGIN_PART3 -->here goes the json data
that will be used to build part 3
from the JS code<!-- MARKER_END_PART3 -->

這看起來并不是很好,但它確實很有用(我已經使用了很多次,主要是當HTML數據太大而無法封裝到JSON中時):你正在為頁面的各個部分發送HTML需要演示,并且您正在為您需要數據的情況發送JSON ...

...為了提取這些,我猜想JS子串方法會起作用;-)


查看完整回答
反對 回復 2019-08-29
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

好,

我是那些喜歡以這種方式分離事物的少數人之一: - 服務器負責提供數據(模型); - 客戶負責顯示(查看)和操縱數據(模型);

因此,服務器應該專注于交付模型(在這種情況下,JSON更好)。這樣您就可以獲得靈活的方法。如果要更改模型的視圖,可以讓服務器發送相同的數據,只需更改將數據更改為視圖的客戶端javascript組件即可。想象一下,您有一臺服務器向移動設備和桌面應用程序提供數據。

此外,這種方法提高了工作效率,因為服務器和客戶端代碼可以同時構建,永遠不會失去焦點,這是當你從js切換到PHP / JAVA /等時會發生的事情。

一般來說,我認為大多數人更喜歡在服務器端盡可能多地做,因為他們不掌握js,所以他們試圖盡可能地避免它。

基本上,我和那些正在研究Angular的人有同樣的看法。在我看來,這是Web應用程序的未來。


查看完整回答
反對 回復 2019-08-29
  • 3 回答
  • 0 關注
  • 1017 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號