Аутентификация Firebase в основных процессах IP C и рендерерах - PullRequest
0 голосов
/ 20 января 2020

Я работал над приложением, которое использует Electron с NodeJS и jQuery, Bootstrap и Firebase. Я столкнулся со многими проблемами в разработке.

Первая проблема - это FirebaseUI, который работает в Electron, внедряя его в HTML (CDN Firebase), но не с зависимостями узлов.

Вторая проблема, с которой я столкнулся, это плохая производительность, когда основной процесс получает большой набор данных из Firestore; Я инициализировал firebase в Main process , проанализировал объект для процесса рендеринга и поместил onSnapshotListener в коллекцию, чтобы мои данные были синхронизированы c, что сильно повлияло на мою производительность (загрузка 30 с страницы).

mainWindow = new BrowserWindow({
    width: 1200,
    height: 1000,
    webPreferences: {
        webSecurity: true,
        nodeIntegration: true,
        nativeWindowOpen: true
    },
});
let details = {/*init info*/};
firebase.initializeApp(details);
global.firebase = firebase; //to access the firebase instance from the renderer process
mainWindow.loadFile('source/login/login.html'); //load login window
mainWindow.on('closed', function () {
    mainWindow = null;
});

Итак, я прибегнул к инициализации моего приложения в каждом процессе рендеринга (что хорошо работает с onSnapshotListener), но я всегда должен был аутентифицировать пользователя, когда пользователь изменяет страницу.

const firebase = require('firebase');
firebase.initializeApp(require('electron').remote.getGlobal('firebaseLoginDetails'));
const db = firebase.firestore();

Есть ли лучший способ решить проблемы с производительностью и аутентификацией?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...