簡體   English   中英

基於Ajax的應用程序中的問題

[英]Issues in Ajax based applications

我對開發基於Ajax的應用程序非常感興趣。 這就是通過XMLHttpRequest加載應用程序的幾乎所有內容,而不僅僅是一些組合和窗口小部件。 但是,如果我嘗試從頭開始創建此表格,很快就會發現一些問題,而沒有簡單的解決方案。 我想知道是否存在一些框架(客戶端和服務器端)來處理此問題。 據我所知,沒有(但是我主要在Java世界中進行過搜索)。 因此,我認真地考慮至少在我的項目中建立自己的框架。

因此,在這個問題上,我要問幾件事。 首先,基於ajax的開發可能存在的問題。 然后,我正在尋找某種框架或實用程序來處理它們。 最后,如果沒有可用的框架,則必須具有什么功能。

這是我認為的問題:

1-必須啟用JavaScript。 安全偏執並不是唯一的問題:很多移動設備也無法使用該應用程序。

2-有時您需要更新多個DIV(例如,主要內容,菜單和面包屑)。

3-未知響應類型:調用Ajax時,也要設置回調函數,通常指定期望的響應是JavaScript對象還是DIV將結果放入其中。 但是,當您收到另一種類型的響應時,此操作將失敗:例如,會話已過期且用戶必須再次登錄。

4-瀏覽器的刷新,后退和前進按鈕可能真是麻煩。 用戶會根據情況期望不同的行為。

5-搜索引擎將網站編入索引時,請僅點擊鏈接。 因此,對於尚不知道的人,Ajax的內容加載將不會“存在”。

6-用戶可以要求在其他窗口/選項卡中打開鏈接。

7-地址欄不會顯示您所在的“真實”頁面。因此,您無法復制位置並將其發送給朋友或將該頁面添加為書簽。

8-如果您想通過該網站獲利,則可以投放一些廣告。 由於您沒有刷新整個頁面,並且想要在一段時間后更改廣告,因此您只需要刷新廣告所在的DIV。 但這可能違反廣告服務的條款。 實際上,它可能違反AdSense TOS。

9-刷新整個頁面時,所有JavaScript都會“清除”。 但是在Ajax調用中,所有JavaScript對象都將保留。

10-您不能輕易更改CSS屬性。

我認為您必須區分兩種情況:

  1. Web應用程序是登錄用戶(例如,博客作者和員工...)的真實應用程序。 AJAX作為主要技術在這里很好,因為您可以期望您的用戶能夠滿足您的系統要求(不錯的瀏覽器,javascript)。
  2. Web應用程序是任何人都可以公開看到的普通網站。 在這種情況下,當您失去訪問者,搜索引擎等功能時,作為主要技術的AJAX完全無法正常工作。請始終對沒有花哨的東西起作用的網站進行編碼,然后使用可選的花哨的東西來增強網站的功能。

因此,假設您的應用程序是類型1,則已經回答了問題1、5和8。

問題2:沒問題。 控制AJAX調用的javascript可以用答案做任何想做的事情。 分解成碎片並將其貼在DIV中,感覺如何。

問題3:與方法2相同:只需在JavaScript中關心這些情況即可。

在問題4、6和7旁邊:您可以通過將應用程序狀態保存到實際url的哈希中來重現許多正常的后退/前進行為。 您可以更改哈希值而無需重新加載頁面。 許多javascript框架都提供了使它更加舒適的功能(例如,查看dojo的歷史記錄)。

問題9:是正確的,但通常應該沒什么大問題,除非您的腳本有缺陷。

問題10:可以! javascript的強大功能可以幫助您,年輕的padawan。 例如,通過javascript插入鏈接標簽。

  1. http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build
  2. 是。 這就是為什么您遵循MVC模式而不只是返回一大堆M arkup的原因
  3. 見2。
  4. http://developer.yahoo.com/yui/history/或類似的
  5. 請參閱1。
  6. 請參閱1。
  7. 參見4,但這並不完美,為什么Ajax對於Web應用程序來說可以,但是對於Web站點來說卻不好
  8. 您需要選擇可以使用的廣告服務
  9. 見4。
  10. 為什么不?

針對您概述的可用性問題,頁面內容不應該加載AJAX。 請改用PHP include()或一些類似的服務器端模板。

我想知道是否存在一些框架(客戶端和服務器端)來處理此問題。 據我所知,沒有

你在開玩笑! 有大量的Java Ajax框架:

Google的“ java ajax框架”列表的頂部是:

http://ajaxpatterns.org/Java_Ajax_Frameworks

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM