0
首先,我想說我是網絡開發新手,所以我可能會使用錯誤的詞彙表。服務器更新視圖(Mithriljs)(playframework)
我想從我的服務器發起一個操作,將數據庫修改發送到客戶端以更新視圖。
我想尊重SPA(單頁應用程序)模型,所以我所有的視圖都是由mithriljs生成的。
我會對我的數據庫進行一些外部修改,更新我的視圖而不刷新瀏覽器的最佳方式是什麼?
我在服務器端使用playframework。
首先,我想說我是網絡開發新手,所以我可能會使用錯誤的詞彙表。服務器更新視圖(Mithriljs)(playframework)
我想從我的服務器發起一個操作,將數據庫修改發送到客戶端以更新視圖。
我想尊重SPA(單頁應用程序)模型,所以我所有的視圖都是由mithriljs生成的。
我會對我的數據庫進行一些外部修改,更新我的視圖而不刷新瀏覽器的最佳方式是什麼?
我在服務器端使用playframework。
使用Mithril與任何推技術都非常簡單。正如Anton所提到的,您可以創建一個簡單的WebSocket連接並監聽函數中的數據。然後處理它,更新數據模型,如果一切正常,只需撥打m.redraw即可完成。事情是這樣的:(使用例如在https://www.websocket.org/echo.html)
// A simple model, an array of messages:
var messages = m.prop([]);
function onMessage(evt) {
var message = evt.data;
// Some validation, only strings allowed
if (typeof message === 'string' || message instanceof String) {
messages().push(message);
// All ok, redraw
m.redraw();
}
}
那麼你的祕圖的樣子:
var WebSocketMessages = {
view: function() {
m("ul", messages().map(function(message) {
return m("li", message);
}))
}
}
,並顯示它:
m.mount(document.body, WebSocketMessages);
我不熟悉Mithriljs - 它的作用類似於Angular,當底層模型更新時,View會自動更新?如果是的話,你當然可以去一個WebSocket連接 - 你的Play應用程序將數據推送到客戶端 - >數據放入模型 - >視圖根據模型更新 – Anton
是的,它的工作方式。感謝您的回答。我會看看WebSocket。你推薦一個JavaScript的websocket專用庫嗎? – GermainGum
那麼如果Mithriljs有這個組件,你當然可以使用它。但即使不是--WebSocket連接可以用普通的JavaScript在幾行中實現 - 請看這裏:http://www.websocket.org/echo.html - 你也可以用它來測試你的服務器端 – Anton