#javascript #class #electron
#javascript #класс #electron
Вопрос:
Я разрабатываю приложение с помощью Electron, но у меня возникла проблема с обменом переменной между несколькими файлами.
В моем main.js Я создаю базу данных RxDB, которая используется для всего моего проекта. На этом уровне я также создаю обработчики, позволяющие осуществлять связь между основным процессом и процессом рендеринга через IPC. Эти обработчики вызывают различные классы, которые выполняют различные процессы, включая вставки в базу данных, модификации и т.д.
На мой взгляд, я не нашел эффективного способа передать мою переменную, содержащую мою базу данных, в мои классы.
В идеале я должен иметь возможность вызывать эту переменную базы данных (объявленную в main.js
) в любое время из любого класса. Я не могу использовать систему IPC, потому что моя возвращаемая переменная должна быть не JSON, а абсолютно объектом RxDatabase.
Вот очень упрощенная схема моего основного процесса:
В настоящее время, чтобы поделиться переменной базы данных с моими классами:
- Я объявляю переменную в
main.js
- Я передаю переменную в обработчики
- Я передаю переменную своим классам в классе статических переменных
Несмотря на уродство, эта система работает. Но я думаю, что есть более правильный способ сделать это. Кроме того, становится трудно сохранить эту переменную, когда класс вызывает один или несколько экземпляров внешних классов.
Спасибо.
Комментарии:
1. Вы пробовали просто использовать
module.export
, а затем импортировать его в другие классы?2. Это было так просто, спасибо, Люк! Я уже пробовал этот метод, но когда я попытался это сделать
export {database}
, у меня возникла ошибка экспорта неиспользованного токена . Итак, я предполагал, что для меня будет невозможно экспортировать переменную из main.js по некоторым неясным причинам, специфичным для Electron. На самом деле, мне просто пришлось использовать синтаксис ES5, таким образомexports.database = database
. Затем я могу вызвать любой файлimport { database } from 'main'
, и это работает отлично. Большое спасибо!.
Ответ №1:
Вы можете использовать exports.variable = variable
а затем import { variable } from 'file'
в другом файле.
Комментарии:
1. Это спасает мне жизнь, спасибо, Люк!
Ответ №2:
Достаточно простого экспорта / импорта.
Ранее я пытался экспортировать свою переменную из main.js но когда я попытался использовать export {database}
, у меня был Unexpeted token export error
.Итак, я предполагал, что для меня будет невозможно экспортировать переменную из main.js по некоторым неясным причинам, специфичным для Electron.
На самом деле, вам просто нужно использовать синтаксис ES5, таким образом, exports.database = database
в main.js. Затем вы можете импортировать эту переменную в любой файл вашего основного процесса.
Спасибо @Luke за его ответ.