# 第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.無邊框窗口