2017-07-17 25 views
-2

我有一個任務,我需要通過JavaScript呈現博客的內頁。無法選擇使用MV *還是不使用MV *

該頁面有無限滾動功能。

在初始頁面加載時,我通過JSON字符串獲取了最初發布的所有數據,然後使用JavaScript對其進行渲染。

在接下來的頁面(對於無限滾動),我需要一個API,然後返回我的下一篇文章相同JSON字符串通話。

我的問題是 - 我該如何甚至應該使用MVC?我對這個概念相當陌生,仍然試圖跳上正確的軌道。

我現在正在考慮以下設置。

data.js - 一個對象,我將存儲從JSON字符串獲得的所有數據,並且當我進行調用時,它將使用更新APIJSON方法從API進行更新。

template.js - 只是模板文字 - 接收日期,返回HTML。

view.js - 需要data.jsthis.data構造,則有渲染方法,這需要該模板返回HTML和剛剛通過的innerHTML把它的內容。

model.js - getPost()方法調用api,返回數據。

controller.js - 這是我不知道該怎麼做的地方。控制器應該聽滾動事件,如果我到達頁面的末尾,它應該告訴模型做getPost()然後查看做render()?如何將我從模型的getPost()獲得的數據轉移到我的視圖render()?我似乎無法從XHR請求中調用視圖?

我錯過了什麼嗎?或者,也許我關於MVC如何工作的整個概念是錯誤的?我需要的是有人讓我走上正軌,我會自己去做其他的事情。真正熱愛JavaScript的人,幾個月前纔開始學習。

回答

1

controller.js文件可以承載將觸發方法從模型中取數據及(它返回到視圖 |更新data.js並觸發一個觀察者以使其)時Promise/Ajax調用被解析。

但是這樣一個小項目沒有必要超嚴格。只需使用最容易爲您保留的結構,並且對您來說很有意義。

+0

謝謝你向我解釋流量,Bananenmannfrau!我想在這裏使用MV *,這樣我就可以以實用的方式學習它。也許你可以給我一個觀察者和控制者在這樣的項目中看起來像什麼樣的小例子?似乎我在我的理論中忽略了某些地方的某些事情。非常多 - controller.js會有一個方法,比如loadArticle()=它會有類似this.model.getPost()的東西嗎?如何在滾動中正確調用此方法?然後,當getPost()請求完成時,我該如何告訴視圖來呈現它獲取的數據? –

+1

查看這些鏈接: https://en.wikipedia.org/wiki/Observer_pattern https://stackoverflow.com/questions/15861344/node-js-how-to-make-a-simple-live-頁面更新 只是嘗試玩弄它。這是點擊的最佳方式。閱讀總是隻讓你到目前爲止:) –