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 latest dapat mengubah perilaku saat versi baru dirilis.
  • Bundel browser menyediakan API akar sebagai window.NabiNote. Tidak ada bundel global terpisah untuk nabi-note/ssr, nabi-note/viewer, dan nabi-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.