# 第20章.API简介
> 如何使用 Node.js 和 Electron APIs。
所有 [Node.js 的内建模块](https://nodejs.org/api/) 都可以在 Electron 中使用,第三方 node 模块同样可以完全支持(包括 [原生模块](../tutorial/using-native-node-modules.md))。
Electron 还提供了一些额外的内建模块用于开发原生桌面应用。一些模块只能在主进程中使用,一些只能在渲染进程(web 页面)中使用,还有一些在两种进程中都可以使用。
基本的原则是:如果一个模块是 [GUI][gui] 或者底层系统相关的,那么它只能用在主进程中。你需要熟悉 [主进程 vs. 渲染进程](../tutorial/quick-start.md#main-process) 脚本的概念来使用这些模块。
主进程脚本就像一般的 Node.js 脚本:
```javascript
const {app, BrowserWindow} = require('electron')
let win = null
app.on('ready', () => {
win = new BrowserWindow({width: 800, height: 600})
win.loadURL('https://github.com')
})
```
渲染进程和一般的 web 页面没有什么区别,除了额外使用 node 模块的能力之外:
```html
<!DOCTYPE html>
<html>
<body>
<script>
const {app} = require('electron').remote
console.log(app.getVersion())
</script>
</body>
</html>
```
要运行你的 应用,阅读 [Run your app](../tutorial/quick-start.md#run-your-app)。
## 解构赋值
从 0.37 起,你可以使用 [解构赋值][destructuring-assignment] 以更容易的使用内建模块。
```javascript
const {app, BrowserWindow} = require('electron')
let win
app.on('ready', () => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})
```
如果你需要整个 `electron` 模块,可以 require 它,然后使用结构从 `electron` 中访问单独的模块。
```javascript
const electron = require('electron')
const {app, BrowserWindow} = electron
let win
app.on('ready', () => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})
```
这和下面的代码是等效的:
```javascript
const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
let win
app.on('ready', () => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})
```
* [gui]: https://en.wikipedia.org/wiki/Graphical_user_interface
* [destructuring-assignment]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
- 索引
- 前言.关于Electron
- 第一部分 开发指南
- 第1章.平台支持
- 第2章.安全、原生功能和你的责任
- 第3章.版本说明
- 第4章.发行应用
- 第5章.Mac App商店提交指南
- 第6章.Windows商店指南
- 第7章.应用打包
- 第8章.使用Node原生模块
- 第9章.调试主进程
- 9.1.在VSCode中调试
- 9.2.在node-inspector中调试
- 第10章.使用Selenium和WebDriver
- 第11章.DevTools扩展
- 第12章.使用Pepper Flash插件
- 第13章.使用Widevine CDM插件
- 第14章.通过自动化持续集成系统进行测试
- 第15章.离屏渲染
- 第二部分 使用教程
- 第16章.快速入门
- 第17章.桌面环境集成
- 第18章.在线/离线事件探测
- 第19章.应答式编译器(REPL)
- 第三部分 API参考
- 第20章.API简介
- 第21章.进程对象
- 第22章.Chrome的命令行开关
- 第23章.环境变量
- 第24章.定制的DOM元素
- 24.1.File 对象
- 24.2.webview 标签
- 第25章.主进程模块
- 25.1.app
- 25.2.BrowserWindow
- 25.3.无框架窗口
- 第26章.渲染进程模块
- 第27章.两种进程可用的模块
- 第四部分 高级主题
- 附 FAQ
- 附 文档规范
- 附 示例用例
- 1.无边框窗口