Skip to content

Readme (Rus.)

Media Explorer edited this page Nov 27, 2023 · 2 revisions

Readme (Rus.)

Введение

Miniblink - это элемент управления браузером на базе chromium, который также может использоваться для разработки программного обеспечения (аналогично electron). Для получения дополнительной информации, пожалуйста, обратитесь к официальному веб-сайту .

blinkUI - это библиотека пользовательского интерфейса, основанная на blink, которая сохраняет только код, связанный с пользовательским интерфейсом, удаляет функции браузера и используется только для разработки пользовательских интерфейсов. Используйте web (js + HTML + CSS) для написания интерфейса и C++ для написания логики.Как эффективность веб-разработки, так и скорость работы C++

Поскольку blink слишком связан и содержит слишком много кода, независимого от пользовательского интерфейса, я решил обрезать и извлечь код пользовательского интерфейса из miniblink, удалил nodejs и вместо этого использовал C++ для разработки логики, чтобы обеспечить скорость работы C++.

В настоящее время этот проект используется только для технических исследований, и на сокращение и изменение уходит всего 1-2 недели, поэтому будет много деталей и ошибок, которые не были доведены до совершенства. После завершения работы мы продолжим проект с открытым исходным кодом.

Особенности

-Чрезвычайно компактный размер -C++, C#, QT, MFC, Delphi и другие языковые фреймворки можно комбинировать друг с другом, чтобы снизить риск до 0 (если эта библиотека интерфейса не может реализовать функцию, вы можете использовать встроенную библиотеку для ее реализации) -Поддержка Windows xp, npapi -Поддержка HTML5, дружественная к различным интерфейсным библиотекам, таким как vue и т.д.

Характеристики планов на будущее

-Поддержка TypeScript, который более удобен для разработки крупномасштабных проектов и не несет различных исторических тягот js -Кросс-платформенный ПК -Кросс-мобильная платформа

Технический выбор: Зачем использовать web и C++ для написания интерфейса?

##1. Введение в причины: -Отделение бизнес-логики от интерфейса: js-скрипт выполняет интерфейс, c++ - логику.Изменение интерфейса не повлияет на логику, что значительно снижает количество ошибок и повышает эффективность обслуживания.

  • возможность: Electron и другие используют nodejs для написания логики, производительность намного хуже, чем на c++, поэтому логическая часть по-прежнему написана на C++. Веб создает только интерфейс, и это никак не влияет на производительность (она может достигать 60 кадров в секунду, и невооруженным глазом разницы не видно). Если код интерфейса влияет на производительность, это, должно быть, проблема с дизайном кода, потому что даже старинные машины 20-летней давности могут делать 60 кадров в секунду. (Обычное программное обеспечение - это не игра, анимаций очень мало, и оно не обязательно должно быть таким высокопроизводительным)

-Эффективное и быстрое развитие: Эффективность разработки скриптов намного выше, чем у C++, и пишется намного меньше кода. Более того, интерфейс меняется очень часто, и он отделен от логики путем помещения его в скрипт, что может не только снизить количество ошибок, но и может быть выполнено без компиляции.

-Веб-интерфейс является самым мощным и полным: Концепция дизайна, лежащая в основе веб-интерфейса, полностью отличается от обычного DirectUI, и она позволяет очень быстро реализовать различные крутые и извращенные требования к интерфейсу. Мало того, что объем кода в десятки раз меньше, так еще и разработчикам нет необходимости понимать принцип интерфейса.

##2. Эффективность разработки в несколько раз или даже в десятки раз хуже: Например, если вы хотите реализовать функцию анимации, MFC должен сам написать логику анимации. Простые анимации требуют написания сотен строк, а сложные анимации требуют написания тысяч строк, и это трудно обобщить. Веб реализует одну и ту же анимацию длиной от нескольких строк кода до десятков строк кода.Объем кода [в 100 раз меньше], а скорость разработки, естественно, в 100 раз выше.

Для реализации кнопки MFC self-painted, хорошо известной библиотеки с открытым исходным кодом ButtonST, также потребовалось более 3000 строк кода. Но вебу по-прежнему требуется всего несколько строк кода для достижения этих эффектов, и он также может создавать эффекты, которые ему недоступны, такие как кнопки специальной формы, а внешнее кольцо области кнопок светится (для этого требуется более 5000 строк или даже больше).

##3. Интернет обладает самой мощной экологической поддержкой: Хотя эффективность js не так высока, как скриптов, таких как lua, html не так лаконичен, как json. Но Интернет обладает самой мощной экологической поддержкой, такой как: -Наиболее полная поддержка различных документов, если вы знаете C++, вы можете выучить большую часть грамматики за несколько часов.Если вы столкнетесь с новой проблемой, вы также можете быстро найти решение. Другие самостоятельно созданные библиотеки интерфейсов не разобрались с этим за несколько часов, и когда они сталкиваются с новыми проблемами, им остается только просмотреть исходный код или даже отладить исходный код, чтобы решить их.

  • Хотя другие интерфейсные библиотеки также могут реализовывать все функции Web, самой мощной и надежной является web. Например, QML от QT, HTMLayout, kdgui от Jinshan и т.д. создали свой собственный набор синтаксиса и системы., Однако по-прежнему остается много ошибок, или темных пятен, или недостаточно удобной документации, и трудно решать новые проблемы. Вам приходится самостоятельно отлаживать код библиотеки интерфейса.

