"Видимость: 🌟🌟🌟🌟🌟"
"Вкус: пряный живот"
"Время приготовления: 10 мин."
Эта статья была включена в переднюю столовую одноименного репозитория Github.github.com/Geekhyt, Добро пожаловать в кафетерий. Если вы считаете, что еда и вино вкусные, Звезда станет отличным поощрением для владельца кафетерия.
пасхальные яйца
Когда я вчера вечером вернулся домой, я увидел, что Питер опубликовал список друзей, была выпущена общедоступная бета-версия облачной игровой платформы Tencent START, и он играл в LOL с MAC. Прошёлся по ней и испытал волну.Ведь ЛОЛ это молодёжь нашего поколения.Времени поиграть после работы очень мало.После использования МАК,предыдущие геймбуки давно лежат на дне коробки .
Выберите волну EZ ~ (талант не успел измениться)
Первую победу я легко одержал за 20 минут (ведь я старый игрок в с2, и матчмейкинг работает штатно).Общее впечатление пока очень хорошее.Задержек по скорости домашней сети в принципе нет, разве что мышь немного неудобна при настройке угла обзора в оконном режиме. (Студенты, которые хотят получить опыт, не забудьте сначала отключить угол спускового крючка)
"Облачная" модель облачной игровой платформы полностью освобождает воображение от "кроссплатформенности". Возможно ли, что с появлением 5G она может стать лучшим решением для кроссплатформенных решений в будущем? Какие новые вызовы ждут нас, фронтенд-инженеров? Приглашаем студентов оставить сообщение для обсуждения ~
Книга вернулась к оригиналу.В последнее время я работаю над проектом Электрон.Электрон приложил много усилий для достижения кроссплатформенности. (Его можно сравнить с моделью облачной игровой платформы.) Давайте посмотрим.
Архитектура браузера Evolution
Начнем с эволюции архитектуры браузера.Все более сложные бизнес-требования постоянно подталкивают к эволюции и повторению архитектуры браузера.
возьми нашу любимуюChrome
Например, от однопроцессорной архитектуры до 2007 г. до современной многопроцессорной архитектуры браузеры
Станьте более стабильным, плавным и безопасным. Последнее, что вы можете увидетьChrome
Браузер должен включать следующие процессы:
1 个浏览器(Browser)主进程
1 个 GPU 进程
1 个网络(NetWork)进程
多个渲染进程 (运行在沙箱模式下)
多个插件进程
Однако в программной инженерии не существует серебряной пули. Архитектура браузера также усложняется с настройкой, а также имеет более высокое потребление ресурсов.
Как найти баланс между использованием ресурсов и сложной архитектурой стало сложной проблемой.
"Выбор делают только дети, хочу и рыбку, и медвежью лапу!"
Chrome 团队在 2016 年使用“面向服务的架构”(Services Oriented Architecture,简称 SOA)的思想设计了新的 Chrome 架构。
Chrome
Команда рефакторит модули в независимые сервисы (Service
), служба работает в отдельном процессе, если вы хотите получить к ней доступ, вы должны использовать определенный интерфейс черезIPC
общаться. Такая архитектура, несомненно, более сплоченная, слабосвязанная, ее легче поддерживать и расширять.
Хромовая архитектура
ChromiumдаChrome
Версия с открытым исходным кодом также является браузером.
- основной процесс
RenderProcessHost
и рендерераRenderProcess
Особый уходIPC
мероприятие. - процесс рендеринга
RenderView
: Наша страница находится здесьWebkit
Верстка показать. -
ResourceDispatcher
Обрабатывать запросы ресурсов, когда странице необходимо запрашивать ресурсы, передаватьResourceDispatcher
, создать запросID
вперед кIPC
,существуетBrowser
Обработать и вернуть.
Электронная архитектура
- раскрывается в каждом процессе
Native API (Main Native API、Renderer Native API)
- представлять
Node.js
Таким образом, вElectron
можно использовать вChromium
а такжеNode.js
Сделай что-нибудь веселое!
А между тем предстоит решить трудность: какNode.js
а такжеChromiums
интеграция?
Node.js
Цикл событий основан наlibuv,ноChromium
на основеmessage_pump.
Есть два основных пути решения этой проблемы:
- 1. будет
Chromium
Р ГNode.js
:использоватьlibuv
выполнитьmessage_pump
. - 2. будет
Node.js
Р ГChromium
.
Первая программа,NW.jsВот что он делает.Electron
Я тоже пробовал этот способ на ранней стадии, и оказалось, что это проще реализовать в процессе рендеринга, но очень хлопотно в основном процессе, т.к.GUI
реализация разная,Mac
даNSRunLoop
,Linux
даglib
, не только объем инженерных работ очень велик, но и с некоторыми граничными условиями очень трудно справиться.
Позже автор применил другой подход и повторил попытку, опрашивая с небольшим интервалом таймера.GUI
событие, открытиеGUI
очень медленный ответ,CPU
Тоже лопнул.
до позжеlibuv
представилbackend_fd
концепция, эквивалентнаяlibuv
Файловой дескриптор для избирательных событий, так чтоbackend_fd
получитьlibuv
новое событие. То есть второй способ мышленияNode.js
Р ГChromium
.
Если вы хотите узнать больше, вы также можете перейти к ответу автора ниже.
резюме
БудуNode.js
Р ГChromium
Принцип:
Electron
Начать новый безопасный поток для опросаbackend_fd
,когдаNode.js
После того, как новый инцидент, пройтиPostTask
вперед кChromium
в цикле событий это достигаетElectron
слияние событий.
Ссылаться на
- «Принцип работы и практика браузеров» Ли Бин
- «Практика разработки электронов» Дэн Яолун
❤️Любовное тройное комбо
1. Если вы считаете, что еда и напитки в столовой все еще аппетитны, просто поставьте лайк и поддержите это, ваше"отличный"моя самая большая мотивация.
2. Обратите внимание на фронтальную столовую официального аккаунта,"Ешьте каждый прием пищи!"
3. Нравится, комментирует, пересылает === призывает больше!