Приложение Angular + Electron: запрос веб-API или базы данных в соответствии с рабочим столом или веб-режимом - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы создать приложение, используя Angular + Electron. Мое приложение должно работать как на настольном ПК, так и на браузере. Я собираюсь использовать стартовый комплект angular-electronic (но я открыт для других возможностей).

Что касается меня, так это способ чтения и записи данных. Данные должны храниться в базе данных MySQL. В идеале я хотел бы:

  • заставляет приложение вызывать API, когда НЕ работает на Electron (режим браузера)
  • сделать запрос приложения напрямую к базе данных mysql при работе в Electron (режим рабочего стола)

Я знаю, что могу проверить window && window.process && window.process.type, чтобы приложение понимало, работает на Electron или нет, однако меня немного беспокоит, как с этим справиться. Также потому, что мне, вероятно, нужно импортировать пакеты узлов, такие как mysqljs , но ТОЛЬКО в режиме рабочего стола.

1 Ответ

0 голосов
/ 09 января 2019

Вы можете просто передать различные файлы среды в Angular во время сборки, это позволит вам контролировать переменные среды, чтобы вы могли сказать, что это сборка веб-приложения или сборка электронного приложения.

https://angular.io/guide/build

EXTRA

Но если вы импортируете бинарные пакеты, то тут все становится сложнее. Я не думаю, что есть чистый способ сделать условный импорт. Мне не удалось найти способ сделать это чисто и поддерживать другой репозиторий для всех моих служб, которые должны импортировать двоичные файлы.

Чтобы импортировать двоичные файлы, вам также необходимо отредактировать некоторые настройки веб-пакета, чтобы указать angular не компилировать / включать двоичные файлы во время процесса сборки, чтобы вы могли использовать свои библиотеки, такие как mysqljs, для которых требуются двоичные файлы. Есть также некоторые настройки на электронном конце, чтобы сделать двоичные файлы совместимыми для разных платформ, например Windows, Mac, Linux. По сути это действительно боль, чтобы сделать это.

Ссылка на редактирование настроек webpack для угловых 7 +

https://github.com/manfredsteyer/ngx-build-plus

Я полностью предложу вам не делать этого, если у вас нет действительно веской причины, по которой вам нужно использовать эти библиотеки.

РЕДАКТИРОВАТЬ 10/1/19

Хорошо, я имел в виду MySqlJs, но, похоже, у него нет собственных модулей модулей. Нативные / двоичные модули в основном означают код javascript, который опирается на скомпилированные двоичные файлы c ++ (или любой родной язык, такой как rust ...).

В моем случае я использовал модули grpc, которые имеют встроенную зависимость. В итоге пришлось переключиться на grpc-web.

Я добавлю сюда несколько сносок, если они вам понадобятся

https://electronjs.org/docs/tutorial/using-native-node-modules

Node.js / npm - в любом случае, чтобы узнать, является ли пакет чистым JS или нет?

...