Electron JS Заголовок программы | Безрамочное окно
HTML-код
- Опубликовано: 22 янв 2021
- В этом видео мы разберем установку заголовка разными способами в Electron, а так же посмотрим как создавать безрамочные окна и работать с основным процессом из рендер-процесса.
⚠️Помощь проекту⚠️:
money.yandex.ru/to/4100170578...
www.donationalerts.ru/r/131_fe...
⚠️Соцсети⚠️
vk.com: https: cyberhaus
Telegramm: t.me/cyberhaus
Twitter: / arhfedos
Огромное спасибо! Как раз искал урок по своему декорированию рамки окна.
Спасибо за урок, пожалуйста не закидывай этот курс по electron js. Сейчас возможно ни кто не смотрит но позже люди начнут смотреть и подписываться. В юутбе мало уроков по electron js сделай его полностью и качественно. Ребят давайте поддержим автора лайком подпиской и коментарем. СyberHaus тебе желаю здоровье и терпения!!! Спасибо за урок!!!
Спасибо за развернутый комментарий и пожелания, такие комментарии очень вдохновляют на создание новых видео. Я рад что мои видео полезны. Обязательно доведу курс по ElectronJS до конца, в данный момент уже готовится следующее видео и в ближайшие дни я его выложу. Буду стараться не затягивать с новыми видео.
@@CyHaus давай, я специально для этого подписался
@@ivanvana завтра будет новое видео
Спасибо за уроки по Electron!))) Продолжай пожалуйста снимать ролики про него) Очень интересно и доступно все рассказываешь)))
Спасибо за обучалку, на ютубе мало видео по електрону. Даже на данный момент
спасибо, очень хорошо и подробно все разъяснено
Круто, молодец
круто, делай еще уроки!!)
Очень хорошо
Видно, что разбирающийся человек
Я надеюсь, что ты сможешь делать еще уроки. А пока подписался, чтобы не пропустить новый ролик
Строка const remote = require("electron").remote; вызывает ошибку. Как ее исправить? В консоли: require is not defined.
Эта проблема 12 версии электрона.
Для решения в webPreferences добавьте строчку:
contextIsolation: false
15:20 все дополнительные подключаемые модули надо "разрешать" в вебПреференсес? И что за варнинг при запуске приложений?
Нет необходимости разрешать все дополнительные модули, в прошлых версиях Electron не требовалось включать и remote но вот в новой версии по умолчанию remote отключен и его надо включать.
Предупреждение говорит о том что у рендер-процесса не заданна политика безопасности. В нашем случае нет угрозы безопасности так как мы не загружаем удаленный web-контент. Сообщение можно выключить добавив в html документ, в тег head meta тег:
@@CyHaus В документации где-то указано, какие модули включены или выключены по умолчанию?. Начиная кажется с 10й версии выключили так же возможность открывать новые окна из текущего окна приложения. Теперь нельзя создавать новый БраусерВиндов в коде запущенного приложения а надо посылать "сигнал" основному скрипту, указанному в пакейдж, что бы он открыл и прислал ответ. и обмениваться данными между окнами через то ли ивенты через главный скрипт, толи еще что то. Мои старые эксперименты в электроне теперь не работают из-за этого. пытаюсь понять как теперь с этим управляться.
Еще было бы интересно понять, как изначально начать делать мультиплатформенное приложение, что бы и на сервере работало как веб версия, и откомпилировать под вин/макос. в часности работа с файлами (загрузить файл, проделать с ним манипуляции, сохранить файл.) если в ос это будет через Диалог то будет ли оно работать в веб версии. или нужно учитывать какие то условия и использовать разные подходы. Например free-tex-packer.com/ - есть как и веб версия и под десктоп. написано, что создано на электроне.
@@ALeXSagittarius Всё что касается разрешений указано в документации класса BrowserWindow, объекта webPrefences. Судя по всему изменения затронули только remote.
А вот почему у вас не работает создание окна из рендер-процесса, это странно. Если вы создаете новое окно через new BrowserWindow, то всё по идее должно работать. Я не нашел никаких замечаний на этот счет в документации. Я не знаю каким образом вы реализовали создание нового окна, по этому мне сложно подсказать вам решение проблемы.
Что касается разработки веб-версии и десктопной на электроне, то тут конечно есть нюансы и различия которые необходимо учитывать при разработке. В веб-версии на сервере не будет возможности использовать методы электрона для вызова диалогов открытия/сохранения файлов.
Браузер не позволяет напрямую работать с файловой системой пользователя, тут придется писать разную реализацию для веб-версии и для электрона.
Спасибо большое за урок, и курс.
Несмотря на то, что у меня стоит:
nodeIntegration: true,
enableRemoteModule: true,
По непонятной причине, ловлю ошибку: uncaught referenceerror require is not defined
Смог пофиксить только через:
contextIsolation: false,
Правда не очень понял, что я сделал и на что еще это повлияет.
Эта проблема возникла с выходом 12 версии. Кода я начинал записывать курс была версия 11.x и там не было этой проблемы, а вот сейчас я столкнулся с этой проблемой обновив электрон до 12 версии. Вы всё верно сделали отключив изоляцию контента (contextIsolation: false). Дело в том что до 12 версии в электроне изоляция контента по умолчанию была выключена, а вот в 12 версии этот параметр включен по умолчанию. Свойство contextIsolation отвечает за изоляцию скриптов рендер процесса и при включенном состоянии у скриптов рендер процесса нет доступа к API Электрона, отсюда и ошибка require is not defined.
Включать это свойство полезно в случае если мы загружаем неизвестный нам удаленный контент. В этом случае мы предотвращаем выполнение вредоносного кода. А в случае когда мы загружаем локальные файлы нет необходимости включать изоляцию. Стоит еще отметить что при включенной изоляции доступ к API электрона есть у скрипта предварительной загрузки (preload.js). Я сейчас готовлю урок по работе с файлами, а потом выпущу видео по этой проблеме.
Про что планируется следующее видео?
В следующем видео разберем класс Menu.
getCurrentWindow undefined даже при contextIsolation:false,
enableRemoteModule: true
к сожалению в Electron v 16.x убрали возможность получить прямой доступ к API Electron и NodeJS из рендер процесса.
Теперь можно получить доступ к АПИ только при помощи отправки сообщений ipcRender / ipcMain а также contextBridge
Из-за того что в 16 версии довольно значительные изменения цикл уроков придется переписывать т.к. половина не работает. Не знаю когда дойдут руки до того чтобы переписать курс...
@@CyHaus спасибо за ответ, уже узнал что remote и прочее устарело
спасибо за инфу о ipc
если перезапишете, то обязательно посмотрю
@@skrepkaskrepka2173 ты смог исправить?
@@abanent20 да , но я забыл уже как :D
@@abanent20 короче не смотри этот видос, он устарел и бесполезен