Hyphenator.js или Hypher?

Я хотел бы реализовать перенос на стороне клиента через JavaScript на некоторых больших текстах на моем сайте. (Я знаю о переносе CSS3 и буду использовать его, если он доступен, но обычно недоступен.)

Я использовал Hyphenator.js, и он работает хорошо, но очень большой (моя оптимизированная, скомпилированная сборка с просто английским языком выходит на 106 КБ) и довольно медленно. Он большой и достаточно медленный, что я рассматриваю возможность переноса переносов вообще - это просто роскошь в любом случае.

Но недавно я столкнулся с тем, что кажется альтернативой: Hypher. Что меня озадачивает, так это то, как Гифер может меня намного меньше и делать то же самое. Мне интересно, может ли кто-нибудь объяснить это.

Хорошо ли работает Hypher? Есть ли причина использовать Hyphenator.js вместо этого? В Hypher readme есть ссылка на Hyphenator.js внизу страницы, но ни один из них не объясняет связь между этими проектами.

Или: есть ли у кого-нибудь мнение о наиболее эффективной переносимости на стороне клиента?

Ответ 1

Основная причина, по которой Гипер настолько мала, сравнительно то, что он полагается на загруженный извне jQuery для интеграции страниц. Hyphenator.js полностью автономна и, следовательно, должна включать в себя путь более шаблона для манипулирования HTML в браузерах. (Они даже повторно реализуют некоторые функции jQuery.)

Чтобы быть справедливым, Hyphenator.js является относительно старым проектом, который не был полностью переписан на пути использования существенных улучшений браузера. (Обратите внимание, что они с гордостью поддерживают Firefox 3.0.) И, что еще более полезно, Hyphenator.js имеет гораздо больше мелкозернистых настроек.

Если вы уже используете jQuery и не используете расширенный API Hyphenator.js, переключение на Hypher может быть полезным.

Ответ 2

Я взглянул на переносы в JavaScript и нашел следующие четыре библиотеки:

  • hy-phen: библиотека чистого JavaScript, разработанная Евгением Тюриным с 2016 года с использованием лицензии MIT. Вам предлагается функция JavaScript, которую можно вызывать для переноса строк. Вам нужно только включить основной файл JavaScript и нужный языковой файл, чтобы использовать его.
  • Hypher: библиотека чистого JavaScript, разработанная Брэмом Стейном с 2011 года с использованием лицензии "Three Clause BSD". Вам предлагается два метода JavaScript, которые можно вызывать для переноса строк. Его можно установить только с помощью Node.js или jQuery.
  • Hyphenator.js: это реализация JavaScript/HTML, разработанная Mathias Nater с 2008 года с использованием лицензии MIT. Проект прекращен с 2018 года. Включить его в свой проект не так просто - сначала необходимо использовать инструмент Merge & Pack, чтобы создать файл JavaScript, который затем можно будет включить. Он автоматически сканирует страницу HTML и добавляет переносы к выбранным элементам HTML. Не существует функции JavaScript, которую можно вызвать для переноса строк вручную.
  • Hyphenopoly.js: является последующим проектом Hyphenator.js, разработанным с 2016 года Матиасом Натером с использованием лицензии MIT. В нем отсутствуют некоторые функции Hyphenator.js, и его немного проще использовать. Тем не менее, он работает так же, то есть нет функции JavaScript, которую можно вызывать для переноса строк вручную.

Все четыре библиотеки используют алгоритм переноса слов, разработанный Франклином М. Ляном, который использует шаблоны соответствия, чтобы найти точки переноса в словах. Этот алгоритм не дает 100% правильных переносов, как сказал Лян в своей диссертации:

Эти шаблоны находят 89% тегов в списке слов в карманном словаре, по сути, без ошибок.