Menggunakan CDN
Pada halaman statis yang sulit memasang paket, Anda dapat memuat bundel browser dan CSS NABI NOTE melalui CDN. Contoh berikut membaca versi paket secara otomatis saat build untuk membuat alamat, lalu menyusun editor melalui objek global NabiNote.
Simpan kode di bawah sebagai lalu buka di browser — hasilnya langsung terlihat.
<!doctype html>
<html lang="id">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>NABI NOTE</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nabi-note@1.6.1/dist/nabi.css">
<style>
html, body { height: 100%; margin: 0; }
/* Dalam contoh ini, editor memenuhi tinggi browser. Sesuaikan tingginya dengan tata letak situs Anda. */
#app { height: 100vh; }
#editor { flex: 1; min-height: 0; overflow-y: auto; }
</style>
</head>
<body>
<div id="app" class="nabi">
<div id="chrome" class="nabi-toolbar">
<div class="nabi-toolbar-row">
<span id="tools"></span>
<div id="toolbar"></div>
</div>
<div id="context"></div>
</div>
<div id="editor" class="nabi-content"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/nabi-note@1.6.1/dist/browser/nabi-note.min.js"></script>
<script>
var N = NabiNote
var app = document.querySelector('#app')
var surface = document.querySelector('#editor')
// Pilih wing penyuntingan dan pengelolaan berkas yang digunakan dalam contoh ini.
// Contoh ini hanya memuat font sans serif dan serif.
// Untuk menggunakan font monospace atau tulisan tangan, muat juga berkas font yang sesuai di halaman.
// Lihat dokumentasi “Tipografi” untuk rinciannya.
var wings = N.wings().allBasic().use('save').use('open').use('tf', { values: ['sans', 'serif'] })
var made = N.createNabiWith(wings, {
locale: 'id',
ask: {
message: function (text) { window.alert(text) },
confirm: function (text) { return window.confirm(text) }
}
})
var nabi = made.nabi
var registry = made.registry
N.mountSurface({ nabi: nabi, registry: registry, root: surface, locale: 'id' })
N.mountPickedMark({ nabi: nabi, surface: surface })
var settle = N.watchSettle(document, { surface: surface })
var shared = { nabi: nabi, registry: registry, surface: surface, settle: settle, locale: 'id' }
var history = N.mountLocalHistory({ nabi: nabi, storage: N.browserHistoryStorage(window) })
var file = N.mountFile({
nabi: nabi, registry: registry, store: N.browserFileStore(document),
name: function () { return 'note' }, locale: 'id'
})
var toolbar = N.mountToolbar(Object.assign({}, shared, {
root: document.querySelector('#toolbar'),
file: file,
onHost: function (w) {
if (w !== 'localHistory') return
N.openHistoryPanel({
history: history, surface: surface, locale: 'id', sessionId: history.sessionId,
render: function (record) {
return N.renderStoredHtml(JSON.parse(record.body), registry) || ''
}
})
}
}))
var context = N.mountContextToolbar(Object.assign({}, shared, { root: document.querySelector('#context') }))
N.mountHints({ toolbar: toolbar, context: context, root: document.querySelector('#chrome'), surface: surface })
N.mountViewTools({ nabi: nabi, surface: surface, root: app, container: document.querySelector('#tools'), locale: 'id' })
nabi.setHtml('')
// Contoh ini menjadwalkan penyimpanan saat dokumen berubah.
// nabi.onChange(function () { user_callback(nabi.getJson()) })
</script>
</body>
</html>Hal yang perlu diperiksa di NABI NOTE
- Dalam kode penerapan, gunakan versi tetap yang sama untuk CSS dan JavaScript browser. Alamat tanpa versi seperti
latestdapat mengubah perilaku saat versi baru dirilis. - Bundel browser menyediakan API akar sebagai
window.NabiNote. Tidak ada bundel global terpisah untuknabi-note/ssr,nabi-note/viewer, dannabi-note/diff. - Penyimpanan berkas dan riwayat lokal pada contoh berjalan di browser pengguna. Jika memerlukan penyimpanan server atau sinkronisasi akun, kirim hasil
getJson()ke API aplikasi. - Saat menambahkan unggahan, sambungkan bukan hanya wing
upload, tetapi juga fungsi pengiriman yang sebenarnya serta wings gambar atau tautan yang diperlukan. Server unggahan bertanggung jawab memeriksa berkas. - Bundel browser menyertakan HTML parser secara internal. Karena itu,
setHtml(), membuka berkas HTML, dan menempelkan HTML tidak memerlukan opsi parser terpisah atau API privat.
CDN hanya berbeda pada cara memuatnya. Format penyimpanan dan validasi masukan sama seperti saat memasang lewat npm, jadi baca juga penggunaan dasar.