簡體   English   中英

如何將JMVC(javascript-mvc)和服務器端MVC結合在一起

[英]How to combine JMVC (javascript-mvc) and server side MVC together

幾天前我問過這個問題,沒有人回答。
我曾經在forum.javascriptMVC.com問過它,現在我有了答案,但是我需要更多的想法。

題:

I read javascriptMVC's documents and I loved it. 
But I don't know how to use it in a large scale project.

我認為在服務器端需要一個MVC框架,或者可以提供很多幫助。 我使用過服務器端PHP框架。

我很困惑,我對JavascriptMVC項目的理解是他們處理瀏覽器捕獲事件的客戶端事件,執行AJAX請求,管理來自服務器的響應/數據,並在圖形界面中向用戶顯示它們。

我知道在PHP MVC項目中我們還有控制器(和操作),它們中的任何一個都是一個帶有單個入口點的單獨頁面,我的觀點是這些頁面是完整的HTTP請求。

我認為這兩個框架的組合將是單一重文件(包括JS,CSS,IMGS等)的形式,載荷和如steal.js由另一個JavaScript libary管理。 現在,用戶可以使用網站及其操作(作為事件)導致運行可能在UI中更改某些內容或導致AJAX請求的js函數,如在Yahoo Mail中,大多數事情都發生在一個頁面中。

那么這將如何影響PHP中控制器和動作的設計? 我的意思是通常在PHP MVC框架中,很多控制器和動作意味着很多頁面。 我認為,由於AJAX,控制器和動作的數量實際上應該更少。 我還認為,由於JMVC,大多數控制器(和操作)應該轉向AJAX響應器,但是在這種情況下如何處理布局和視圖?

最后

  • 我想知道使用這種方法的不同方面(JMVC + MVC)。 (我使用Yii作為我的服務器端MVC框架,使用JavascriptMVC作為我的客戶端MVC)。
  • 我還想了解客戶端數據的管理。
  • 我想了解如何使用AJAX和Web套接字,我們可以在哪里使用AJAX以及我們可以使用websockets的地方?
  • 我想了解本地存儲如何將它用於模擬頁面數據管理和緩存,我們如何以頁面形式緩存來自服務器的數據作為JSON? 我正在開展一個非常大的項目,我想建立自己的基礎非常強大。

假設您在其中放置了JMVC框架

  • 該模型使用AJAX請求從服務器獲取數據 - 期待JSON結果。
  • 視圖不依賴於服務器,而是提供原始HTML。
  • 控制器不依賴於服務器,而是為JS文件提供更多服務。

基本上,您使用服務器“應該”使用它,數據存儲和處理,同時讓您的客戶端瀏覽器處理所有繁瑣的東西。

現在,讓我們看看如何定義服務器端框架。 正如我所看到的,我們有幾個選項,它們都非常相似,盡管有些不同(都以JSON格式返回):

  • 一個完全成熟的MVC,如cakePHP
  • 自定義實施
  • WebService實現

我個人會使用WebService,而且我已經擁有了。 或者說,我使用了基於WebSocket的JSON-RPC WebService。 使用完全成熟的MVC將具有可維護性的缺點,而不是無關緊要的服務器負載。 但是很有可能,只需實現一個將頁面格式化為JSON的視圖......

在我看來,創建一個JMVC客戶端並不意味着它不能從服務器請求新的HTML。 但它確實意味着請求HTML應該沒有數據,除了元數據之外,Java-View需要知道從哪里收集數據,例如WebService。

因此,JMVC中的主頁可以只包含一個

<div id=content></div>

和菜單點擊可以從服務器獲取子頁面並將內容加載到content 然后,加載的內容可以包含一些更多的javascript,它們啟動WebService請求以從服務器獲取數據,以顯示在它依次包含的空文件夾中。

先檢查https://stackoverflow.com/a/4458566/718224 ,然后再繼續。


試試這個(來自https://stackoverflow.com/a/8424768/718224

不,你並不需要使用它的服務器端,但它與應用程序和業務邏輯的組織/分離幫助。 根據您的應用程序規模,這可能在將來有很大幫助。

關鍵是確保您很好地組織后端代碼,否則您將最終得到一個單片和/或難以維護的代碼庫。

服務器端視圖將包含您的HTML以及可能會或可能不會向服務器發出請求的任何JavaScript。 這假設您實際上使用PHP來構建用戶導航到的頁面。

如果你有一個使用AJAX請求構建自己的靜態html頁面,那么你可能根本不需要使用服務器端視圖。 您的控制器很可能會輸出JSON數據。 如果是這種情況,它不會使模型和控制器變得不那么有用。


試試這個(來自https://stackoverflow.com/a/8424760/718224

如果您正在使用任何主要的PHP框架(CakePHP,Code Igniter,Symfony等),那么您已經使用了MVC。 如果你的服務器端邏輯比一些非常簡單的腳本更復雜,那么你可能應該使用列出的那些框架之一,在服務器和客戶端上使用MVC。

目前正在構建的許多(大多數?)更大的Web應用程序正在向客戶端和服務器端應用程序代碼使用MVC框架。 這是分離許多大型應用程序問題的奇妙模式,尤其是請求/響應服務器應用程序和事件驅動的瀏覽器應用程序。


試試這個(來自https://stackoverflow.com/a/8427063/718224

Backbone.js通過RESTful JSON接口連接您的應用程序。 老實說,我發現它與MVC框架結合得很好。 如果您構建RESTful API,則可以讓服務器非常輕松地管理CRUD更新。 您負責的所有服務器端代碼都是保存並將JSON對象發送回Backbone.js。 然后讓你的大部分邏輯和魔法發生在Backbone.js框架內。


試試這個(來自https://stackoverflow.com/a/8078282/718224

首先,像Backbone這樣的客戶端MVC框架不僅適用於單頁面應用程序。 您還可以使用它為一個更傳統的應用程序的一個或多個視圖添加一些豐富的交互。 它們只是在客戶端上提供結構和數據抽象。

接下來,這些客戶端框架專門設計用於與后端MVC框架協同工作。 Backbone.js(因為你專門標記了它)模型和集合與REST服務一起使用。 他們將通過GET / POST / PUT / DELETE謂詞進行通話,並在最終發出異步請求時最終與后端的控制器進行通信。

在Backbone的情況下,它會使用JSON而不是HTML。 在Rails的情況下,這在控制器中很容易處理。 如果請求是HTML請求,則將視圖作為HTML返回。 如果它是JSON請求(* .json或Content-type),則控制器返回數據的JSON表示。 我假設Django和Rails一樣容易讓相同的控制器響應多個內容請求(HTML,XML,JSON等)

這可能對你有所幫助。

客戶端Web應用程序和富客戶端網頁通常使用jmvc backbones等等,如果像js庫和HTML5技術(如webstorage您可以擁有更多應用程序,如網站,所有事情都發生在客戶端,如模板管理等。我們只有ajax請求/響應服務器來獲取/設置數據或更新狀態。 和abput第一部分他們是對的jmvc網站更像是單頁網站。 即hotmail雅虎等

暫無
暫無

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

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