建立專案
建立專案。
1 2
| npm create vite@latest highlight-js-example -- --template vanilla cd highlight-js-example
|
安裝套件。
1
| npm install highlight.js
|
修改 index.html
檔,引入主題樣式。
1
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.css">
|
修改 main.js
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import hljs from 'highlight.js/lib/core';
import javascript from 'highlight.js/lib/languages/javascript';
import './style.css'
hljs.registerLanguage('javascript', javascript);
const code = `function greet() { console.log("Hello, World!"); }`;
document.querySelector('#app').innerHTML = `<pre style="text-align: left;"> <code>${code}</code> </pre>`;
hljs.highlightAll();
|
啟動本地伺服器。
前往 http://localhost:5173/ 瀏覽。
切換主題
安裝依賴套件。
將 style.css
重新命名為 style.scss
檔。
新增 highlight.scss
檔。
1 2 3 4 5 6 7 8 9
| @use "sass:meta";
html[data-theme="light"] { @include meta.load-css("highlight.js/styles/atom-one-light.min.css"); }
html[data-theme="dark"] { @include meta.load-css("highlight.js/styles/atom-one-dark.min.css"); }
|
修改 main.js
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import hljs from 'highlight.js/lib/core'; import javascript from 'highlight.js/lib/languages/javascript'; import './style.scss' import './highlight.scss'
hljs.registerLanguage('javascript', javascript);
const code = `function greet() { console.log("Hello, World!"); }`;
document.querySelector('#app').innerHTML = `<pre style="text-align: left;"> <code>${code}</code> </pre>
<button id="theme-switch">Switch to Light Theme</button> `;
hljs.highlightAll();
const themeSwitch = document.querySelector('#theme-switch'); themeSwitch.addEventListener('click', () => { const html = document.querySelector('html'); html.setAttribute('data-theme', html.getAttribute('data-theme') === 'light' ? 'dark' : 'light'); themeSwitch.textContent = html.getAttribute('data-theme') === 'light' ? 'Switch to Dark Theme' : 'Switch to Light Theme'; });
|
程式碼
參考資料