今天預計開始實作 To-Do List 的功能,先顯示待辦事項的行為並且串接 Restful API,模擬實際專案的情形。
在開發 To-Do List 的案例之前,先來說明 To-Do List 有哪些功能?
整理 To-Do List 需要哪些 API 如下:
我們今天要實作的需求,如下
建立一個 main.js,/*code*/
裡面放 To-Do List 的邏輯,這邊用純 js 的方式用來實現本範例的功能以及對應的行為。
(function () {
/* code */
}())
傳入 window
和 document
(function (window, document) {
/* code */
}(window, document))
const todoListDOM = document.getElementById('todoList');
因為 ... 所以這裡只用到了 ul(#todoList)
我們預期 todoList 的資料會長像這樣
[
{
"isComplete": false,
"desc": "..."
},
...
]
那我可以建立 render 的函式,會接收 todoList 陣列,並轉呈 HTML 塞到 ul(#todoList)
function renderTodoList(todoList) {
const html = todoList.map((item, index) => `<li class="list">
<a class="${item.isComplete ? 'finish' : 'unfinish'}" data-id=${item.id}></a>
<p class="desc" data-id=${item.id}>
${item.desc}
</p>
<a class="del" data-id=${item.id}></a>
</li>`).join('')
todoListDOM.innerHTML = html;
}
接著在 main.js 裡,fetch API,取得待辦事項清單:
let todoList = [];
// 取得待辦事項清單(GET)
fetch('http://localhost:3000/todolist')
.then(res => res.json())
.then(json => {
todoList = todoList.concat(json);
renderTodoList(todoList); // render todoList
})
.catch(err => {
console.log(err);
})
拿到待辦事項資料之後,再抓取 todoList 的 DOM,將資料塞入 list 裡面。
透過 Service Workers,在網站離線的情況下,也可以順利顯示 API 的資料:
一開始先列出 To-Do List 顯示/新增/刪除/修改待辦事項的需求,今天完成『顯示待辦事項』的部分,主要是抓取 Restful API 的資料去呈現待辦事項的內容,最後藉由 Service Worker 完成離線瀏覽網站的功能。
本人小小筆記,如有錯誤或需要改進的部分,歡迎給予回饋。
我將會用最快的速度修正,m(_ _)m。謝謝