Категория: Статьи

Мои статьи

Pure computed переменные — Knockout.js

Добавил: (02 января 2018)


Pure computed (чисто вычисляемые) переменные, введенные в Knockout 3.2.0, предоставляют более оптимизированный с точки зрения производительности и использования памяти вариант computed-переменных для большинства приложений в сравнении с обычными computed-переменными. А все потому, что pure computed переменные не поддерживают подписки на их зависимости, когда на них самих нет подписок. Это предоставляет:

  • Предотвращение утечки памяти от computed-переменных, на которые более нет ссылок в приложении, но чьи зависимости все ещё существуют.
  • Уменьшает расход ресурсов на вычисления не пересчитывая computed-переменные, чьи значения не наблюдались в других местах.

(далее…)

Как работает отслеживание зависимостей — Knockout.js

Добавил: (01 января 2018)

Новичкам не обязательно это знать, но более продвинутые разработчики захотят узнать, почему мы продолжаем делать все эти утверждения о том, что KO автоматически отслеживает зависимости и обновляет правильные участки UI…

На самом деле, все довольно просто и красиво. Алгоритм отслеживания работает наподобие такого:

  1. Когда вы объявляете computed переменную, KO мгновенно вызывает функцию, переданную в качестве параметра (далее функция А), для получения начального значения.
  2. В то время, как эта функция запущена, KO настраивает подписку на любые observable-переменные (включая другие computed переменные), которые читает данная функция. Callback-функция подписки настроена так, чтобы повторно запускать «функцию А», повторяя весь процесс с шага 1 (убирая все старые подписки, которые больше не применяются).
  3. KO уведомляет любых подписчиков о новом значении вашей computed переменной.

(далее…)

Записываемые Computed переменные — Knockout.js

Добавил: (29 декабря 2017)


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

Обычно, computed переменные содержат значение, которое вычисляется из других observable переменных и следовательно, является досупным только для чтения. Что может удивить, так это то, что существует возможность сделать эти computed переменные записываемыми. Вам нужно всего лишь предоставить собственную callback-функцию , которая делает что-то разумное с записываемыми значениями.

Вы можете использовать записываемые computed переменные таким же способом, как и обычные observable переменные, со своей собственной логикой, перехватывающей все чтения и записи. Как и observable переменные, вы можете вписывать значения во множество observable или computed свойств на объекте модели, используя цепочки вызовов. Например, myViewModel.fullName(‘Итан Маркотт’).age(50).

Записываемые computed переменные это мощный инструмент с широким спектром применения. (далее…)

Использование Computed переменных — Knockout.js

Добавил: (28 декабря 2017)

Что если есть observable-переменная для firstName (имя), и другая для lastName(фамилия), и вы хотите вывести полное имя? Это именно тот момент, когда на сцене появляются computed observable (вычисляемые observable-переменные). Это функции, которые зависят от одной или более других observable-переменных, и их значение будет автоматически обновляться когда любая из из переменных, от которых зависит computed-переменная изменилась. (далее…)

Работа с observableArray — Knockout.js

Добавил: (28 декабря 2017)

Если вам нужно отслеживать изменения объекта и отвечать на них, то нужно использовать observable-переменные. Если же нужно отслеживать и отвечать на изменения набора данных, используйте observableArray. Это полезно во множестве случаев, где вы отображаете или редактируете множество элементов и нужны повторяющиеся участки UI, которые бы появлялись или исчезали с добавлением или удалением элементов. (далее…)

Создание ViewModel и Observable-значений — Knockout.js

Добавил: (27 декабря 2017)

Knockout построен на основе трех основных возможностей:

  • Observable-переменные и отслеживание зависимостей
  • Декларативные биндинги
  • Шаблонизация

На этой странице, вы узнаете о первой из трех. Но перед этим, давайте изучим паттерн MVVM и концепцию view model. (далее…)

Введение — Knockout.js

Добавил: (27 декабря 2017)


Knockout (нокаут) это JavaScript библиотека, помогающая создавать богатые, отзывчивые в отображении и редактировании пользовательские интерфейсы на основе чистой модели данных.
Каждый раз, когда у вас есть элементы UI которые динамически обновляются (например, изменения в зависимости от действий пользователя, или при изменении внешних данных),
KO поможет реализовать все это в более простом виде с возможностью последующей доработки.

Главные возможности

  • Элегантное отслеживание зависимостей — автоматически обновляет соответствующие части вашего UI как только изменилось значение в модели данных.
  • Декларативные биндинги — простой и очевидный способ соединения частей вашего UI с данными модели. Вы можете с легкостью создать сложные динамические интерфейсы, используя произвольно вложенные контексты биндингов.
  • Тривиально расширяемый — реализация собственных поведений в виде новых декларативных биндингов, для простого повторого использования в пару строк кода.

(далее…)