Почему происходит нокаут.js имеют репутацию лучше для небольших проектов, костяк.JS для больших?
Я использую нокаут.js в течение нескольких месяцев, и найти его ежедневную радость в использовании. Выгоды от того, что вам не нужно управлять состоянием на dom или применять свои собственные пользовательские привязки, невероятны, и я не возражаю против того, чтобы не иметь функций модели из коробки. Но каждый раз, когда я читал обзор на выбывание.JS против других фреймворков консенсус, похоже, заключается в том, что это здорово, это приводит к меньшему количеству кода и сложности в целом, но он лучше подходит для небольших проектов. Это утверждение всегда дается в виде на самом деле, без особых объяснений, поэтому я смущен тем, что такое консенсус. (Справедливости ради я еще не использовал позвоночник и поэтому не знаю, как они сравниваются)
Я использовал его на двух довольно больших проектах, каждый из которых имеет около дюжины моделей и дюжину моделей просмотра или около того, и не видел с ним проблем. Единственный недостаток, который я вижу vs Backbone в большом проекте, заключается в том, что вы получите некоторую несущественную производительность для применения нокаута и управление всеми привязками. Но это главная проблема или есть что-то еще, что я упускаю?
3 ответа:
с моей (короткой) сравнение нокаута и позвоночника:
Knockout стремится обеспечить гладкие, простые в использовании привязки модели между HTML и моделью. Это очень XAML/Silverlight / WPF, как в его реализации и шаблонах использования (это имеет смысл, учитывая, откуда он взялся). Нокаут не дает указаний или конструкций за пределами модели, хотя. Это зависит от разработчиков, чтобы построить хорошо структурированные приложения JavaScript за пределами моделей и привязки модели. Это часто приводит разработчиков без хорошего опыта JavaScript по плохому пути, потому что они не понимают, что им нужно учитывать хорошую структуру приложения при использовании Knockout. Конечно, эта проблема ни в коем случае не является виной нокаута. Это просто отсутствие понимания того, что предоставляет инструмент, или как структурировать большие приложения JavaScript, во многих случаях.
лично я не люблю нокаут. Я не поклонник шаблона MVVM. Я предпочитаю Подход позвоночник и я провожу большую часть своего времени работая с ним. Тем не менее, я думаю, что "прозаические" мнения о том, что нокаут не подходит для больших приложений, ошибочны. Вы можете создавать очень большие, сложные и хорошо структурированные приложения с нокаутом. Но вы должны предоставить все структуры за пределами привязки данных и моделей.
вы обнаружите, что тенденции веб-приложений, такие как тенденции моды, вызывают много самоуверенных дискуссий. В большинстве случаев нет правильного или неправильного ответа. Но у каждого есть свой личный стиль, и вы просто должны найти свой.
лично мне нравятся как нокаут, так и позвоночник, и было приятно узнать, что вам на самом деле не нужно выбирать между ними; вы можете использовать плагин под названием "Knockback", который соединяет их вместе красиво.
Мне нравится MVP структура позвоночника, с декларативными привязками нокаута. Я написал запись в блоге об этом, С некоторыми примерами, если вы хотите узнать больше.
что касается производительности нокаута на больших сложных домах, вы можете обойти это, ограничив свои привязки к определенным элементам DOM вместо применения глобально:
ko.applyBindings(myViewModel, $('#myElement')[0]);
[0] в конце необходимо, потому что нокаут ожидает элемент DOM, а не объект jQuery в качестве 2-го параметр.
организация кода крупномасштабных приложений javascript является сложной проблемой и совершенно не зависит от того, какой фреймворк вы используете - если только фреймворк не обеспечивает много самоуверенного структурирования.
учитывая ни один позвоночник.Яш, ни нокаутом.js рекомендовали структуру каталогов или рекомендуемую методологию управления жизненным циклом, и любые отсутствующие функции в одном отношении к другому могут быть заполнены плагинами, поддерживаемыми сообществом, или автономные микрорамки, нет никакого смысла рассматривать их как превосходящие друг друга в контексте размера/сложности применения.
на боковой ноте, если вы начинаете с крупномасштабного приложения javascript в настоящее время, используя Angular.JS может быть более подходящим, чем нокаут.js если вы предпочитаете декларативный подход, привязку данных на основе атрибутов DOM и шаблон MVVM, а также Ember.js может быть более подходящим, чем позвоночник.js, если вы предпочитаете MVC и string based (Handlebars) шаблоны. Оба находятся в активной разработке и сравниваются плечом к плечу в отношении функций и были специально разработаны для облегчения проблем, с которыми сталкиваются люди, работающие с большими приложениями с меньшими фреймворками, такими как Backbone и Knockout, которые были раньше.