Rumah >hujung hadapan web >tutorial js >Projek Aplikasi Svelte: Membina UI Aplikasi Berita Planet '
Dalam tutorial ini, kami akan memperkenalkan Svelte dengan membina permohonan berita yang diilhamkan oleh Daily Planet, akhbar fiksyen dari dunia Superman.
Takeaways Key
Svelte berjalan pada
binaan masa, menukar komponen anda ke dalam kodKami akan belajar tentang konsep asas seperti komponen svelte dan bagaimana untuk mengambil dan melepasi array data. Kami juga akan belajar bagaimana untuk memulakan projek Svelte, menjalankan pelayan pembangunan tempatan dan membina bundle akhir.yang sangat efisien yang pembedahan mengemas kini DOM. Akibatnya, anda dapat menulis aplikasi bercita -cita tinggi dengan ciri -ciri prestasi yang sangat baik. Svelte lebih cepat daripada kerangka yang paling kuat (bertindak balas, vue dan sudut) kerana ia tidak menggunakan dom maya dan pembedahan hanya bahagian yang berubah.
Prasyarat
anda perlu mempunyai beberapa prasyarat, jadi anda boleh mengikuti tutorial ini dengan selesa, seperti:
kebiasaan dengan HTML, CSS, dan JavaScript (ES6),
Kami akan menggunakan API JSON sebagai sumber berita untuk aplikasi kami, jadi anda perlu mendapatkan kunci API dengan hanya membuat akaun secara percuma dan mengambil perhatian mengenai kunci API anda.
Sekarang, mari kita mula membina aplikasi Daily Planet News kami dengan menggunakan alat degit untuk menghasilkan projek svelte.
anda boleh memasang degit secara global pada sistem anda atau menggunakan alat NPX untuk melaksanakannya dari npm. Buka terminal baru dan jalankan arahan berikut:
npx degit sveltejs/template dailyplanetnews
Seterusnya, navigasi di dalam folder projek anda dan jalankan pelayan pembangunan menggunakan arahan berikut:
<span>cd dailyplanetnews </span><span>npm run dev </span>
pelayan dev anda akan mendengar dari alamat http: // localhost: 5000. Jika anda melakukan apa-apa perubahan, mereka akan dibina semula dan dilepaskan secara langsung ke dalam aplikasi berjalan anda.
Buka fail main.js projek anda, dan anda harus mencari kod berikut:
<span>import <span>App</span> from './App.svelte'; </span> <span>const app = new App({ </span> <span>target: document.body, </span> <span>props: { </span> <span>name: 'world' </span> <span>} </span><span>}); </span> <span>export default app; </span>
Ini adalah di mana aplikasi Svelte dibebaskan dengan membuat dan mengeksport contoh komponen akar, secara konvensional dipanggil aplikasi. Komponen mengambil objek dengan sasaran dan atribut prop.
Sasaran mengandungi elemen DOM di mana komponen akan dipasang, dan prop mengandungi sifat yang kami mahu lulus ke komponen aplikasi. Dalam kes ini, ia hanya nama dengan dunia nilai.
Buka fail app.svelte, dan anda harus mencari kod berikut:
<span><span><span><script</span>></span><span> </span></span><span><span> <span>export let name; </span></span></span><span><span></span><span><span></script</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span>h1 { </span></span></span><span><span> <span>color: purple; </span></span></span><span><span> <span>} </span></span></span><span><span></span><span><span></style</span>></span> </span> <span><span><span><h1</span>></span>Hello {name}!<span><span></h1</span>></span> </span>
Ini adalah komponen akar permohonan kami. Semua komponen lain akan menjadi anak -anak aplikasi.
Komponen dalam Svelte Gunakan lanjutan .svelte untuk fail sumber, yang mengandungi semua javascript, gaya dan markup untuk komponen.
Eksport Let Nama; Sintaks mencipta komponen komponen yang dipanggil nama. Kami menggunakan interpolasi berubah - {...} - untuk memaparkan nilai yang diluluskan melalui nama prop.
Anda hanya boleh menggunakan JavaScript lama, CSS, dan HTML yang anda kenal untuk membuat komponen Svelte. Svelte juga menambah beberapa sintaks templat ke HTML untuk interpolasi berubah -ubah dan gelung melalui senarai data, dan lain -lain
Oleh kerana ini adalah aplikasi kecil, kita hanya dapat melaksanakan fungsi yang diperlukan dalam komponen aplikasi.
Dalam tag
<span><script> </span> <span>export let name; </span> <span>import <span>{ onMount }</span> from "svelte"; </span> <span>const API_KEY = "<YOUR_API_KEY_HERE>"; </span> <span>const URL = <span>`https://newsapi.org/v2/everything?q=comics&sortBy=publishedAt&apiKey=<span>${API_KEY}</span>`</span>; </span> <span>let articles = []; </span> <span></script> </span>
onMount adalah kaedah kitaran hayat. Inilah tutorial rasmi mengenai perkara itu:
Setiap komponen mempunyai kitaran hayat yang bermula apabila ia dicipta dan berakhir apabila ia dimusnahkan. Terdapat beberapa fungsi yang membolehkan anda menjalankan kod pada saat -saat penting semasa kitaran hayat itu. Yang anda akan gunakan paling kerap ialah OnMount, yang berjalan selepas komponen pertama kali diberikan kepada Dom.
Seterusnya, mari kita gunakan API Fetch untuk mengambil data dari titik akhir berita dan simpan artikel dalam pembolehubah artikel apabila komponen dipasang di DOM:
npx degit sveltejs/template dailyplanetnews
Oleh kerana kaedah pengambilan () mengembalikan janji JavaScript, kita boleh menggunakan sintaks async/menunggu untuk membuat kod kelihatan segerak dan menghapuskan panggilan balik.
Seterusnya, mari tambahkan markup HTML berikut untuk membuat UI aplikasi kami dan memaparkan data berita:
<span>cd dailyplanetnews </span><span>npm run dev </span>
Kami menggunakan setiap blok untuk gelung melalui artikel berita dan kami memaparkan tajuk, keterangan, url dan urltoimage setiap artikel.
Logo Planet Harian dan tajuk utama dipinjam dari organisasi berita bukan keuntungan yang diilhamkan oleh DC Comics.
Kami akan menggunakan Kalam, fon tulisan tangan yang boleh didapati dari Google Fonts, jadi buka fail awam/index.html dan tambahkan tag berikut:
<span>import <span>App</span> from './App.svelte'; </span> <span>const app = new App({ </span> <span>target: document.body, </span> <span>props: { </span> <span>name: 'world' </span> <span>} </span><span>}); </span> <span>export default app; </span>
Seterusnya, kembali ke fail app.svelte dan tambahkan gaya berikut:
<span><span><span><script</span>></span><span> </span></span><span><span> <span>export let name; </span></span></span><span><span></span><span><span></script</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span>h1 { </span></span></span><span><span> <span>color: purple; </span></span></span><span><span> <span>} </span></span></span><span><span></span><span><span></style</span>></span> </span> <span><span><span><h1</span>></span>Hello {name}!<span><span></h1</span>></span> </span>
Ini adalah tangkapan skrin aplikasi berita harian kami:
<span><script> </span> <span>export let name; </span> <span>import <span>{ onMount }</span> from "svelte"; </span> <span>const API_KEY = "<YOUR_API_KEY_HERE>"; </span> <span>const URL = <span>`https://newsapi.org/v2/everything?q=comics&sortBy=publishedAt&apiKey=<span>${API_KEY}</span>`</span>; </span> <span>let articles = []; </span> <span></script> </span>Perintah akan menghasilkan bundle minified dan siap sedia yang anda boleh menjadi tuan rumah pada pelayan hosting pilihan anda.
Mari kita menjadi tuan rumah aplikasi menggunakan ZEIT sekarang.
Zeit Now adalah platform awan untuk laman web dan fungsi tanpa pelayan yang boleh anda gunakan untuk menggunakan projek anda ke .Now.sh atau domain peribadi.
kembali ke terminal anda dan jalankan arahan berikut untuk memasang sekarang CLI:
<span><script> </span> <span>// [...] </span> <span>onMount(async function() { </span> <span>const response = await fetch(URL); </span> <span>const json = await response.json(); </span> articles <span>= json["articles"]; </span> <span>}); </span><span></script> </span>Seterusnya, navigasi ke folder awam dan jalankan perintah sekarang:
<span><span><span><h1</span>></span> </span> <span><span><span><img</span> src<span>="https://dailyplanetdc.files.wordpress.com/2018/12/cropped-daily-planet-logo.jpg?w=656&h=146"</span> /></span> </span> <span><span><span><p</span> class<span>="about"</span>></span> </span> The Daily Planet is where heroes are born and the story continues. We are proud to report on the planet, daily. <span><span><span></p</span>></span> </span><span><span><span></h1</span>></span> </span> <span><span><span><div</span> class<span>="container"</span>></span> </span> {#each articles as article} <span><span><span><div</span> class<span>="card"</span>></span> </span> <span><span><span><img</span> src<span>="{article.urlToImage}"</span>></span> </span> <span><span><span><div</span> class<span>="card-body"</span>></span> </span> <span><span><span><h3</span>></span>{article.title}<span><span></h3</span>></span> </span> <span><span><span><p</span>></span> {article.description} <span><span></p</span>></span> </span> <span><span><span><a</span> href<span>="{article.url}"</span>></span>Read story<span><span></a</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> {/each} <span><span><span></div</span>></span> </span>Itu sahaja! Permohonan anda akan digunakan ke awan. Dalam kes kami, ia boleh didapati dari public-kyqab3g5j.now.sh.
anda boleh mencari kod sumber aplikasi ini dari repositori GitHub ini.
Kesimpulan
anda boleh merujuk kepada dokumen rasmi untuk tutorial terperinci untuk mengetahui tentang setiap ciri Svelte.
Membuat aplikasi Berita Svelte Responsif melibatkan menggunakan pertanyaan media CSS untuk menyesuaikan susun atur aplikasi berdasarkan saiz skrin. Svelte membolehkan anda menulis kod CSS dalam fail yang sama dengan kod JavaScript dan HTML anda, menjadikannya lebih mudah untuk gaya komponen anda. Anda boleh menentukan gaya yang berbeza untuk saiz skrin yang berbeza untuk memastikan aplikasi anda kelihatan baik pada semua peranti.
Atas ialah kandungan terperinci Projek Aplikasi Svelte: Membina UI Aplikasi Berita Planet '. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!