İnşaat & Yapısal Mühendislik
Yerel Depolama Persistence ile bir Javascript Bookmark Manager oluşturmak
Table of Contents
Temelleri anlamak
JavaScript ve Web Storage API ile bir kitap işaret yöneticisi inşa etmek temel ön uç kavramları ustalaştırmak için mükemmel bir projedir.Ana sayfasında, uygulama üç birincil işlem ele almalıdır: create, [[Dönetici, ve [FLT: 5 ), bir sunucu olmadan oturumlarda devam etmek için devam ettirilir.
Tek bir kod hattı yazmadan önce, aşağıdaki sütunların anlayışını sağlam bir şekilde ifade edin:
- [FONT:0] DOM API:[[Dönetici:[Dönetici:0)[FONT:0)[FONT=0][FONT=FONT=0))[[FONT=FONT=0}[FONT=0}[FONT=FONT=0))))))))))))) Bu kitabı görüntülemek için belge ağacının hafızasını dinamik olarak görüntülemek için sorgulayacak.
- [[Düzücü:0) Yerel Yönetim: [Dönetici:[Dönetici:0) Bu anahtar değerli mağaza, tarayıcı kapalıyken bile verileri tutar.Bu sadece dizeleri destekler, bu yüzden nesneler [[0) ile serileştirilmelidir ve 1'de silinmelidir.
- [FONT=0] Event-güdümlü programlama: [DÜT:1] Formlar yayılabilir:2) olaylar; düğmeleri silüceler havalimanları: 3 ) MasteringahiFLT:4) olmayan olaylardır.
- [FONT:0)Array yöntemleri:[Dönem:[Dönem: · 1/14) ve [[Döneticileri, s.
Core Bookmark Manager'ı inşa edin
HTML Structure HTML Structure
Asgari, semantik HTML iskeleti ile başlayın. Form, kitapmark'ın adını ve URL'sini toplar; siparişsiz bir liste depolanan kitap işaretlerini oluşturur.
<!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>
Senaryo etiketindeki özellik fark et - senaryonun çalışmasından önce DOM tamamen parsed olduğundan, modern kurulumlarda ayu ortadan kaldıran ihtiyacı ortadan kaldır.
Kullanılabilirlik için Styling (Otoğal ama Öneri)
CSS odak değildirken, temiz bir arayüz kullanıcı deneyimini geliştirir. Formdan uzaya basit bir stil tablosu ekleyin, tutarlı bir görünüm verin ve kitap işaret liste öğelerini yaylı etkilerle stiline yazın. Minimal inline stili JavaScript ile enjekte edilebilir, ancak ayrı bir şekilde kullanılabilirlik için tercih edilir.
<!-- inside <head> -->
<link rel="stylesheet" href="style.css" />
Inurd: 9) Form düzeni için flexbox kullanın, konteyner için maksimum genişlik ve yanlışlıkla tıklamaları önlemek için düğmeleri silmek için ayrı görsel geri bildirimler kullanın.
JavaScript Mantık - Uygulamanın Kalbi
Bütün kalıcılık ve etkileşim her işlevi kırıyor.
Data Firstization
Mevcut kitap işaretlerini tutan merkezi bir değişkene ihtiyacımız var.İlk olarak, [[ŞUÇUÇLAR: 15) veya boş bir diziye geri dönmeli.
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();
[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=
Ekranlama Bookmarks
Kitapmark listesinin değiştirilmesi, İZFLT:18'in üzerinde iterating anlamına gelir ve bir demir etiketi ve silin düğmesi ile liste öğeleri yaratır.
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);
});
}
İçHTML yerine, XSS açıklarından kaçınırsa, liste işaret isimleri HTML içerir. silin düğmesine, kitabın işaretini kapatmak için bir tıkır kullanır.
Bir kitap ekle
Formun [[Dönetici) etkinliği için dinleyin, varsayılan sayfa yeniden yüklemesini önler, bir kitap işareti nesne yaratır, onu seriye itin, devam edin ve yeniden-render.
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();
});
Bu yaklaşım basittir. Üretim için, URL formatını daha fazla ESFLT:23 kullanarak doğrulamak isteyebilirsiniz.
Bir Kitapmarkasını Çıkarmak
Deletion, verilen indeks ve güncelleştirme depolamadaki öğeyi ve DOM'yu ortadan kaldırır.
function deleteBookmark(index) {
bookmarks.splice(index, 1);
saveBookmarks();
renderBookmarks();
}
[[Adım, ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
Uygulamayı teşvik edin
Temel CRUD işe alındığında, bu gelişmelerin sağlam bir araç haline gelmesini düşünün.
Bookmarks
Statik adı / bağlantıyı bir sıra dışı düzenleme modunda değiştirin. kullanıcı bir düzenleme düğmesine tıkladığında, mevcut değerler ile önceden doldurulmuş giriş alanları ile demir etiketi takas edin.On save, update the array and maintain.
Uygulama ipucu: değiştirilebilir girişler oluşturan bir işlev ekleyin.UseETHFLT:0)event delegasyonu) listedeki birden fazla dinleyici eklemek olmadan tasarrufları yürütmek için.
Tags: Categorization with Tags
Bir opsiyonel ekran görüntüsüne sahip bir ürün ekleyin (örneğin, [[Gerçeği, liste öğelerini gizlemek için etiketli bir eklentiyi kapatabilirsiniz.You can store tags as a comma-separated string inside the form and partition them into an array.
İthalat ve ihracat
Kullanıcıların bir JSON dizesine göre ve mevcut kitap işaretleri ile bir indirmeyi veya yükleme işlemini yapabilmelerine izin verin. İthalat, JSONT:33'e ait bir dosyayı indirebilirsiniz ve mevcut kitap işaretleri ile JSON'u birleştirir.
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);
}
Arama ve Filtre
Kitap adı altında bir giriş ekleyin.Her bir FLT:37'de, bir filtreli kopyayı kaydetmek veya bir hesaplanmış parametre kullanmak için.
Test ve Tarayıcı Uyumluluk
YerelStorage tüm modern tarayıcılarda destekleniyor, ancak Internet Explorer'ın eski versiyonları (IE 8+) farklı bir API'si vardı.Eğer miras ortamları desteklemeli, polifills ile test etmeli veya kurabiyeye geri çekilmelisiniz.BugünChrome, Firefox, Safari, Edge ve mirası) iş birliği içinde.
Test edildiğinde, doğrulayın:
- Data hayatta kalır sayfa yenilenir ve tarayıcı yeniden başlar.
- Bir kitap işareti her iki arayüzü ve depolamayı da güncelle.
- Bookmark isimlerinde özel karakterler (Bölümler, ampersands) doğru şekilde yapılır.
- URL'ler ve olmadan:FLT:42) normalize edilir.
Kullanım:0) Geliştirme araçları[[Dönetici:)[Dönetici: Uygulama vegt; Storage > Yerel depolama verileri manuel olarak kaydetmek için
) Otomatik test için, [[DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD][/FONT][/FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=TRNT=TRNT=TR=TR=TR=FONT=TR=TR=TRNT=TRNT=TRNT=TRNT=TR=TRNT=TRNT=FONT=TRNT=FONT=TRNT=TRNT=TRNT=I=TRNT=TRNT=TRNT=TRNT=TRNT=TRNT=I=TRNT=TRNT=TRNT=TRNT=STRNT=TRNT=TRNT=TRNT=TRNT=TRNT
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Bu proje, birkaç düzine vanilya JavaScript'in tamamen işlevsel, kalıcı bir web uygulaması oluşturabileceğini gösteriyor.[Dönetici:0) YerelStorage API) için veri devam ediyor, [Döneticileri için 3DÜDÜDÜDÜDÜDÜDÜD operasyonları[DÜye Olmayanlar İçin Tıklayınız.
Anlayışınızı derinleştirmek için, [[Döneticileri Üzerine ·0] ^ ^ ^ "[Döneticileri ve DÜŞÜNCÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ: 2) Bu bina bloklarıyla, kitap adınızı tam bir kişisel bilgi tabanına genişletebilirsiniz.