-Существует так много веб-разработчиков с открытым исходным кодом

##4. Низкие требования к опыту для разработчиков: MFC и VC++ требуют не менее 3 лет опыта разработки интерфейсов (QT также требует 1~ 3 лет опыта), чтобы быстро реализовать множество сложных и классных интерфейсов. Например, если вы хотите реализовать классную кнопку button, вам нужно вызвать базовый API, чтобы нарисовать ее самостоятельно, и вам нужно понимать принципы интерфейса (такие как механизм сообщений, отрисовка GDI и т.д.)., В частности, механизм обмена сообщениями является наиболее сложным, и без 3-летнего опыта работы с интерфейсом он практически непроницаем. Даже если существуют библиотеки с открытым исходным кодом, которые можно использовать, эти библиотеки с открытым исходным кодом все равно недостаточно мощны. Сталкиваясь с более сложными интерфейсами, вам все равно придется самостоятельно рисовать и понимать принципы работы интерфейса.

В Интернете для выполнения этих функций требуется только один **обычный выпускник-новичок **. Поскольку вебу не нужно понимать лежащий в основе механизм обмена сообщениями и не нужно самостоятельно рисовать, он может комбинировать и собирать интерфейс по своему желанию, чтобы реализовать все сложные и классные интерфейсы, включая анимацию, чего можно достичь всего за несколько строк кода.

В Интернете ** легко набирать сотрудников **, и зарплата также низкая Сейчас мало кто умеет разрабатывать Windows, и еще меньше людей владеют C++, и таланты были утрачены на протяжении многих поколений. Но веб-программисты овладевают многими из них, и новые выпускники также могут быстро приступить к работе.

##5. Другие преимущества: -Автоматизированное тестирование, большинство фреймворков могут автоматизировать только логику тестирования, но Веб также может автоматизировать интерфейс тестирования (хотя другие также могут быть реализованы, вам нужно самостоятельно разработать базовую библиотеку) -Динамическая отладка, изменение интерфейса и т.д., а также куча веб-преимуществ, это не пример.

##6. Простое резюме таково: Разработка C++ занимает [1 месяц], а веб можно создать максимум за [1 неделю], и даже некоторые из них можно сделать за один или два дня (потому что существует много готовых библиотек с открытым исходным кодом). Как правило, написание гаджетов не предъявляет требований к производительности, я использую для этого js или python.

Чем сложнее и круче интерфейс, чем более извращены требования, тем в большей степени он может отражать мощь веб-функций и преимущества эффективности разработки.

Уроки истории других интерфейсных библиотек

##1. Библиотека интерфейса GF от Tencent По сути, для использования остается только отдел QQ, даже не отдел WeChat. В то время это стоило десятки миллионов долларов, и на его разработку ушел год, и оно также было распространено на всю компанию, но поскольку существует очень мало руководств по документации, людям, которые не понимают интерфейс, трудно быстро справиться с этим, когда они сталкиваетесь с проблемами., И простота использования не так хороша, как у более позднего duilib, плюс разработчики библиотеки интерфейса в основном были повышены в должности или ушли, и почти никто не продолжает поддерживать и продвигать ее, так что она пришла в упадок.

Когда я столкнулся с ошибкой, мне пришлось несколько раз отлаживать код ядра библиотеки интерфейса, чтобы найти причину. Когда я нашел причину, я не смог легко изменить ее, потому что влияние было слишком широким. Как правило, функция реализуется в обход ошибки. Но большинство людей мало что знают об интерфейсе и не могут быстро решать проблемы, поэтому их упадок неизбежен.

##2. Библиотека оболочек Jinshan's bkwin, kdgui Это потому, что проектов Цзиньшань немного, поэтому ядовитый тиран Цзиньшань использовал его.Но WPS использует QT, а Jinshan Network disk также использует duilib. У Jinshan также есть библиотека интерфейса под названием ** kdgui **, которая используется только для интерфейса Poison Tyrant acceleration ball. На самом деле, она очень мощная, лучше, чем библиотека интерфейса GF от Tencent, анимация и различные классные интерфейсы могут быть быстро реализованы., Это сравнимо с эффективностью веб-разработки, написано в логике C++ и выполняется очень быстро. И он использует скрипт Squirrel Squirrel, который примерно такой же быстродействующий, как lua, но синтаксис похож на C++; вместо xml используется json, который более лаконичен. Однако из-за ухода основного персонала и слишком малого количества документов он по-прежнему сокращается.

##3. Библиотека интерфейса BOLT от Thunderbolt Он также был постепенно заброшен из-за ухода основного персонала. Сетевой диск Thunderbolt был заменен на duilib, а новая версия Thunderbolt была заменена на electron.

