Table of Contents
Hiểu được những điều cơ bản
Xây dựng bộ quản lý Đánh dấu JavaScript và dịch vụ lưu trữ Mạng là một dự án tuyệt vời để nắm vững các khái niệm trước. Tại lõi, ứng dụng phải xử lý ba hoạt động chính: [FLT: 0] Tạo [FLT: 0] [FLT: 1], ), đọc [FLT:], và [FL:4] example [FL:]ete [FL:5] — một mẫu CLD cổ điển, trừ đi cập nhật cho hiện nay. Dữ liệu sống trong trình duyệt [L: 6] [L: FL] [LT] [LT] [FLT], tùy chọn đánh dấu], không cần tiếp tục chạy các phiên chạy.
Trước khi viết một dòng mã, hãy củng cố sự hiểu biết của bạn về những cột sau:
- [FLT: 0] Các giao diện mã nguồn Bạn sẽ truy vấn các yếu tố, lắng nghe các sự kiện, và điều khiển cây tài liệu để hiển thị các liên kết lưu động.
- [FLT: 0] Comment Comment ) Cửa hàng giá trị này giữ dữ liệu ngay cả sau khi trình duyệt đóng. Nó chỉ hỗ trợ chuỗi, vì vậy các đối tượng phải được nối tiếp với [FLT: 0] và di chuyển với ).
- Chương trình chào mừng:) Dạng phát ra ) các sự kiện; xoá bỏ các nút phóng . Làm chủ là không- thương lượng.
- phương pháp cầu kỳ:) [FLT:], , và [FLT: 7) sẽ giúp thực hiện và điều khiển danh sách đánh dấu hiệu quả.
Xây dựng bộ quản lý Đánh dấu lõi
Cấu trúc HTML
Bắt đầu với một bộ xương HTML tối thiểu. Dạng này thu thập tên và URL của Đánh dấu; một danh sách chưa sắp xếp để vẽ các liên kết lưu.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bookmark Manager</title>
</head>
<body>
<h1>My Bookmarks</h1>
<form id="bookmarkForm">
<label for="name">Name</label>
<input type="text" id="name" required />
<label for="url">URL</label>
<input type="url" id="url" required />
<button type="submit">Add Bookmark</button>
</form>
<ul id="bookmarkList"></ul>
<script src="app.js" defer></script>
</body>
</html>
Hãy chú ý thuộc tính trên thẻ script - nó đảm bảo rằng các mã HTML được phân tích đầy đủ trước khi văn lệnh chạy, loại bỏ nhu cầu trong các thiết lập hiện đại.
Để tự chủ (được khuyến khích nhưng được khuyến khích)
Trong khi hệ thống này không phải là tiêu điểm, một giao diện sạch cải thiện kinh nghiệm người dùng. Thêm một tờ kiểu dáng đơn giản vào dạng không gian, cho cái nút một cái nhìn nhất quán, và kiểu dáng các mục đánh dấu với hiệu ứng lơ lửng. Việc vẽ theo hàng nhỏ cũng có thể được tiêm qua JavaScript, nhưng một riêng [FLT:] được ưu tiên để duy trì khả năng.
<!-- inside <head> -->
<link rel="stylesheet" href="style.css" />
Trong , hãy dùng hộp xoay cho bố trí mẫu, chiều rộng tối đa cho container, và phản hồi hình ảnh riêng biệt để xoá các nút để ngăn chặn sự nhắp ngẫu nhiên.
logic — Tâm điểm của ứng dụng
Tất cả sự kiên trì và tương tác sống trong .
Bộ sở khởi dữ liệu
Chúng ta cần một biến trung tâm đang giữ danh sách các liên kết lưu hiện thời. Nó nên được khởi tạo từ hoặc rơi trở lại một dãy rỗng.
let bookmarks = [];
function loadBookmarks() {
const stored = localStorage.getItem('bookmarks');
if (stored) {
bookmarks = JSON.parse(stored);
} else {
bookmarks = [];
}
}
function saveBookmarks() {
localStorage.setItem('bookmarks', JSON.stringify(bookmarks));
}
loadBookmarks();
Chức năng được gọi mỗi lần thay đổi dãy — sau khi thêm, biên tập, hoặc xoá đánh dấu. Việc này đảm bảo lưu trữ luôn luôn được đồng bộ với dãy in-mory.
Hiển thị Đánh dấu
Vẽ danh sách Đánh dấu có nghĩa là lặp lại trên dãy và tạo danh sách mục với thẻ neo và nút xoá.
function renderBookmarks() {
const list = document.getElementById('bookmarkList');
list.innerHTML = ''; // clear existing entries
bookmarks.forEach(function(bookmark, index) {
const li = document.createElement('li');
li.dataset.index = index;
const link = document.createElement('a');
link.href = bookmark.url;
link.textContent = bookmark.name;
link.target = '_blank';
link.rel = 'noopener noreferrer';
const deleteBtn = document.createElement('button');
deleteBtn.textContent = 'Delete';
deleteBtn.addEventListener('click', function() {
deleteBookmark(index);
});
li.appendChild(link);
li.appendChild(deleteBtn);
list.appendChild(li);
});
}
Dùng thay vì trong HTML tránh các điểm khi đánh dấu chứa các tên HTML. Nút di chuyển dùng để đóng để ghi lưu.
Thêm Đánh dấu
Hãy lắng nghe sự kiện , ngăn chặn việc nạp lại trang mặc định, tạo một đối tượng đánh dấu, đẩy nó vào danh sách, kiên trì và tái biên dịch.
document.getElementById('bookmarkForm').addEventListener('submit', function(e) {
e.preventDefault();
const nameInput = document.getElementById('name');
const urlInput = document.getElementById('url');
const newBookmark = {
name: nameInput.value.trim(),
url: urlInput.value.trim()
};
// Basic validation: ensure URL starts with http/https
if (!newBookmark.url.startsWith('http://') && !newBookmark.url.startsWith('https://')) {
newBookmark.url = 'https://' + newBookmark.url;
}
bookmarks.push(newBookmark);
saveBookmarks();
renderBookmarks();
// Reset form
nameInput.value = '';
urlInput.value = '';
nameInput.focus();
});
Cách tiếp cận này là đơn giản. Để sản xuất, bạn có thể muốn xác định thêm định dạng URL bằng nhà xây dựng hoặc một regex.
Xóa Đánh dấu
Việc xoá bỏ mục này ở chỉ mục đã cho, cập nhật và lưu trữ lại và dùng chuỗi HTML.
function deleteBookmark(index) {
bookmarks.splice(index, 1);
saveBookmarks();
renderBookmarks();
}
Dùng biến đổi dãy dãy này. Nếu bạn muốn tính khả thi, bạn có thể dùng và , nhưng với một dự án nhỏ như thế này, là rõ ràng và trình diễn.
Làm tăng thêm khả năng ứng dụng
Một khi máy CUD hoạt động, hãy xem xét những cải tiến này để biến một mẫu thử nghiệm thành một công cụ mạnh mẽ.
Sửa Đánh dấu
Thay thế tên trạng thái tĩnh/ liên kết bằng một chế độ sửa đổi nội bộ. Khi người dùng nhắp vào cái nút soạn thảo, hãy trao đổi thẻ neo với trường nhập trước đó đầy các giá trị hiện thời. Khi lưu, cập nhật lại trang và bền bỉ.
Gợi ý tăng dần: thêm một chức năng tạo đầu vào có thể sửa đổi. Hãy dùng [FLT: 0] đại diện trong danh sách để xử lý việc sửa đổi tiết kiệm mà không cần gắn nhiều thính giả.
Phân loại với thẻ
Thêm một thuộc tính tùy chọn cho mỗi đối tượng Đánh dấu (v., . Sau đó, mở rộng UI với một đầu vào lọc có chứa các mục không khớp. Bạn có thể lưu thẻ dạng chuỗi dấu phẩy bên trong mẫu và chia chúng ra một mảng.
Nhập và Xuất
Cho phép người dùng sao lưu hay truyền liên kết lưu. Hãy dùng hoặc một tập tin tải về. Xuất dạng vào chuỗi JSON và kích hoạt một bản tải về qua và . Nhập khẩu đọc JSON và hợp nhất với đánh dấu đã có.
function exportBookmarks() {
const data = JSON.stringify(bookmarks, null, 2);
const blob = new Blob([data], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'bookmarks.json';
a.click();
URL.revokeObjectURL(url);
}
Tìm kiếm và lọc
Thêm một kết nhập bên trên danh sách Đánh dấu. Trên mỗi sự kiện , lọc , trang [hay URL] và gọi biến số mà hiển thị chỉ các trận đấu. Để tránh mất danh sách gốc, lưu một bản sao lọc hoặc sử dụng tham số đã tính toán.
Tương thích với việc thử và duyệt
Bộ quản lý địa phương được hỗ trợ trong tất cả các trình duyệt hiện đại, nhưng các phiên bản cũ hơn của Internet Explorer (IE 8+) có một hệ thống ADI khác. Nếu bạn cần hỗ trợ môi trường di sản, kiểm tra với polymries hoặc giảm trở lại cookie. Ngày nay [FLT: 0]; Grome, Firefox, Sai, Edge ) (cả hai ch và di sản) xử lý [FL:40] và [FL:41] không có vấn đề.
Khi thử nghiệm, xác nhận:
- Dữ liệu tồn tại sau khi trang được cập nhật và trình duyệt khởi động lại.
- Đang xóa cập nhật đánh dấu cả UI và lưu trữ.
- Các ký tự đặc biệt trong tên đánh dấu (quot, ampersand) được dịch đúng.
- Địa chỉ Mạng có bị bình thường hóa.
Dùng công cụ phát triển tự động [FLT: 1] > Ứng dụng & gt; Lưu trữ > lưu trữ & gt; nhà soạn thảo [FLT:] để mô phỏng dòng chảy người dùng — điền, thêm, xóa, và xác nhận danh sách đó vẫn còn.
Kết luận
Dự án này cho thấy làm thế nào vài chục dòng JavaScript có thể tạo ra một ứng dụng mạng hoàn toàn chức năng, bền bỉ. Bạn đã học cách khai thác [FLT:] các thao tác cho sự kiên trì dữ liệu , [FLT:] [FLT:] [FT:] [FLT]],] để cập nhật [FLT:], repation], reter- reternations, và [các mục tiêu chuẩn bị cho ULT:], và [FT:4] các hoạt động [FT:4] như thiết lập trình nền tảng [FL:] [FL: t] [FL:5] không có hậu phương pháp]. — mẫu ban đầu bạn áp dụng từ hậu phương pháp hỗ trợ từ việc lưu trữ, xây dựng lại các chức năng hiện đại, và các chức năng hiện đại, v.
Để hiểu sâu hơn, hãy tìm hiểu tài liệu hướng dẫn . Để hiểu rõ hơn về các tài liệu địa phương ) [FLT: 1] và đọc ) về ) [FLT:] [FLT:]. Đối với các nhà quản lý quốc gia tiên tiến hơn, hãy tìm kiếm , tìm kiếm [FL:] trong phần mềm [FL:5], bạn có thể mở rộng kiến thức riêng của bạn.