Как Angular и Knockout ДЕЙСТВИТЕЛЬНО сравниваются?

Angular (или Angular.js, так как они в основном имеют одинаковый набор функций, но реализованы по-разному) чем-то похож на полнофункциональную среду веб-разработки, но для клиентской стороны. Ему нравится все, что нужно сделать на стороне клиента. Единственная проблема заключается в том, что для действительно творческих разработчиков/дизайнеров, которые имеют в виду конкретные архитектуры, Angular будет ограничением, потому что, несмотря на то, что он расширяемый, он уже похож на все, как если бы это был Bootstrap. для CSS даже то, что креативщик хотел бы реализовать по-другому. И точно так же, как Bootstrap, он в основном хорош для людей, которые не очень заботятся о творчестве. Например, о творчестве: в Angular есть функция реализации панелей с вкладками, что мне не очень нравится или не нравится. Так же, как мне не нравится тот, что в Bootstrap. Мне нравится по-разному реализовывать панели с вкладками с моим собственным дизайном пользовательского интерфейса и UX, что позволяет мне также отказаться от вкладок.

Knockout похож на облегченную среду JavaScript на стороне клиента, которая делает для вас много, но не слишком много. Это позволяет вам реализовать дополнительные вещи, которые могут вам понадобиться, и эти дополнительные вещи вы можете легко сделать с помощью обычного jQuery/JavaScript, как вы увидите в следующих абзацах.

Все (или почти все) возможности Knockout присутствуют в Angular, разумеется, реализованы иначе. [Единственные] функции, которые есть в Angular, но значительно отсутствующие в Knockout, и как реализовать их в Knockout без использования каких-либо дополнительных библиотек, заключаются в следующем…

  • Шаблоны из внешних файлов:

Это было решено в этой ссылке Stackoverflow…

https://stackoverflow.com/questions/17073648/load-knockout-template-from-external-file-without-complex-engine/17074662#17074662

…где вы можете легко создать некоторый код Javascript, чтобы сделать именно то, что нужно сделать. Вы также можете создать свою собственную конкретную реализацию.

  • Маршрутизация:

Теперь с хорошо поддерживаемым HTML5 History API вы можете реализовать свою собственную маршрутизацию, следуя объяснениям в этой статье…

https://css-tricks.com/using-the-html5-history-api/

…где вы узнаете об обработке тегов привязки и использовании Javascript для навигации по страницам, а также сможете вернуться к традиционной навигации, если браузер не поддерживает должным образом то, что вы реализовали. Преимущество этого в том, что вы можете реализовать навигацию по-своему, добавляя дополнительные функции. Следующая серия статей похожа на лучшие ресурсы, которые я видел в Интернете, которые довольно исчерпывающе объясняют многое о том, как использовать HTML5 History API для решения различных задач и задач маршрутизации…

https://alyssa.is/pushstate-jquery/

https://alyssa.is/pushstate-part-2/

В заключение, если вы креативщик или нет, вы можете выбрать Angular. НО, если вы творческий человек, которому нужна гибкость и который хочет реализовывать вещи по-своему и масштабировать по-своему, выберите Knockout и реализуйте две вышеупомянутые недостающие функции, потому что, очевидно, Angular продолжает меняться от версии к версии, потому что он слишком жестко построен и не удовлетворяет все потребности настоящих креативщиков, точно так же, как Bootstrap, хотя и хорошо оснащен, не совсем подходит для настоящих креативщиков.

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

P.S.: Более подробное и довольно честное сравнение, которое я нашел в Интернете, находится по следующей ссылке…

https://www.devbridge.com/articles/angular-vs-knockout-similarities-and-fundamental-differences/

… но на самом деле это не дает вам решения для недостающих вещей в Knockout. И, похоже, он дезинформирует о том, как Knockout выполняет вложенные сценарии привязки данных, для которых вы можете найти решения по следующим ссылкам Stackoverflow…

https://stackoverflow.com/questions/11689607/knockout-nested-bindings

…когда у вас есть несколько моделей для привязки данных.

http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html

…когда у вас есть несколько моделей, но вы хотите пропустить или изолировать части вашего HTML, чтобы смешать модели в разных частях вашего HTML. И…

https://stackoverflow.com/questions/7342814/can-you-call-ko-applybindings-to-bind-a-partial-view

… когда вы хотите привязать данные к определенным частям вашего HTML.