fixed errors in text
This commit is contained in:
parent
ccaf837da4
commit
538a4f61ee
1 changed files with 16 additions and 15 deletions
|
@ -1,7 +1,7 @@
|
|||
# Упаковка приложения
|
||||
|
||||
Чтобы смягчить [проблемы](https://github.com/joyent/node/issues/6960) с длинными
|
||||
именами под Windows, немного ускорить `require` и скрыть ваши исходные коды, вы
|
||||
именами под Windows, немного ускорить `require` и скрыть ваши исходные коды, Вы
|
||||
можете упаковать его в архив [asar][asar], немного поменяв исходный код.
|
||||
|
||||
## Генерация архива `asar`
|
||||
|
@ -25,16 +25,16 @@ $ asar pack your-app app.asar
|
|||
|
||||
## Использование архивов `asar`
|
||||
|
||||
В Electron есть два вида API: API Node, которые устанавливаются с помощью Node.Js и
|
||||
В Electron есть два вида API: API Node, которые устанавливаются с помощью Node.JS и
|
||||
веб API, которые предоставляюся Chromium. Оба предоставляют возможность считывать из
|
||||
архивов `asar`.
|
||||
|
||||
### Node API
|
||||
|
||||
С специальными патчами в Electron, части Node API вроде `fs.readFile` и `require`
|
||||
Со специальными патчами в Electron, части Node API вроде `fs.readFile` и `require`
|
||||
считают архивы `asar` виртуальными папками и файлы в них доступны как в обычных.
|
||||
|
||||
Например, у нас есть арихив `example.asar` в `/path/to`:
|
||||
Например, у нас есть архив `example.asar` в `/path/to`:
|
||||
|
||||
```bash
|
||||
$ asar list /path/to/example.asar
|
||||
|
@ -60,13 +60,13 @@ const fs = require('fs');
|
|||
fs.readdirSync('/path/to/example.asar');
|
||||
```
|
||||
|
||||
Ичпользуем модуль из архива:
|
||||
Используем модуль из архива:
|
||||
|
||||
```javascript
|
||||
require('/path/to/example.asar/dir/module.js');
|
||||
```
|
||||
|
||||
Вы также можете показывать веб страницы из архива `asar` через `BrowserWindow`:
|
||||
Вы также можете показывать веб-страницы из архива `asar` через `BrowserWindow`:
|
||||
|
||||
```javascript
|
||||
const BrowserWindow = require('electron').BrowserWindow;
|
||||
|
@ -76,7 +76,7 @@ win.loadURL('file:///path/to/example.asar/static/index.html');
|
|||
|
||||
### Веб API
|
||||
|
||||
На веб страницах файлы запрашиваются с помощью протокола `file:`. Как и в Node API
|
||||
На веб-страницах файлы запрашиваются с помощью протокола `file:`. Как и в Node API
|
||||
архивы `asar` считаются за директории.
|
||||
|
||||
Пример получения файла с помощью `$.get`:
|
||||
|
@ -93,7 +93,7 @@ $.get('file:///path/to/example.asar/file.txt', function(data) {
|
|||
|
||||
### Использование архива `asar` в качестве обычного файла
|
||||
|
||||
Для случаев, когда вам, например, нужно проверить хэш-сумму архива `asar`,
|
||||
Для случаев, когда Вам, например, нужно проверить хэш-сумму архива `asar`,
|
||||
нужно использовать архив как файл. Для этой цели существует встроенный модуль
|
||||
`original-fs`, который предоставляет доступ к `fs` без поддежки `asar`:
|
||||
|
||||
|
@ -101,6 +101,7 @@ $.get('file:///path/to/example.asar/file.txt', function(data) {
|
|||
var originalFs = require('original-fs');
|
||||
originalFs.readFileSync('/path/to/example.asar');
|
||||
```
|
||||
|
||||
Вы также можете выставить `process.noAsar` в `true`, чтобы выключить поддержку `asar`
|
||||
в модуле `fs`:
|
||||
|
||||
|
@ -112,7 +113,7 @@ fs.readFileSync('/path/to/example.asar');
|
|||
## Ограничения Node API
|
||||
|
||||
Хотя мы и старались как могли, чтобы сделать `asar` максимально похожим на папки,
|
||||
всё ещё существуют некоторые ограничения из-за низкоуровневой натуры Node API.
|
||||
всё ещё существуют некоторые ограничения из-за низкоуровневой архитектуры Node API.
|
||||
|
||||
### Архивы только для чтения
|
||||
|
||||
|
@ -121,8 +122,8 @@ fs.readFileSync('/path/to/example.asar');
|
|||
|
||||
### Нельзя установить рабочую директорию в архиве
|
||||
|
||||
Хотя архивы `asar` и считаются папками, они ими на самом деле не являются,
|
||||
так что вы не можете установить в них рабочую директорию. Передача
|
||||
Хотя архивы `asar` и считаются папками, они ими на самом деле не являются ими,
|
||||
так что Вы не можете установить в них рабочую директорию. Передача
|
||||
архивов `asar` в качестве аргумента `cwd` некоторым API также может вызывать ошибки.
|
||||
|
||||
|
||||
|
@ -154,18 +155,18 @@ API которым нужна распаковка:
|
|||
`child_process.spawn` и `child_process.execFile`, но только `execFile` может
|
||||
исполнять файлы из архивов `asar`.
|
||||
|
||||
Так вышло потому, что `exec` и `spawn` принимают `команду` а не `файл` как параметр,
|
||||
Так вышло потому, что `exec` и `spawn` принимают `команду`, а не `файл` как параметр,
|
||||
а `команды` исполняются в оболочке. Нет никакой реальной возможности проверить,
|
||||
реален ли файл или находится в архиве `asar`, и даже если мы смогли бы проверить,
|
||||
то неясно, как земенить путь к файлу без побочных эффектов.
|
||||
|
||||
## Добавление распакованых файлов в архив `asar`
|
||||
|
||||
Как говорилось выше, некоторые API Node будут распаковывать файлв,
|
||||
Как говорилось выше, некоторые API Node будут распаковывать файлы,
|
||||
чтобы их использовать. Кроме увеличенного потребления ресурсов это также
|
||||
может вызвать предупрждения от антивирусов.
|
||||
может вызвать предупреждения от антивирусов.
|
||||
|
||||
Чтобы обойти это, вы можете распаковать некоторые файлы, создавая архивы,
|
||||
Чтобы обойти это, Вы можете распаковать некоторые файлы, создавая архивы,
|
||||
с помощью опции `--unpack`. Пример показывает распаковку нативных модулей:
|
||||
|
||||
```bash
|
||||
|
|
Loading…
Reference in a new issue