Anonymous
Как узнать нормальное имя оси и архитектуру?
const os = require('os'); const osTypes = { android: 'Android', win32: 'Windows', darwin: 'macOS', freebsd: 'FreeBSD', openbsd: 'OpenBSD', aix: 'IBM AIX', sunos: 'Solaris', linux: 'Linux' }; function systemName() { return ${ osTypes[os.platform()] } ${ os.arch() } ${ os.release() }; } Правда это не выведет в привычном виде версию, для этого нужно еще некоторые усилия
neofetch
Как узнать нормальное имя оси и архитектуру?
https://github.com/bestiejs/platform.js/ если не жалко в проекте можешь юзнуть данную либу))0
neofetch
Даст все что надо или даже больше.
Andrew
Люди добрые, подскажите, 3ий день бьюсь, - как отловить событие закрытия окна по крестику? Мне надо, чтобы пользователь мог отменить закрытие, если забыл сохраниться. НИГДЕ нет описания адекватного решения! Я просто в шоке! ВО ВСЁМ ИНТЕРНЕТЕ НИ СЛОВА. При чём пишут же приложения с подобным функционалом! Пруд пруди! Но как, - ТАЙНА. За 7ю печатями! Здец... Помогите, плз...
Andrew
Не вывожу синхронность в данном случае.
Andrew
Т.е. "beforeunload"-то я могу поймать. Но по какой-то непонятной мне причине не существует способов адекватно синхронно проверить выполнение условия в Renderer перед закрытием. Либо асинхронно (тогда окно закрывается раньше, чем я успеваю проверить условие), либо в Main (но нужные данные хранятся у меня в Renderer, и что-то как-то нет желания писать пару мегабайтов костылей ради того, чтобы поместить копию всех параметров, от которых зависит сохранение в Main).
Andrew
Порядком сгорает задница, если честно, уже от этого разделения контекстов...
Anonymous
создай свое событие в main и отправляй его в Renderer и не закрывай окно до ответа с Renderer
Andrew
Ага. Ну и... 1. Как "создать" событие в Main а не в Renderer? 2. Как "остановить" событие "close" до ответа из Renderer?? 3. Как привязать созданное событие к кнопке закрытия приложения вместо стандартного???
Anonymous
https://electronjs.org/docs/api/ipc-main https://electronjs.org/docs/api/ipc-renderer
Andrew
Серьёзно?
Andrew
У кого-нибудь ещё есть варианты?
Anonymous
Ага. Ну и... 1. Как "создать" событие в Main а не в Renderer? 2. Как "остановить" событие "close" до ответа из Renderer?? 3. Как привязать созданное событие к кнопке закрытия приложения вместо стандартного???
// main process: win.on('close', e => { if (win) { e.preventDefault(); // some job win.webContents.send('app-close'); } }); ipcMain.on('closed', _ => { win = null; if (process.platform !== 'darwin') { app.quit(); } }); // renderer process: ipcRenderer.on('app-close', _ => { // some job ipcRenderer.send('closed'); });
Anonymous
один из вариантов
Andrew
Что-то такое приходило в голову... Но это же костыль! По сути нормально close так и не будет вызван!
Andrew
Короче есть подозрение, что Electron слишком тоталитарен, чтобы пытаться преодолеть разделение контекстов... Тогда другой вопрос: подскажите пожалуйста какой по-лучше фронтенд-фреймворк модульный. Потому что сейчас пытался кодить на Vue.js. Но раз весь бек-энд придётся переносить в Main, Vue, очевидно, будет излишен и нужно что-то по-проще (только для фронтенда) ему на замену...
Anonymous
> Короче есть подозрение, что Electron слишком тоталитарен Эмм, а как ты хотел еще, если тебе нужно взаимодействовать с двумя процессами? Никогда и нигде это то не было просто, но по-моему как раз в electron это сделано проще некуда. И для большинства сценариев такие перуэты не требуются Main process - это бэкенд, renderer process - это твой фронт. Соответственно единственное, что у них может быть общее и полиморфное - это бизнес логика. Vue, React, Angular, Vanilla HTML - это скорее то как ты будешь работать с View (DOM) моделью и этот выбор в идеале не должен быть привязан к бизнесс логике вообще (что от части выполнимо), поэтому это очень странный вопрос по крайней мере для меня. Если у тебя простенький SPA можно и без фреймфорков, но тогда ты лишаешь себя богатства экосистемы того или иного фреймворка/библиотеки.
Andrew
> Короче есть подозрение, что Electron слишком тоталитарен Эмм, а как ты хотел еще, если тебе нужно взаимодействовать с двумя процессами? Никогда и нигде это то не было просто, но по-моему как раз в electron это сделано проще некуда. И для большинства сценариев такие перуэты не требуются Main process - это бэкенд, renderer process - это твой фронт. Соответственно единственное, что у них может быть общее и полиморфное - это бизнес логика. Vue, React, Angular, Vanilla HTML - это скорее то как ты будешь работать с View (DOM) моделью и этот выбор в идеале не должен быть привязан к бизнесс логике вообще (что от части выполнимо), поэтому это очень странный вопрос по крайней мере для меня. Если у тебя простенький SPA можно и без фреймфорков, но тогда ты лишаешь себя богатства экосистемы того или иного фреймворка/библиотеки.
Я имел ввиду, что на кой мне VueRouter и Vuex если я собираюсь делать Router в Main и данные там же хранить. Или есть какой-то способ расположить эти модули в Main?
Anonymous
R e a c t
Ну наконец, а то помню времена были, как ты вьюировал
Завтра
Не, в электрон приложении однозначно реакт, имхо
Anonymous
Не, в электрон приложении однозначно реакт, имхо
На фронте везде однозначно рект и нахуй ваши гиперэпы и пректы
Завтра
А причем тут hyperapp и preact 🤔
Anonymous
А причем тут hyperapp и preact 🤔
Ты сказал в электрон приложении однозначно реакт, а я говорю даже если не электрон приложение, то тож рект
neofetch
а что если в электрон приложении vue?
Sergey
Просто это все боль
neofetch
Ну хз, у меня на соседнем курсе пацаны написали аппликуху на электроне используя ток вью и json))
Andrew
Просто это все боль
Разве? Мне вот заходит... Сравнивал с React?
Sergey
Разве? Мне вот заходит... Сравнивал с React?
Так вот в сравнении с реакт — боль
Andrew
Неужто!... Странно. Я именно от React оттолкнулся в сторону Vue. Второй почему-то больше понравился. М.б. чего-то не допонял... Надо ещё раз попробовать...
Завтра
Хз как объяснить Во вью очень некрасиво выглядит, когда пытаешься делать логику вне вью. Там любят все запихать в this и радоваться жизни, но если ты где-то начинаешь писать отдельно чистую логику, складывается впечатление, что ты что-то делаешь не так А взаимодействие с main-процессом это дополнительная такая логика
Завтра
а реакт это просто const Component = () => … а в остальныом делай че хочешь
Andrew
А со связкой Electron + Ember знаком кто? Как она?
Andrew
а реакт это просто const Component = () => … а в остальныом делай че хочешь
Да. Это и правда огонь... Видимо не доглядел. Буду пробовать заново.
Sergey
Устарел сильно
Anonymous
Ну хз, у меня на соседнем курсе пацаны написали аппликуху на электроне используя ток вью и json))
Кслючевое здесь: 1. Написали студенты 2. использовали JSON =) С таким же успехом они могли написать на jQuery используя блокнот и JSON. Результат был бы таким же вполне успешным)
Завтра
Даже в официальном бойлерплейте electron-vue какие-то миксины/плагины воткнуты И все опять как-то монструозно выглядит
Andrew
Устарел сильно
Понял. А могу я в React разнести backend и frontend в разные контексты (в Main и в Renderer соответственно)?
Завтра
вот нахера бля
Sergey
Это библиотека для View
Завтра
не ребят, это еще ладно (нет), щас еще один мемас скину
Andrew
Как реакт связан с бэкенд?
Отставить, абздался. =) Я думал он в этом плане как Vue.
Завтра
https://medium.com/vuejoy/localstorage-with-vue-localstorage-1dca4804c2b5 Палите мемас
Завтра
я чуть не обоссался со смеху, когда увидел
Anonymous
вот нахера бля
Я такое через webpack.ProvidePlugin легко могу сделать) Будет даже проще, не нужно будет писать this.$electron
Andrew
https://medium.com/vuejoy/localstorage-with-vue-localstorage-1dca4804c2b5 Палите мемас
Ой, да. С этой херью долго трахался в своё время..
Завтра
ЭТО ПРОСТО ПИЗДЕЕЕЕЦ
Завтра
https://www.youtube.com/watch?v=uPEEq0J1kIE
Andrew
ЭТО ПРОСТО ПИЗДЕЕЕЕЦ
Самое дно начинается знаете когда? Когда начинаешь с ajax-запросами колупаться. В этот момент выясняется, что все ссылки, которые vue даёт на внутренние объекты в контексте callback'a НЕ СУЩЕСТВУЮТ.
Anonymous
Вместо того чтоб учить жс учим обертку над жсом и самое главное хуй знает зачем
Завтра
Говно вопрос
Завтра
официальная дока бтв
Sergey
context bind нужно делать. Вообще это везде так
Все потому что this — идиотская концепция
Sergey
Максимально тупо
Andrew
Говно вопрос
Я тоже так думал. Не работает. Либо я что-то не правильно с Axios делал...
Anonymous
Максимально тупо
В яндексе есть где-то в проде вуй?
Завтра
ахахахааххаахахх
Andrew
В яндексе есть где-то в проде вуй?
Да, есть. Недавно собеседовался. Но там всё-таки больше React уважают.
Завтра
Максимально тупо
olleH где фронтенд
Sergey
Нет
Когда приходил, не было ещё
Anonymous
olleH где фронтенд
Хватит уже мне становится плохо
Завтра
Вот из-за таких примеров на вью присела куча долбаебов нулевых, которые суют localStorage в this итд
Sergey
olleH где фронтенд
Какой пиздец
Andrew
Когда приходил, не было ещё
Ну типа из вакансий 30-40 в 1-2 местах где-то встретил.
Завтра
А в чатике по вью по кд вопросы за vuex, типа что делать с общими данными и нахуя он нужен вообще
Anonymous
А в чатике по вью по кд вопросы за vuex, типа что делать с общими данными и нахуя он нужен вообще
Я как-то видел, что челик говорил зачем вьюекс если можно в локалсторейдж
Завтра
Хотя бля, в реакт чате такая же дичь на самом деле, но там за обертки над редаксом
Завтра
Я как-то видел, что челик говорил зачем вьюекс если можно в локалсторейдж
Ну это походу тот самый челик, что и пост на медиум написал)))