##4. Интерфейсные библиотеки с открытым исходным кодом, такие как duilib, SOUI и т.д. Из-за ограниченного числа разработчиков и отсутствия поддержки компании все они полумертвы. Если у вас возникнут какие-либо проблемы, вам придется самостоятельно изменить библиотеку интерфейса., Пока не появилось лучшей библиотеки интерфейсов, они действительно являются лучшим выбором

##5, QT Также из-за того, что он продавался повсюду, разработка шла очень медленно,

  • Основная концепция QWDGET похожа на MFC и устарела, но поскольку она более полная, чем MFC, существует множество готовых фреймворков.Если у вас нет слишком сложных требований к интерфейсу или вы не часто меняете интерфейс, им все равно можно пользоваться.
  • Основная концепция QML аналогична концепции web, которая является очень продвинутой, но из-за слишком большого количества ошибок и самостоятельно созданного синтаксиса она не обладает идеальной экологией web, поэтому все еще существует много проблем, и вам приходится решать их самостоятельно, когда вы сталкиваетесь с проблемами.

##6. трепетание и т.д. В основном, мобильный терминал стал более зрелым, но в ПК-терминале по-прежнему много ошибок и проблем.В частности, замечательные вложенные грамматики flutter очень избыточны и громоздки. Я не испытываю оптимизма по поводу этих новых грамматик. Они не были проверены временем и не имеют идеальной экологической поддержки. Они чисто технические.

##7. Краткое содержание Все вышеприведенные исторические факты доказывают, что даже такая интерфейсная библиотека, как Tencent, которая стоила десятки миллионов долларов, в то время могла удовлетворить потребности на несколько лет.Однако по мере обновления технологии и повторения требований это будет постепенно устраняться. Только стоя на плечах гигантов, мы можем по-настоящему развиваться в течение длительного времени и становиться все сильнее и сильнее.

В современной разработке программного обеспечения ** - это уже не реализация функций, а эффективность разработки и обслуживания. Когда дело доходит до реализации функций, все функции могут быть реализованы с помощью MFC более чем 20-летней давности или даже непосредственно с помощью VC++ API, поэтому, пока базовые навыки хороши, нет функций, которые невозможно реализовать, и нет смысла конкурировать. Но когда дело доходит до эффективности разработки, разница слишком велика.:

  • Кнопка MFC с самораскрашиванием нуждается в небольшом улучшении, для этого требуется [3000 строк] кода, и для ее выполнения требуется старший разработчик интерфейса.; Та же функция может быть реализована с помощью [нескольких строк] веб-кода, и для этого требуются только начинающие выпускники. Нет необходимости в самостоятельном рисовании или понимании различных принципов интерфейса. Концепция дизайна QT очень похожа на концепцию MFC. Подсчитано, что кнопки для самостоятельного рисования также требуют сотен или тысяч строк кода. По крайней мере, все должно быть нарисовано путем вызова API, а не нескольких строк кода.

-MFC для создания классного интерфейса одному человеку требуется от 3 до 6 месяцев разработки (относится к крупным проектам, а не к маленьким инструментам); веб занимает всего 1-2 недели. QT и duilib также занимают около 1 месяца.

Борьба за эффективность технического обслуживания: -MFC и QT везде связаны интерфейсом и логикой. При изменении интерфейса логический код в основном будет изменен или перемещен, что является риском возникновения ошибок.дуилиб немного лучше, но тоже очень хорош. В Интернете этой проблемы нет. Интерфейс может быть значительно переработан, и тогда логический код вообще не нужно менять (при условии, что дизайн кода разумный), и его даже не нужно перекомпилировать.

Если вы не выберете Веб и не встанете на плечи гигантов, то с точки зрения экологии, документации и т.д. он будет постепенно устраняться и приходить в упадок. В конце концов, только несколько человек с сильными навыками интерфейса останутся, чтобы использовать его, а другие выберут другие библиотеки интерфейсов, которые проще в использовании. Хотя интерфейсные библиотеки, такие как flutter, были разработаны гигантами, они все еще слишком молоды, чтобы их можно было тестировать так же, как Веб. После десятилетий тестирования риски выбора и затраты по-прежнему велики.В конце концов, есть много проектов, заброшенных и мертвых Google и Microsoft.

Контактная информация

Q группа 956223415

Благодарности

Особая благодарность хорошему другу-гею Веолару, он является автором miniblink и kdgui

Когда я работал в Jinshan Poison Tyrant, я некоторое время помогал ему и написал более удобную и мощную библиотеку управления для kdgui, которая повысила эффективность разработки в 4 раза.

(До этого на разработку полного проекта уходил 1 месяц, а после использования библиотеки элементов управления - всего 1 неделя)

Теперь продолжайте оказывать ему помощь и извлеките часть пользовательского интерфейса miniblink

miniblink49 обновился до VS2022, устранил ошибки компиляции и удалил некоторые нежелательные элементы

Url: https://github.com/Alberl-Lee/miniblink49-VS2022 (fork)