Obsidian의 λ§Žμ€ μΈν„°νŽ˜μ΄μŠ€μ—μ„œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ „μ²΄μ—μ„œ λ°œμƒν•˜λŠ” 이벀트λ₯Ό ꡬ독할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ‚¬μš©μžκ°€ νŒŒμΌμ„ λ³€κ²½ν•  λ•Œμ™€ 같은 μ΄λ²€νŠΈμž…λ‹ˆλ‹€.

λ“±λ‘λœ λͺ¨λ“  이벀트 ν•Έλ“€λŸ¬λŠ” ν”ŒλŸ¬κ·ΈμΈμ΄ μ–Έλ‘œλ“œλ  λ•Œ λΆ„λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό 보μž₯ν•˜λŠ” κ°€μž₯ μ•ˆμ „ν•œ 방법은 registerEvent() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

import { Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    this.registerEvent(this.app.vault.on('create', () => {
      console.log('μƒˆ 파일이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€');
    }));
  }
}

타이밍 이벀트

μΌμ •ν•œ κ°„κ²©μœΌλ‘œ ν•¨μˆ˜λ₯Ό 반볡적으둜 ν˜ΈμΆœν•˜λ €λ©΄ registerInterval() λ©”μ„œλ“œμ™€ ν•¨κ»˜ window.setInterval() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.

λ‹€μŒ μ˜ˆμ œλŠ” μƒνƒœ ν‘œμ‹œμ€„μ— ν˜„μž¬ μ‹œκ°„μ„ 1μ΄ˆλ§ˆλ‹€ μ—…λ°μ΄νŠΈν•˜μ—¬ ν‘œμ‹œν•©λ‹ˆλ‹€:

import { moment, Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  statusBar: HTMLElement;
 
  async onload() {
    this.statusBar = this.addStatusBarItem();
 
    this.updateStatusBar();
 
    this.registerInterval(
      window.setInterval(() => this.updateStatusBar(), 1000)
    );
  }
 
  updateStatusBar() {
    this.statusBar.setText(moment().format('H:mm:ss'));
  }
}

λ‚ μ§œμ™€ μ‹œκ°„

MomentλŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€λ£¨λŠ” 인기 μžˆλŠ” JavaScript λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. Obsidian은 λ‚΄λΆ€μ μœΌλ‘œ Momentλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ λ³„λ„λ‘œ μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹  Obsidian APIμ—μ„œ κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€:

import { moment } from 'obsidian';