# 编写Electron程序 [TOC] ## 主进程 我们可以理解`package.json`中定义的入口文件就是主进程,那一般一个程序只有一个主进程,而我们可以利用一个主进程,打开多个子窗口. ### Electron的运行流程 * 1.读取package.json的中的入口文件,这里我们是main.js * 2.main.js 主进程中创建渲染进程 * 3.读取应用页面的布局和样式 * 4.使用IPC在主进程执行任务并获取信息 ## 渲染进程 一个主进程可以控制多个渲染进程,可以把main.js看成主进程,我们写的html部分看成渲染进程 ![](https://img.kancloud.cn/a6/26/a6269f49b6779e5fb82acc53624d6d30_750x500.png) 创建renderer文件夹,新建renderer.js ~~~ //使用node下的fs模块 var fs = require('fs'); window.onload = function () { var btn = this.document.querySelector('#btn') var mybaby = this.document.querySelector('#content') btn.onclick = function () { fs.readFile('hello.txt', (err, data) => { mybaby.innerHTML = data }) } } ~~~ 修改index.html ~~~ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello World!</title> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" /> </head> <body style="background: white;"> <h1>Hello World!</h1> <p> We are using node <script>document.write(process.versions.node)</script>, Chrome <script>document.write(process.versions.chrome)</script>, and Electron <script>document.write(process.versions.electron)</script>. </p> <Button id="btn">Hello</Button> <div id="content"></div> <script src="renderer/renderer.js"></script> </body> </html> ~~~ 选择View下Reload重新加载 ![](https://img.kancloud.cn/fb/fe/fbfe4d75cc8d07e6e3948ebe6cdfcde2_786x592.png)