ChangeLog
3.9.1
-
Исправлена ошибка:
интерпретировался как \u0020
(пробел), теперь он интерпретируется как \u00a0
(неразрывный пробел).
-
Оптимизация: метод SanData#get()
поддерживает тип параметра data.get<string>()
.
3.9.0
-
Новая функция: в объект Data добавлен метод assign.
-
Новая функция: добавлена поддержка компонента ANode для сжатия и распаковки.
-
Изменение: метод compileComponent был удалён, добавлен метод parseComponentTemplate.
-
Изменение: из source.tagName можно получить избыточный атрибут subTag, который был удалён из объекта.
-
Оптимизация: улучшена совместимость с HTML за счёт того, что узлы атрибутов шаблона не заключаются в кавычки.
-
Оптимизация: была проведена оптимизация и тонкая настройка компиляции узлов шаблона компонента ANode.
-
Оптимизация: при обновлении цикла trackBy, если цель цикла — обычный узел, используется существующий узел вместо создания нового, чтобы избежать потери данных.
-
Исправление ошибки: когда корневой узел компонента не является HTMLElement, изменения в данных внутри attached не вызывают обновления представления.
И так далее.
Этот текст содержит технические термины и описания изменений в программном обеспечении. Он может быть полезен разработчикам и техническим специалистам. Процесс анализа выражений в ходе работы над выражениями был оптимизирован.
-
Исправление ошибок: при динамическом создании дочерних компонентов и добавлении их в children, возникала ошибка времени выполнения. Эта проблема была введена в версии 3.5.8.
3.6.3
-
Исправление ошибок: возникали ошибки рендеринга при использовании тегов SVG с заглавными буквами, таких как forgienObject.
3.6.2
-
Новая функция: добавлена поддержка обхода объектов для команды for.
-
Исправление ошибок: не работала двусторонняя привязка при input type, который имел динамическое значение.
3.6.1
-
Новые функции:
- добавлена поддержка trackBy для команды for;
- команда for теперь поддерживает обход массивов literal.
-
Оптимизация: улучшен анализ выражений, включая поддержку переноса строки как пробельного символа.
3.6.0
-
Новые функции:
- добавлен s-bind для указания всего объёма данных в scoped slot;
- изменена поддержка анимации компонентов: вместо класса transition используется инициализирующий параметр transition;
- улучшено обнаружение изменений при обновлении массива внутри компонента: теперь splice точно отслеживается.
3.5.11
-
Улучшение: в режиме разработки добавлено больше подсказок об ошибках анализа выражений.
3.5.10
-
Улучшение: изменена логика getComponentType, удалена ненужная оптимизация hotTags.
3.5.9
-
Новые функции: добавлена поддержка анализа выражений для array literal и object literal.
3.5.8
-
Новые функции:
- добавлены новые возможности для работы с данными: поддержка метода splice со стартовым индексом меньше нуля и команды s-bind;
- улучшена обработка пустых значений атрибутов обычных элементов: они устанавливаются как пустые строки.
-
Исправление ошибок:
- при выполнении операций с массивами в created, последующие обновления вида происходили некорректно;
- некорректное обновление вида после изменения данных в компоненте.
3.5.7
-
Улучшения:
- разрешены пустые текстовые узлы перед комментарием в компонентах во время их деконструкции;
- добавлена поддержка экранирования часто используемых html-сущностей.
-
Исправления ошибок:
- проблемы с рендерингом html-сущностей в SSR, которые были введены в версии 3.5.5;
- ошибки при многократном использовании команд splice, когда операции удаления и вставки чередовались: обновления вида могли происходить некорректно.
3.5.6
-
Новые функции:
- для удобства разработчиков добавлена поддержка команды s-else-if, которая работает аналогично команде s-elif;
- предоставлены API Data и evalExpr для хранения данных и вычисления выражений;
- исправлены проблемы с анализом выражений для сложения, вычитания, умножения и деления;
- устранены ошибки обновления вида при многократных операциях splice, где удаление и вставка чередовались.
-
Исправления ошибок:
- неправильное имя тега при использовании template в качестве объявления корневого элемента компонента;
- неправильная обработка html-сущностей для свойств и атрибутов содержимого текста.
3.5.5
-
Новые функции: добавлен параметр force к методу set для принудительного обновления значения данных при совпадении текущего и устанавливаемого значений.
-
Исправления ошибок:
- неправильное название тега при объявлении корневого элемента шаблона компонента;
- некорректная обработка html-сущностей для содержимого текста и атрибутов тегов.
3.5.4
-
Улучшение: использование createElement вместо html при создании вида.
3.5.3
-
Исправление ошибки: неправильный анализ числовых литералов приводил к неожиданным результатам вычислений в выражениях.
3.5.2
-
Исправления ошибок:
- одновременное выполнение команд detach и dispose для компонента приводило к тому, что компонент не достигал состояния disposed;
- ошибка при установке логического атрибута для данных компонента, если атрибут имел статическое значение;
- иногда не отображались сообщения об ошибках при некорректном шаблоне компонента.
-
Улучшения: оптимизация обработки логических атрибутов.
3.5.1
-
Исправление ошибки: повторный набор значений для элементов массива приводил к ошибкам.
3.5.0
-
Изменения:
- поведение интерполяции HTML изменилось по умолчанию: выполняется кодирование HTML, за исключением последнего фильтра raw;
- удалены два фильтра: html и raw;
- некоторые свойства ANode были преобразованы из IndexedList в массивы для упрощения сериализации JSON;
- поддержка delimiters для компонентов при их объявлении: можно настроить разделители вокруг интерполированных значений;
- метод getComponentType(aNode) добавлен по умолчанию для компонентов, чтобы упростить создание компонентов во время выполнения;
- компоненты могут принимать id в качестве идентификатора корневого элемента;
- улучшения производительности;
- частичные теги (например, select, tr и т. д.) теперь совместимы с create + insert для поддержки HTML в старых версиях IE;
- определение глобального объекта san добавлено в определения типов TypeScript;
- события, объявленные с помощью native, запускались при вызове fire;
- значения перечисления, назначенные свойствам с логическим типом (например, draggable), выводились неправильно, если им присваивались строковые значения;
- обновления вида происходили неправильно при многократной обработке данных для компонентов с использованием команды for, когда индекс компонента менялся из-за обновлений данных.
-
Исправления ошибок:
- определения DataTypeCheck и computed в определениях типов TypeScript были ошибочными;
- типы данных в определениях TypeScript для DataTypeCheck были определены неверно.
3.4.3
-
Исправления ошибок:
- структура шаблонов, слотов и текстов была изменена для устранения проблем с обновлением сложных вложенных сценариев;
- в IE9 возникали проблемы с двусторонней привязкой для input[type=text];
- улучшение определений типов для часто используемых API.
3.4.2
-
Исправления ошибок:
- если пользовательский фильтр использовался в интерполяции и за ним следовал нестандартный узел, обновление вида происходило некорректно;
- несколько сред san на одной странице могли приводить к конфликтам компонентов.
3.4.1
-
Исправление ошибки: данные undefined в initData заменяли данные в data при инициализации компонента.
3.4.0
-
Новые функции: добавлены методы merge и apply к объекту Data.
-
Изменение: новый механизм сопоставления шаблонов для деконструкции компонентов заменил старый механизм маркировки.
-
Исправление ошибки: интерполяция атрибутов элементов не допускала пробелов до и после знака равенства.
3.3.2
-
Улучшения:
- автоматическая замена - на camelCase в объявлениях scoped slot для данных;
- неопределённые значения в data binding не заменяют значения по умолчанию в данных при инициализации компонентов;
- обработка autofocus и required для boolean значений улучшена;
- обновление вида для элементов с командой for под шаблонами приводило к ошибкам времени выполнения;
- текстовые узлы в слотах или шаблонах могли вызывать некорректные обновления, если у родительского узла был предыдущий брат;
- удаление элементов списка в команде for могло привести к ошибкам при scoped slots;
- параметры событий не получали данные при использовании native для объявления событий;
- данные не обновлялись должным образом для двусторонне привязанных входных данных в UIWebView при открытии клавиатуры.
3.3.1
-
Новые функции:
- имена слотов могут быть динамическими;
- scoped slots позволяют получить доступ к данным текущей среды владельца;
- s-ref позволяет получить доступ к элементам DOM;
- режим разработки предоставляет более подробные сообщения об ошибках для анализа шаблонов.
-
Улучшения:
- элементы, объявляющие атрибут slot, могут иметь идентификатор в шаблоне;
- атрибут slot удаляется из DOM-представления элемента, когда он объявляется в шаблоне;
- по умолчанию $event не добавляется автоматически к параметрам событий, когда они явно объявлены как пустые;
- переходные эффекты сохраняются при очистке всех элементов для команды for;
- избыточные текстовые узлы автоматически удаляются при деконструкции компонента.
-
Исправления ошибок:
- быстрое изменение элементов в команде for с переходом могло вызвать ошибки времени выполнения, если дочерний элемент не существовал;
- двусторонняя привязка не обновляла данные владельца, когда дочерние компоненты устанавливали данные во время инициализации;
- входные данные могли подвергаться атакам XSS при двусторонней привязке.
3.3.0
Добавлена поддержка тегов template, которые не рендерят элементы, а только их содержимое. Поддержка через native modifier позволяет напрямую связывать события с компонентом и его корневым элементом.
-
Новые возможности:
- поддержка capture modifier для привязки событий на этапе захвата;
- поддержка scoped slot;
- поддержка transition механизма;
- slot поддерживает if и for директивы;
- на компоненте можно получить доступ к содержимому, вставленному в слот;
- добавлен метод nextTick для компонента, который позволяет избежать зависимости от san;
- в main раскрыто перечисление NodeType;
-
Изменения:
- из parseTemplate удалён родительский элемент ANode, что позволило использовать JSON.stringify после устранения циклических ссылок;
- у ANode изменены имена дочерних узлов с childs на children;
- статифицирован объект LifeCycle, в main больше не раскрывается класс LifeCycle;
-
Оптимизация:
- операции push и unshift для данных возвращают новую длину массива, как в JS Array;
- добавлено сообщение об ошибке при попытке связать событие с несуществующим методом;
- при изменении массива с нецифровыми индексами добавлена проверка, которая предотвращает ошибки при обновлении представления и повышает надёжность;
-
Исправление ошибок:
-
ssr может некорректно отображать данные при многократном цикле;
-
input[type=file] не поддерживает атрибут multiple из-за проблемы с написанием;
-
если значение, связанное с input value, не определено, форма не будет автоматически преобразована в пустую строку;
-
и другие.
Это неполный перевод текста. В ответе сохранены форматирование и некоторые специальные символы. Новые возможности:
- раскрытие нового API для удовлетворения потребностей в создании собственной системы рендеринга компонентов:
- {Object} ExprType;
- {Class} LifeCycle;
- {ANode} parseTemplate({string} source);
- {Object} parseExpr({string} source).
Новые возможности:
- добавлена поддержка передачи сообщений в компонентах дерева.
Новые возможности:
- поддерживается использование (?:) условного выражения.
Новые возможности:
- добавлена поддержка вычисляемых свойств.
Новые возможности:
- добавлена поддержка создания часто используемых тегов SVG.
Новые возможности:
- с помощью строки 'self' можно ссылаться на себя как на дочерний компонент в свойстве components.
Новые возможности:
- свойства template, filters, components, computed и static теперь поддерживаются в свойствах класса компонента.
Новые возможности:
- класс и стиль, объявленные вне компонента, объединяются с корневым элементом компонента.
Новые возможности:
- метод data.get поддерживает получение всех данных без параметров.
Оптимизация:
- структура результатов анализа шаблона была оптимизирована:
- предварительный анализ текста;
- удаление лишних атрибутов из текстовых узлов: childs, binds, directives, events и т. д.;
- вычисление фактических значений числовых и строковых выражений на этапе анализа;
- объединение accessor и ident в accessor;
- оптимизация структуры бинарных выражений, сохранение информации о типе, но не сохранение функции оператора.
Оптимизация:
- процесс обновления представления был оптимизирован.
Оптимизация:
- при вложении компонентов информация о привязке внешних дочерних компонентов не отображается в свойствах основного элемента дочернего компонента.
Оптимизация:
- когда данные владельца изменяются, обновление данных внутренних дочерних компонентов становится более детализированным.
Оптимизация:
- статические текстовые узлы, которые не требуют обновления, игнорируются.
Оптимизация:
- улучшен способ обработки значения select и обработки свойства default value опции.
Оптимизация:
- обработка событий DOM и пользовательских событий разделена, чтобы избежать неожиданного запуска событий из-за всплытия DOM.
Исправление ошибок:
- некоторые самозакрывающиеся теги (например, br, hr) отображались неправильно.
Исправление ошибок:
- события элементов могли быть привязаны дважды.
Исправление ошибок:
- внешние события с тем же именем, что и у корневого элемента компонента, могут перекрывать события, связанные с компонентом.
Исправление ошибок:
- если атрибут тега пуст, это может привести к ошибкам разбора.
Исправление ошибок:
- префикс xxx- в имени атрибута тега удаляется.
Исправление ошибок:
- атрибуты тега без значения (например, disabled) игнорируются.
Исправление ошибок:
- ошибки вывода возникают, когда значение атрибута тега представляет собой многострочную строку.
Исправление ошибок:
- в старых версиях IE фрагменты HTML были неправильно объединены.
Исправление ошибок:
- при использовании $event в fire без параметров или ложных параметров для пользовательских событий компонента он будет получать событие DOM Event.
Исправление ошибок:
- операции массива данных, ссылающиеся на индекс массива, могут не обновлять представление.
Исправление ошибок:
- операции с массивом данных, ссылающиеся на длину массива, могут не обновить представление.
Исправление ошибок:
- многократное изменение значения выражения if в одном цикле может вызвать ошибки обновления представления.
Исправление ошибок:
- многократные изменения значения выражения for или внутренней структуры в одном цикле могут вызвать ошибки выполнения скрипта.
Исправление ошибок:
- ref метод не может получить компоненты, расположенные внутри цикла for.
Исправление ошибок:
- ref метод не может получить компоненты, находящиеся внутри слота.
Исправление ошибок:
- начальное значение textarea не установлено правильно.
Исправление ошибок:
- содержимое textarea отображается некорректно. В системе компонентов, управляемых данными, следует использовать связанные данные и игнорировать внутреннее содержимое.
Исправление ошибок:
- ошибка скрипта возникает при обновлении значения элемента, который уже был удалён.
Исправление ошибок:
- одиночный фильтр интерполяции не работает при привязке.
Исправление ошибок:
- доступ к динамическим свойствам модели с родительским элементом может не дать ожидаемого результата.
Исправление ошибок:
- двунаправленная привязка выражения, содержащая ссылку на элемент индекса, может не работать.
Исправление ошибок:
- шаблон и компоненты компонента могут не компилироваться при наследовании, вместо этого используется результат компиляции родительского класса.
Исправление ошибок:
- слот компонента в цикле, содержимое слота отображается неправильно.
Исправление ошибок:
- во время компиляции дочернего компонента внешняя структура, переданная в качестве параметра, заменяется, и неожиданные результаты могут возникнуть при повторном рендеринге в среде слота.
Опубликовать ( 0 )