我应该使用哪个JavaScript库进行客户端连字?

时间:2013-06-02 19:07:18

标签: javascript performance hyphenation

我想在我网站上的一些大文本上通过JavaScript实现客户端连字。 (我知道CSS3连字符,并且会在可用时使用它,但它通常不可用。)

我一直在使用Hyphenator.js,它运行良好,但非常大(我的优化,编译版本只有英文版本达到106 KB)而且非常慢。它足够大而且速度慢,我正在考虑完全删除连字符。无论如何,这只是一种奢侈。

但最近我遇到了似乎是另类的选择:Hypher。令我感到困惑的是Hypher如何让我这么多更小并做同样的事情。我想知道是否有人可以解释这一点。

Hypher也能正常工作吗?是否有任何理由使用Hyphenator.js? Hypher的自述文件有一个指向Hyphenator.js at the bottom of the page的链接,但没有一个文本解释了这些项目之间的联系。

是否有人对最有效的客户端连字符有意见?

2 个答案:

答案 0 :(得分:9)

Hypher相对较小的主要原因是它依赖于外部加载的jQuery进行页面集成。 Hyphenator.js是完全独立的,因此必须包含更多样板来跨浏览器操作HTML。 (他们甚至重新实现了一些jQuery功能。)

公平地说,Hyphenator.js是一个相对较旧的项目,在使用大量浏览器改进的过程中并未完全重写。 (请注意,他们自豪地支持Firefox 3.0。)而且,更为慈善的是,Hyphenator.js还有更多finely-grained settings

如果您已经在使用jQuery,并且没有使用Hyphenator.js的高级API,那么切换到Hypher可能是值得进行的改进。

答案 1 :(得分:3)

我查看了JavaScript中的连字符,发现了以下四个库:

  • hy-phen:是Yevhen Tiurin自2016年以来使用MIT许可证开发的纯JavaScript库。提供了一个JavaScript函数,您可以调用该函数来连字符。您只需要包括主要的JavaScript文件和所需的语言文件即可使用。
  • Hypher:是Bram Stein自2011年以来使用“ Three Clause BSD”许可开发的纯JavaScript库。为您提供了两个JavaScript方法,您可以调用它们来对字符串进行连字符处理。只能使用Node.js或jQuery安装。
  • Hyphenator.js:是Mathias Nater自2008年以来使用MIT许可证开发的JavaScript / HTML实现。 该项目自2018年起终止。将其包含到您的项目中并不是那么简单-您需要首先使用Merge&Pack工具创建一个JavaScript文件,然后可以将其包含在内。它会自动扫描HTML页面并将连字符添加到选定的HTML元素。没有可以调用的JavaScript函数来手动将字符串连字符。
  • Hyphenopoly.js:是Hyphenator.js的后续项目,自2016年以来由Mathias Nater使用MIT许可证开发。它删除了Hyphenator.js的某些功能,并且使用起来更简单。不过,它的工作方式相同,这意味着您没有可调用的JavaScript函数来手动将字符串连字符。

所有四个库都使用Franklin M. Liang开发的断字算法,该算法使用匹配模式来查找单词中的断字点。如Liang的thesis中所述,该算法无法提供100%正确的连字号:

  

这些模式可以在袖珍词典单词列表中找到89%的连字符,基本上没有错误。