Contoh Blok Kode
- 1Contoh Blok KodeThis article

Di sini, kita akan membahas cara menggunakan Expressive Code untuk menampilkan blok kode. Contoh yang disajikan didasarkan pada dokumentasi resmi. Anda dapat merujuknya untuk informasi lebih lanjut.
Kode Ekspresif
Penyorotan Sintaks
Penyorotan Sintaks Umum
console.log('Kode ini memiliki penyorotan sintaks!')Merender Urutan Escape ANSI
Warna ANSI standar:- Warna redup: Hitam Merah Hijau Kuning Biru Magenta Sian Putih - Warna teks: Hitam Merah Hijau Kuning Biru Magenta Sian Putih - Warna latar: Hitam Merah Hijau Kuning Biru Magenta Sian Putih - Warna terbalik: Hitam Merah Hijau Kuning Biru Magenta Sian Putih
Warna 8-bit (contoh warna 160–171):- Warna redup: 160 161 162 163 164 165 166 167 168 169 170 171 - Warna teks: 160 161 162 163 164 165 166 167 168 169 170 171 - Warna latar: 160 161 162 163 164 165 166 167 168 169 170 171 - Warna terbalik: 160 161 162 163 164 165 166 167 168 169 170 171
Warna 24-bit (RGB penuh):- Warna redup: Hijau Hutan - RGB(34,139,34) Ungu Rebecca - RGB(102,51,153) - Warna teks: Hijau Hutan - RGB(34,139,34) Ungu Rebecca - RGB(102,51,153) - Warna latar: Hijau Hutan - RGB(34,139,34) Ungu Rebecca - RGB(102,51,153) - Warna terbalik: Hijau Hutan - RGB(34,139,34) Ungu Rebecca - RGB(102,51,153)
Gaya huruf:- Biasa- Tebal- Redup- Miring- Garis bawah- Warna terbalik- DicoretKerangka Kerja Editor dan Terminal
Kerangka Kerja Editor dan Terminal
Kerangka Kerja Editor Kode
console.log('Contoh atribut judul')<div>Contoh komentar nama berkas</div>Kerangka Kerja Terminal
echo "Kerangka kerja terminal ini tidak memiliki judul"Write-Output "Ini ada judulnya!"Mengganti jenis bingkai
echo "Lihat, tidak ada bingkai!"# Jika tidak diganti, ini akan menjadi bingkai terminalfunction Watch-Tail { Get-Content -Tail 20 -Wait $args }New-Alias tail Watch-TailPenandaan Teks dan Baris
Menandai Seluruh Baris dan Rentang Baris
// Baris ke-1 - Penentuan posisi berdasarkan nomor baris// Baris ke-2// Baris ke-3// Baris ke-4 - Penentuan posisi berdasarkan nomor baris// Baris ke-5// Baris ke-6// Baris ke-7 - Penentuan posisi berdasarkan rentang "7-8"// Baris ke-8 - Penentuan posisi berdasarkan rentang "7-8"Memilih jenis penanda baris (mark, ins, del)
function demo() { console.log('Baris ini ditandai sebagai telah dihapus') // Baris ini dan baris berikutnya ditandai sebagai telah disisipkan console.log('Ini adalah baris sisipan kedua')
return 'Baris ini menggunakan jenis penanda default netral'}Menambahkan label ke penanda baris
<button role="button" {...props} value={value} className={buttonClassName} disabled={disabled} active={active}> {children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>Menambahkan label panjang pada baris terpisah
<button role="button" {...props}
value={value} className={buttonClassName}
disabled={disabled} active={active}>
{children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>Menggunakan sintaks mirip diff
Baris ini akan ditandai sebagai baris yang ditambahkanBaris ini akan ditandai sebagai baris yang dihapusIni adalah baris biasa--- a/README.md+++ b/README.md@@ -1,3 +1,4 @@+ini adalah berkas diff yang sebenarnya-semua isi akan tetap tidak diubah spasi kosong juga tidak akan dihapusMenggabungkan penyorotan sintaks dan sintaks mirip diff
function thisIsJavaScript() { // Seluruh blok ini akan disorot sebagai JavaScript, // dan kita masih bisa menambahkan tag diff ke dalamnya! console.log('Kode lama yang akan dihapus') console.log('Kode baru yang keren!')}Menandai teks tertentu dalam baris
function demo() { // Menandai teks apa pun yang diberikan di dalam baris return 'Mendukung beberapa kecocokan untuk teks yang diberikan';}Ekspresi reguler
console.log('Kata yes dan yep akan ditandai.')Meng-escape tanda garis miring
echo "Test" > /home/test.txtMemilih jenis penanda inline (mark, ins, del)
function demo() { console.log('Ini adalah jenis penanda penyisipan dan penghapusan'); // Pernyataan return menggunakan jenis penanda default return true;}Pemisahan Baris Otomatis
Mengonfigurasi pemisahan baris otomatis untuk setiap blok
// Contoh pengaktifan pemotongan barisfunction getLongString() { return 'Ini adalah string yang sangat panjang; kecuali wadahnya sangat lebar, kemungkinan besar string ini tidak akan muat di ruang yang tersedia'}// Contoh dengan wrap=falsefunction getLongString() { return 'Ini adalah string yang sangat panjang; kecuali wadahnya sangat lebar, kemungkinan besar tidak akan muat di ruang yang tersedia'}Konfigurasi indentasi saat pemotongan baris
// Contoh preserveIndent (diaktifkan secara default)function getLongString() { return 'Ini adalah string yang sangat panjang; kecuali wadahnya sangat lebar, kemungkinan besar string ini tidak akan muat di ruang yang tersedia'}// Contoh preserveIndent=falsefunction getLongString() { return 'Ini adalah string yang sangat panjang; kecuali wadahnya sangat lebar, kemungkinan besar string ini tidak akan muat di ruang yang tersedia'}Bagian yang Dapat Dilipat
5 collapsed lines
// Semua kode pengaturan boilerplate ini akan dilipatimport { someBoilerplateEngine } from '@example/some-boilerplate'import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// Bagian kode ini secara default tetap terlihatengine.doSomething(1, 2, 3, calcFn)
function calcFn() { // Anda dapat memiliki beberapa bagian yang dapat dilipat3 collapsed lines
const a = 1 const b = 2 const c = a + b
// Bagian ini akan tetap terlihat console.log(`Hasil perhitungan: ${a} + ${b} = ${c}`) return c}
4 collapsed lines
// Semua kode hingga akhir blok akan dilipat kembaliengine.closeConnection()engine.freeMemory()engine.shutdown({ reason: 'Contoh kode templat berakhir' })Nomor Baris
Menampilkan nomor baris untuk setiap blok
// Blok kode ini akan menampilkan nomor barisconsole.log('Salam dari baris ke-2!')console.log('Saya ada di baris ke-3')// Blok ini menonaktifkan nomor barisconsole.log('Halo?')console.log('Maaf, tahukah kamu di baris keberapa aku berada?')Mengubah nomor baris awal
console.log('Salam dari baris ke-5!')console.log('Aku ada di baris ke-6')Blok Kode Tab
Disediakan oleh rehype-code-group, sintaksnya sama dengan VitePress code group: gunakan ::: code-group labels=[...] untuk menggabungkan beberapa blok kode menjadi satu grup tab.
[!CATATAN] Label dalam
labels=[...]sesuai urutan dengan blok kode dalam grup tersebut, dipisahkan dengan koma; spasi antara:::dancode-grouptidak boleh dihilangkan.
Penggunaan Dasar
::: kelompok-kode label=[code.js, code.py, code.html]
```jsexport function greet(name) { return `Hello, ${name}!`;}```
```pydef greet(name): return f"Hello, {name}!"```
```html<p>Hello, world!</p>```
:::Efek rendering:
export function greet(name) { return `Hello, ${name}!`;}def greet(name): return f"Hello, {name}!"<p>Hello, world!</p>Penggunaan Emoji dalam Label
Label mendukung kode pendek emoji, yang akan secara otomatis diubah menjadi emoji saat proses kompilasi:
::: code-group labels=[:package: npm, :package: pnpm, :yarn: yarn]npm create astro@latestpnpm create astro@latestyarn create astroKombinasi dengan Fitur Blok Kode Lainnya
Di dalam grup ini, blok kode Expressive Code tetap berfungsi seperti biasa; fitur-fitur seperti judul, nomor baris, penanda baris, penyembunyian, dan bingkai terminal dapat digunakan seperti biasa.
export default { theme: "firefly", codeGroup: true,};pnpm build && pnpm preview3 collapsed lines
// Tiga baris ini terlipat secara defaultimport { a } from "a";import { b } from "b";
console.log(a, b);Lebih dari sekadar blok kode
Tab dapat berisi konten apa pun, seperti teks, daftar, atau gambar:
Ini adalah isi paragraf biasa.
- Item daftar pertama
- Item daftar kedua
Tab dibuat pada tahap pembangunan, dan secara default item pertama akan terbuka; mendukung navigasi dengan klik mouse dan tombol keyboard ← / → / Home / End.
Penggunaan dalam kotak pemberitahuan (komponen MDX)
Kotak petunjuk bergaya Docusaurus seperti ::: code-group dan ::: tip semuanya menggunakan sintaks kontainer :::, sedangkan micromark-directive menetapkan bahwa jumlah tanda titik dua pada kontainer induk dan anak harus berbeda. Oleh karena itu, ::: code-group tidak dapat disematkan di dalam kotak petunjuk seperti ::: tip (seluruh blok akan menjadi tidak berfungsi).
Dalam situasi ini, gunakan komponen MDX TabGroup: Komponen MDX tidak diproses melalui direktif :::, sehingga dapat digunakan dengan normal baik di dalam maupun di luar kotak petunjuk, serta memudahkan pengembangan komponen UI tambahan di masa mendatang. Ubah ekstensi artikel menjadi .mdx, lalu impor dari titik masuk terpusat @/components/firefly-mdx (Anda dapat mengimpor beberapa komponen sekaligus):
import { TabGroup } from "@/components/firefly-mdx";
:::tip
<TabGroup labels={["test.js", "test.py"]} client:load> ```js console.log(1) ```
```py print("hello world") ```</TabGroup>
:::- Array
labelsmendeklarasikan label untuk setiap blok kode, dengan urutan yang sesuai satu per satu - Komponen menggunakan
client:loaduntuk mengaktifkan peralihan label
Support & Share
If this article helped you, please share or support!














