Skip to content

Latest commit

ย 

History

History
42 lines (34 loc) ยท 1.82 KB

File metadata and controls

42 lines (34 loc) ยท 1.82 KB

์ผ๋ ‰ํŠธ๋ก  ๊ตฌ์กฐ ํŒŒ์•…

์˜์‹์˜ ํ๋ฆ„๋Œ€๋กœ ์ผ๋‹จ ์ •๋ฆฌ

๊ฐ€์žฅ ๊ถ๊ธˆํ–ˆ๋˜ ์ ์€ main process์™€ renderer process์— electron ๋ชจ๋“ˆ์ด ์ฃผ์ž…๋˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์—ฐ๊ตฌ

  • electron์—์„œ๋Š” 2014๋…„๋ถ€ํ„ฐ gin์ด๋ผ๊ณ  ํ•˜๋Š” chromium์—์„œ ์‚ฌ์šฉ๋˜๋Š” v8 <-> C++๋ฅผ ์—ฐ๋™ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์Œ
    • electron_api_browser_window.cc:539์—์„œ๋Š” export ๊ฐ์ฒด์— BrowserWindowํด๋ž˜์Šค๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์žˆ์Œ
  • electron_api_(feature).{cc,h}์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  • third_party/electron_node/... -> Node.js ํ”„๋กœ์ ํŠธ (.gclient_entries ํ™•์ธ)
  • ๊ฐ electron API์˜ Intialize ์‹œ๊ทธ๋‹ˆ์ณ์— ๋Œ€ํ•œ ์ •๋ณด: https://nodejs.org/api/addons.html#addons_context_aware_addons

ํด๋”๋ณ„

Windows ๊ธฐ์ค€์œผ๋กœ ๋ณด๋Š” ์ •๋ฆฌ ์ค‘

  • shell/app/browser/*
    • app, BrowserWindow, WebContents
  • shell/app/render/*
    • ipcRenderer

์ฐธ๊ณ  URL

๋ด์•ผํ•  ํŒŒ์ผ๋“ค

  • module_system.cc

    • ModuleSystem::AddRoutes
      • require, loadScript ์ฐธ๊ณ 
  • builtins-api.cc ~> electron ๋ชจ๋“ˆ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ํ˜ธ์ถœ๋จ

  • third_party/electron_node/src/node.cc

    • StartExecution
      • (lib/)internal/main/run_amin_module.js
  • third_party/electron_node/src/api/environment.cc

    • LoadEnvironment
  • third_party/electron_node/src/node_main_instance.cc

  • shell/browser/api/electron_api_event_emitter.cc

    • SetEventEmitterPrototype
      • EventEmitter๋ฅผ ์ฃผ์ž…๋ฐ›๋Š” ๋ฐฉ์‹?
      • native require์—์„œ๋Š” internal ๋ชจ๋“ˆ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
      • require('module').createRequire()๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•ด์•ผํ•œ๋‹ค.
    • shell/browser/event_emitter_mixin.cc