第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

為什么返回生成的HTML而不是JSON是一種不好的做法?或者是嗎?使用JQuery或任何其他類似的框架從您的自定義URL / Web服務(wù)加載HTML內(nèi)容非常容易。我多次使用這種方法,直到現(xiàn)在,發(fā)現(xiàn)性能令人滿意。但是所有的書籍,所有專家都試圖讓我使用JSON而不是生成HTML。它是如何比HTML更優(yōu)越的?它快得多嗎?它在服務(wù)器上的負(fù)載是否很???另一方面,我有一些使用生成的HTML的原因。它是簡單的標(biāo)記,通常與JSON一樣緊湊或?qū)嶋H上更緊湊。它不容易出錯,因?yàn)槟愕玫降闹皇菢?biāo)記,沒有代碼。在大多數(shù)情況下編程會更快,因?yàn)槟槐貫榭蛻舳藛为?dú)編寫代碼。你是哪一方,為什么?
查看完整描述

3 回答

?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個贊

我實(shí)際上是雙方都有點(diǎn):

  • 當(dāng)我在javascript方面需要的是數(shù)據(jù)時,我使用JSON

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

使用HTML的主要優(yōu)點(diǎn)是,當(dāng)您想要使用Ajax請求返回的內(nèi)容替換頁面的完整部分時:

  • 在JS中重新構(gòu)建頁面的一部分是非常困難的

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

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

  • 在服務(wù)器上,生成一部分HTML或一些JSON可能不會產(chǎn)生太大的影響

  • 關(guān)于通過網(wǎng)絡(luò)的東西的大小:好吧,你可能不會使用數(shù)百KB的數(shù)據(jù)/ html ...在你傳輸?shù)娜魏螙|西上使用gzip會產(chǎn)生最大的不同(不是在HTML之間選擇)和JSON)

  • 但是,可以考慮的一件事是,客戶端需要從JSON數(shù)據(jù)中重新創(chuàng)建HTML (或DOM結(jié)構(gòu))的資源...將其與將部分HTML推入頁面進(jìn)行比較; - )

最后,有一點(diǎn)非常重要:

  • 你需要多長時間來開發(fā)一個新的系統(tǒng),將JS作為HTML注入頁面所需的JSON +代碼發(fā)送數(shù)據(jù)?

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


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

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

<!-- 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 -->

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

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


查看完整回答
反對 回復(fù) 2019-08-29
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊

好,

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

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

此外,這種方法提高了工作效率,因?yàn)榉?wù)器和客戶端代碼可以同時構(gòu)建,永遠(yuǎn)不會失去焦點(diǎn),這是當(dāng)你從js切換到PHP / JAVA /等時會發(fā)生的事情。

一般來說,我認(rèn)為大多數(shù)人更喜歡在服務(wù)器端盡可能多地做,因?yàn)樗麄儾徽莆誮s,所以他們試圖盡可能地避免它。

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


查看完整回答
反對 回復(fù) 2019-08-29
  • 3 回答
  • 0 關(guān)注
  • 968 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號