前端沒有數據庫的概念,不能永久保存, 那麼前端數據應該怎麼管理呢。html
一、 原始方法
直接在view中定義要使用的數據, 而後傳值顯示。前端
let data = ['test','test']; <div>{ data[0] }</div> //藉助js框架將data能夠傳遞到html中 <div>{ data[1] }</div> //藉助js框架將data能夠傳遞到html中
二、 前端動態管理數據
在view中初始化數據, 也至關因而在view中定義要使用的數據git
Function (name) { return this.name = name; }; function init() { let initData1 = new Function('test1'); let initData2 = new Function('test2'); return initData = [initData1, initData2]; }; init(); <div>{ initData[0]</div> //藉助js框架將data能夠傳遞到html中 <div>{ initData[1]</div> //藉助js框架將data能夠傳遞到html中
經過函數來生成數據的好處, 方便數據的處理。
好比經過點擊事件想在添加一個數據, 則能夠經過js調用函數, 生成一個新數據,
那麼怎樣將生成的新數據傳遞給html呢???
之前的方法:github
但是若是頁面須要更新的地方太多, 直接經過js操做dom修改dom值, 會慘不忍睹。數據庫
<div> { initDataType } <div>{ initDataType.type }</div> <div>{ initDataType.name }</div> <div>{ initDataType.id }</div> </div>
對於上面這樣的狀況,則每一個dom都要處理的話, 頁面負擔重, 代碼上也會很麻煩。redux
如今的方法:數組
(riotjs的例子)[https://github.com/zhangchch/...]
這個例子中,就是經過js初始化數據,而後經過js事件,更新數據,
更新數據後, 指定更新某個組件(只是更新這個組件,不會影響其餘組件,也不會更新整個頁面),同時也會更新這個組件的子組件。框架
那麼這個過程當中數據是怎麼管理的呢?dom
course.tag
這個組件的數據存儲在courseList,studentsList
這兩個數組中。
先初始化兩個數組的數據。
當經過某個事件改變這兩個數組的數據的時候, 好比courseList
添加想添加一個元素。
某個地方點擊添加courseList
, 攜帶添加的值, 觸發添加函數添加一個courseList
元素,
而後將這個添加的courseList
元素放入courseList
數組中, 最後更新這個組件。
也就是說經過操做courseList,studentsList
這兩個數組,來管理數據的。(更新相應組件)函數
student-item
組件中,經過取消訂閱某個course事件,
哪一個學生取消哪一個訂閱,
這個作法是在具體的兩個對應的組件中修改數據,而後各自更新本身的組件。
對總的courseList,studentsList
沒有任何操做,也就是說courseList,studentsList
沒有發生變化。
這個作法是點對點的操做。
redux的思想:student取消訂閱某個course, 去更新courseList,studentsList
, 而後更新course.tag
這個組件,自動去刷新子組件。
這個也是點到點的數據操做, course-item
組件中發佈某個消息, 攜帶學生,消息等參數, 傳遞給student-item
, 而後各自更新本身的組件。