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
Даст все что надо или даже больше.
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
один из вариантов
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
Ну наконец, а то помню времена были, как ты вьюировал
Завтра
Не, в электрон приложении однозначно реакт, имхо
Завтра
А причем тут hyperapp и preact 🤔
neofetch
а что если в электрон приложении vue?
Sergey
Sergey
Просто это все боль
neofetch
Ну хз, у меня на соседнем курсе пацаны написали аппликуху на электроне используя ток вью и json))
Anonymous
Andrew
Sergey
Andrew
Неужто!... Странно. Я именно от React оттолкнулся в сторону Vue. Второй почему-то больше понравился. М.б. чего-то не допонял... Надо ещё раз попробовать...
Завтра
Хз как объяснить
Во вью очень некрасиво выглядит, когда пытаешься делать логику вне вью. Там любят все запихать в this и радоваться жизни, но если ты где-то начинаешь писать отдельно чистую логику, складывается впечатление, что ты что-то делаешь не так
А взаимодействие с main-процессом это дополнительная такая логика
Завтра
а реакт это просто const Component = () => … а в остальныом делай че хочешь
Andrew
А со связкой Electron + Ember знаком кто? Как она?
Andrew
Sergey
Sergey
Устарел сильно
Завтра
Даже в официальном бойлерплейте electron-vue какие-то миксины/плагины воткнуты
И все опять как-то монструозно выглядит
Andrew
Устарел сильно
Понял. А могу я в React разнести backend и frontend в разные контексты (в Main и в Renderer соответственно)?
Завтра
Sergey
Sergey
Это библиотека для View
Завтра
не ребят, это еще ладно (нет), щас еще один мемас скину
Завтра
https://medium.com/vuejoy/localstorage-with-vue-localstorage-1dca4804c2b5
Палите мемас
Завтра
я чуть не обоссался со смеху, когда увидел
Sergey
Anonymous
Я такое через webpack.ProvidePlugin легко могу сделать) Будет даже проще, не нужно будет писать this.$electron
Andrew
Завтра
Sergey
Завтра
https://www.youtube.com/watch?v=uPEEq0J1kIE
Andrew
Самое дно начинается знаете когда? Когда начинаешь с ajax-запросами колупаться. В этот момент выясняется, что все ссылки, которые vue даёт на внутренние объекты в контексте callback'a НЕ СУЩЕСТВУЮТ.
Anonymous
Вместо того чтоб учить жс учим обертку над жсом и самое главное хуй знает зачем
Завтра
Anonymous
Завтра
Завтра
официальная дока бтв
Sergey
Sergey
Sergey
Максимально тупо
Andrew
Я тоже так думал. Не работает. Либо я что-то не правильно с Axios делал...
Завтра
ахахахааххаахахх
Sergey
Sergey
Sergey
Нет
Когда приходил, не было ещё
Anonymous
Хватит уже мне становится плохо
Завтра
Вот из-за таких примеров на вью присела куча долбаебов нулевых, которые суют localStorage в this итд
Sergey
Завтра
А в чатике по вью по кд вопросы за vuex, типа что делать с общими данными и нахуя он нужен вообще
Anonymous
Завтра
Хотя бля, в реакт чате такая же дичь на самом деле, но там за обертки над редаксом
Завтра