Новая большая версия highlight.js 3.0 увидела свет!

Большая она в первую очередь потому, что highlight.js разросся и стал модульным. Теперь, при указании списка используемых языков только эти языки динамически подгружаются в браузер.

Он (скрипт) давно уже напрашивался на разделение, потому что 35 КБ уже начинают вызывать вопросы, особенно у тех, кому из десятка языков нужно только один-два. А поводом в итоге стало то, что Константин Евдокименко с проекта RibKit сделал подсветку для языков RenderMan Shading Language и RenderMan Interface Bytestream. Меня всегда очень радуют такие моменты, когда к проекту добавляются вещи, о которых я сам и подумать никогда не мог. Так работает open source!

Однако очевидно, что языки эти довольно редки, и я понял, что 40 КБ — это уже слишком много. Поэтому скрипт взялся облегчить:

В итоге ядро скирпта занимает 11 КБ (несжатых).

Кроме того, с версии 2.9 накопился очередной набор улучшений эвристики и исправлений корректности. В частности, наконец стало корректно обрабатываться бэкслешное экранирование в строках Си-подобных языков.

Подключение и использование не изменилось практически никак, за исключением маленькой детали. Функция initHighlighting, которая когда-то очень давно использовалась для инициализации вместо initHighlightingOnLoad больше не работает. Поэтому если кто ее использует — поменяйте.

В любом случае всех призываю обновляться!

Комментарии: 12

  1. Maximbo

    идею свистнул у Script.aculo.us

    Интересная идея. Особенно понравился метод поиска url'а с плагинами поддержки языков :)

  2. Neutrino

    А плагин проапдейтился? :)

  3. FX Poster

    А что там в плагине апдейтить? В плагине только css и сам главный js-файл подключается :)

  4. arty

    про document.write

    если нет возможности загрузить нужные языки другим образом, то это может создать некоторые проблемы при интеграции. Вернее, с одной стороны их будет меньше, потому что все работает само. С другой стороны, применять к ним на сервере такие штуки, как чистка и склеивание в один файл, может стать труднее. Я как раз недавно столкнулся с этой проблемой у tinyMCE.

  5. Pento

    Отличная новость. Качаем!

  6. Иван Сагалаев

    Насколько я помню, другие способы запихивания <script> в DOM сильно отличаются у разных браузеров, и скрипты фактически надо eval'ить вручную. Кроме того, у script'aculo.us'а в комментариях написанно, что Safari им удалось заставить работать только с document.write.

    Но что интересно, склеиванию это не сильно мешает. Можно все файлы затолкать внутрь highlight.js обратно, а дописываемые <script> будут просто звать несуществующие файлы и на этом успокаиваться.

  7. Mourner

    Да, согласен с arty. Лучше вместо document.write вставлять скрипты DOM-методами - createElement, appendChild etc.

  8. Mourner

    Попробовать по крайней мере стоит, а там разберешься, где что не работает - тоже полезно.

  9. Maximbo

    Попробовать сделать через DOM — значит пустить по минному полю конечных пользователей редких броузеров. А уж они , не увидев расцветки, вряд ли найдут куда писать о баге.

    И чем всё же плох document.write (кроме несовместимости с XHTML) ?

  10. JB

    Иван, спасибо за плагин. Но не смог подключить его к Wordpress (последнему). Плагин активировал в админке. Вызов джаваскрипта в хедере вставил. В тексте сообщения пишу

     мой код
    

    Но ничего не подсвечивается.. Помогите, пожалуйста.

  11. Иван Сагалаев

    У меня для highlight.js есть форум: http://softwaremaniacs.org/forum/viewforum.php?id=6

    Пожалуйста, напишите туда, только лучше сразу со ссылкой на страницу, где оно не работает. Попробуем разобраться.

  12. Максим

    Ещё одна реализация подсветки кода, теперь от Гугла :-), пример: http://google-code-prettify.googlecode.com/svn/trunk/tests/prettify_test.html .

Добавить комментарий