Electron.js releases
v4.1.3
https://github.com/electron/electron/releases/tag/v4.1.3
v4.1.3
Anton
Парни, всем привет. Такой вопрос, кто-нибудь писал нативные модули под электрон, по аналогии с node.js модулями. какие отличия в нодах, обычной и ту которую использует electron. пишу приложение с асинхронными вызовами функций js из нативного модуля. с обычной нодой всё норм, а в электроне падает, с неожиданными либами.
Anton
для модулей я использую napi
Vadim
Немного отличий, нужно пересобирать модули, к примеру, electron-builder install app deps или electron-builder
Vadim
倫太郎
@Atassis
Завтра
Гайс, возможно ли сделать такую функциональность плавной в электроне?
Типа зажимаешь блок и перетаскиваешь отдельным окном
Технически я представляю, как это сделать, но вот не уверен, будет ли это работать нормально
Sergey
Sergey
или тебе нужно разделить на два окна перетаскиванием блока наружу?
Завтра
https://www.useloom.com/share/82accce4914e43f4a7bee24b04faf351
Вот так надо крч
Завтра
Я думаю сделать так
1) Создавать скрытое окно с таким блоком
2) При зажимании блока в основном окне скрывать блок и показывать скрытое окно
3) Ну и наоборот соответственно
Andrew
Подскажите пожалуйста, если у меня есть приложение, я использую vuejs, и у меня есть необходимость сделать запрос к стороннему сайту, как мне лучше поступить, сделать просто отдельный сервис и с помощью vue сделать этот запрос, или как-то из vue обраться в main.js и уже оттуда сделать запрос и вернуть обратно vue?
Завтра
Без разницы
Лично я всю подобную бизнес-логику держу в main-процессе, чтобы не зависеть от окон
Andrew
Завтра
Сори, не опен-сорс 💁🏻♂️
Andrew
Request как-нибудь может возвращать данные в функцию которая ее вызвала?
const { net } = require('electron')
const request = net.request('https://github.com')
request.on('response', (response) => {
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
})
Завтра
Даже автор request уже сказал, что он устарел, почему не заюзать тот же node-fetch?
Завтра
Никто не обязывает это делать 💁♂
Andrew
ну это понятно, я думал что это все более как-то оптимизированно, по сравнению с другими
Victor
Victor
и да, это ж не тот реквест что из нпм, а хромовский
Andrew
Victor
ну создай промис и резолви его на событие 'end '
Завтра
Хм, а подвисший main-процесс фризит окно что ли?
Выходит, вынос тяжелой логики из рендерера не имеет смысла?
Alex
Ну этож жс
Alex
Мб есть смысл еще один процесс создать)
Victor
А что за тяжелая логика? мб можно разбить на части по 16мс?
Завтра
Точнее не так, я бы мог спокойно разбить ядро приложения на процессы, если бы его частям не требовался весь стейт приложухи 💁🏻♂️
Завтра
Alex
А у тебя просто одна функция виснет?
Alex
Я конечно могу ошибатся, но мультипоток(асинк) в ноде как раз построен на доп. Процессах
Oleksii
У ноды нет мультипотока
Oleksii
Она в одном потоке работает
Завтра
Я уже нашел, что грузит. А асинхронщина все равно в одном потоке гоняется, да - это первое, что я пытался как-то оптимизировать)
Oleksii
А из за чего виснет? Ожидание результата или циклические вычисления?
Завтра
У меня в приложении есть цепочки команд, в параметрах которых можно юзать JS-выражения
Собственно, они евалятся и евал, как оказалось, операция тяжелая - а триггерилось 40 цепочек * 9 действий * 5 параметров в каждом = 1800 евалов подряд 💁🏻♂️
Oleksii
Ой-ой-ой, да у нас тут извращенец)
Oleksii
Почему используется именно такая структура?
Завтра
Oleksii
Выполнение скриптов?
Oleksii
Для бота
Завтра
Типа того, только там не бот, а более глобальная история
Oleksii
Скажу как делал с ботами, мб здесь сойдёт, делал функционал модулями, которые загружались все в определенный момент и в них уже вызывались методы
Завтра
Типа того, только там не бот, а более глобальная история
Это тул для стримеров, основная идея - есть простейшие действия, которые можно объединять в цепочки и вызывать в один клик, либо по какому-либо событию. Там не только чат, еще работа с OBS, с самим стримом + Discord и Twitter
Oleksii
Тоесть нужен новый функционал, дописал модуль и все
Oleksii
В отдельный файл
Завтра
Завтра
Не понимаю, как это относится к проблеме)
Oleksii
Можно не хранить код и евалить, а делать что то типа
App.getPlugin(pluginName).call(methodName, argArray)
Oleksii
И в цепочке хранить название модуля, метода и аргументы
Завтра
Эм, я не евалю вызовы
Oleksii
Тогда я не так понял, простите
Завтра
Oleksii
А зачем это эвалить?
Завтра
У меня, конечно, есть мысль не евалить, а просто строки заменять, но это на данный момент сильное техническое ограничение
Завтра
Евалится это, чтобы можно было
${message.split(' ').slice(1).join(' ')}
делать, например
Oleksii
Я делал так
'Привет, {{nickname}}'
Потом регуляркой перебирал все такие вставки, внутри вставки стоит название переменной из которой достать значение, и вставлял значение
Завтра
Ну это и есть техническое ограничение, о котором я говорю
Oleksii
Какое?
Завтра
Oleksii
Есть функция которая получает строку и объект props, в объекте все необходимые для форматирования переменные, и возвращает отредактированную строку
Oleksii
А дальше уже режьте ее как хотите
Завтра
Проехали, в общем
Andrew
а как лучше всего хранить настройки всякие, чтобы они при перезапуске не сбрасывались?
Завтра
https://github.com/sindresorhus/electron-store
D
привет, не подскажите как запроксировать свои запросы в рендерере на localhost на другой адрес? пробовал через session.setProxy но что-то не зайшло
Evgeny
Добрый день! Сталкивался кто-нибудь с подобным? Переодически крашется рендер в черный экран. Бывает работает по несколько дней-недель без перерыва, а бывает раз в день-два. https://github.com/electron/electron/issues/15703
Evgeny
Victor
Evgeny
Evgeny
читал про это
Victor
ну тогда хз, и поменять карту нельзя?
Evgeny
нет
Evgeny
еще вчера нкопал такой косяк: после воспроизведения моно аудио, стерео не воспроизводится, и наооборот тоже, после воспроизведения моно, не воспроизводится стерео
Evgeny
это у меня типа киоска электронного
Anton
Доброй ночи. Ребят, кто-нибудь использует electron-builder. Интересует подпись приложения под MacOS. Добавил сертификаты, при подписи вылетает ошибка.
Anton
Как я понимаю, он не может подписать все файлы приложения. Но как с этим бороться)
Vadim
Ты сделал два сертификата затем сжал их в один?