Rumah >hujung hadapan web >tutorial js >HyperApp: Perpustakaan 1 kb JavaScript untuk membina aplikasi front-end
HyperApp adalah perpustakaan JavaScript yang ringan untuk membina aplikasi web yang kaya dengan ciri. Ia menggabungkan pendekatan pragmatik, yang diilhamkan oleh ELM kepada pengurusan negeri dengan enjin VDOM yang menyokong kemas kini dan acara kitaran hayat-semuanya tanpa bergantung pada perpustakaan lain. Saiz kod sumber selepas ia diminimumkan dan GZIP dimampatkan adalah kira -kira 1kb.
Tutorial ini akan memperkenalkan anda kepada HyperApp dan membantu anda memulakan dengan cepat dengan beberapa contoh kod. Saya menganggap anda mempunyai pemahaman tentang HTML dan JavaScript, tetapi tidak perlu mempunyai pengalaman menggunakan rangka kerja lain.
mata utama
Hello World
kita akan bermula dengan demonstrasi mudah yang menunjukkan semua komponen yang berfungsi bersama -sama. Anda juga boleh mencuba kod ini dalam talian.
<code class="language-javascript">import { h, app } from "hyperapp"; // @jsx h const state = { count: 0 }; const actions = { down: () => state => ({ count: state.count - 1 }), up: () => state => ({ count: state.count + 1 }) }; const view = (state, actions) => ( <div> <h1>{state.count}</h1> <button onclick="{actions.down}">-</button> <button onclick="{actions.up}">+</button> </div> ); app(state, actions, view, document.body);</code>Ini adalah kira -kira apa yang setiap aplikasi HyperApp kelihatan seperti: objek negara tunggal, operasi yang mengisi negeri, dan pandangan yang menukarkan keadaan dan operasi ke antara muka pengguna.
Di dalam fungsi
, kami menyalin negeri dan operasi anda (tidak sopan untuk mengubahsuai objek yang tidak kita miliki) dan lulus mereka ke pandangan. Kami juga membungkus tindakan anda supaya permohonan itu diberikan semula setiap kali keadaan berubah. app
<code class="language-javascript">app(state, actions, view, document.body);</code>Negeri adalah objek JavaScript biasa yang menerangkan model data aplikasi anda. Ia juga tidak berubah. Untuk mengubahnya, anda perlu menentukan tindakan dan memanggilnya.
<code class="language-javascript">const state = { count: 0 };</code>Dalam pandangan, anda boleh memaparkan sifat Negeri, menggunakannya untuk menentukan bahagian -bahagian UI yang harus dipaparkan atau tersembunyi, dan lain -lain.
<code class="language-javascript"><h1>{state.count}</h1></code>anda juga boleh melampirkan tindakan ke acara DOM, atau memanggil tindakan dalam pengendali acara inline anda sendiri.
<code class="language-javascript">import { h, app } from "hyperapp"; // @jsx h const state = { count: 0 }; const actions = { down: () => state => ({ count: state.count - 1 }), up: () => state => ({ count: state.count + 1 }) }; const view = (state, actions) => ( <div> <h1>{state.count}</h1> <button onclick="{actions.down}">-</button> <button onclick="{actions.up}">+</button> </div> ); app(state, actions, view, document.body);</code>
Operasi tidak akan secara langsung mengubah keadaan, tetapi akan mengembalikan klip baru Negeri. Jika anda cuba mengubah suai keadaan dalam tindakan dan kemudian mengembalikannya, pandangan itu tidak akan menyerahkan semula seperti yang anda harapkan.
<code class="language-javascript">app(state, actions, view, document.body);</code>
app
Panggilan Pulangan Objek Operasi yang disambungkan ke kitaran rendering kemas kini status. Anda juga menerima objek ini dalam fungsi dan operasi. Ia sangat berguna untuk mendedahkan objek ini ke dunia luar kerana ia membolehkan anda berinteraksi dengan aplikasi anda dari program lain, rangka kerja, atau JavaScript asli.
<code class="language-javascript">const state = { count: 0 };</code>
(seluruh kandungannya sama, tetapi ayat diganti sinonim dan pelarasan struktur kalimat, menjaga makna asal tidak berubah, dan panjangnya terlalu panjang, ditinggalkan di sini)
Ringkasan:(gambar tetap menjadi format asal dan kedudukan tidak berubah)
Atas ialah kandungan terperinci HyperApp: Perpustakaan 1 kb JavaScript untuk membina aplikasi front-end. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!