TinyMCE: возможна ли упаковка всех файлов вместо их динамической загрузки?

Я пытаюсь заставить TinyMCE работать. Я попробовал это, используя обычный метод включения tiny_mce.js, а затем с помощью tinymce.init(...), и это работает. Затем я попробовал tiny_mce.gzip.js + компрессор php, и это сработало, но очень медленно.

Теперь я уже упаковал свои файлы CSS и JS в один из них со всеми моими файлами, объединенными вместе. В случае Javascript они также минимизированы.

В обоих случаях они имеют версию с отметкой времени одного из файлов, поэтому у меня есть такие URL-адреса:

/скрипт/скрипт.1233454569.js

который перенаправляет на файл PHP, который либо обслуживает кешированную версию, либо создает кешированную версию (при необходимости) и обслуживает ее. Он добавляет заголовки с истекающим сроком действия и выполняет сжатие gzip и в основном работает хорошо.

Я хочу встроить крошечный mce в этот механизм, но это оказывается болезненным. Порядок, кажется, имеет значение. В настоящее время у меня есть:

  • крошечный_mce.js
  • myscript.js
  • default_editor.js (из простой темы)
  • en.js (то же самое)

но он выдает «u is undefined», для которого я не смог найти подходящего ответа в Google. Это действительно раздражает. Есть ли у кого-нибудь опыт в этом?

Есть ли другие редакторы, которые больше подходят для упаковки, как я описал выше, чем для навязывания вам своих собственных схем (что меня бесконечно раздражает)?


person cletus    schedule 26.03.2009    source источник


Ответы (3)


Я пытался сделать то же самое и потратил слишком много времени на попытки. В конце концов, я остановился на использовании компрессора GZip, предоставленного TinyMCE, и сосредоточился на объединении файлов CSS и изображений для того, что мне было нужно. Проблема в том, что TinyMCE огромен, он динамически загружает нужные ему файлы и не использует существующую библиотеку JavaScript, поэтому в конечном итоге он копирует большую часть одного и того же кода, если вы уже используете какую-либо библиотеку. FCKEditor был единственным другим редактором, который, по моему мнению, обладал такими же функциями и совместимостью с браузерами, но он не выглядел это должно было быть проще с точки зрения интеграции в мою схему кэширования (которая звучит похоже на вашу), и я думаю, что лицензирование не позволило мне выбрать. Вы можете просмотреть список редакторов, доступных здесь, но мне показалось, что эти два редактора были лучшими из этого списка. В конце концов, я решил использовать TinyMCE и добавил в свой список дел создание WYSIWYG-редактора для MooTools, так как это JavaScript-фреймворк, который я чаще всего использую.

Если бы вы взялись за это, я бы предложил выяснить каждый скрипт, который нужен вашей конкретной реализации TinyMCE, объединить их по порядку, а затем изолировать и закомментировать код, загружающий каждый файл. Если вы смелы, вы можете попробовать упаковать объединенный файл. Если вы заставите его работать, я хотел бы знать.

person VirtuosiMedia    schedule 26.03.2009
comment
Я в основном следовал логике (или пытался) метода сжатия gzip, чтобы получить правильный список файлов в правильном порядке. Я все еще должен что-то упустить. Это раздражает. Я ненавижу, когда что-то слишком негибкое, чтобы его можно было просто статически предварительно загрузить. - person cletus; 26.03.2009
comment
Я тоже это пробовал. Между этим и репликацией кода я решил, что моим возможным решением будет написание моего собственного. Однако в качестве другого варианта вы можете изучить редактор, который использует Wordpress. Это может быть TinyMCE, но он довольно быстрый. - person VirtuosiMedia; 26.03.2009
comment
Вы также можете попробовать посмотреть в каждом файле, который вызывает файл gzip, чтобы увидеть, загружают ли они какие-либо дополнительные файлы (что, я подозреваю, они делают). В частности, в файле tiny_mce_src.js выполните поиск файла:, что приведет к ряду комментариев, которые могут указывать на вызываемые файлы. - person VirtuosiMedia; 26.03.2009
comment
На второй взгляд, эти комментарии могут быть не тем, что я думал, они могут быть просто тем, как он разбивает это. - person VirtuosiMedia; 26.03.2009
comment
После этого я сделал еще один шаг и проанализировал журналы доступа Apache, чтобы увидеть, что вызывается, но, похоже, вы не можете просто упаковать много. Похоже, что некоторая инициализация/упорядочение важна, например, перед загрузкой тем. Раздражает. - person cletus; 27.03.2009
comment
На самом деле я не подписывался на форум TinyMCE и не спрашивал, потому что кажется, что модератор там действительно бесполезен для множества разных вопросов, но это тоже может быть вариантом. Если они не знают, в каком порядке вызываются файлы, что ж... - person VirtuosiMedia; 27.03.2009
comment
Однако я понял, что это не только порядок, но и время, например, объект tinymce должен выполнить определенную инициализацию, прежде чем он вызовет default_editor.js и т. д., или он просто умирает, поскольку эти сценарии должны полагаться на определенные вещи. уже сделано. - person cletus; 27.03.2009
comment
Я нашел эту ветку, немного объясняющую их процесс, но она не предлагает много помощи: tinymce.moxiecode.com/punbb/viewtopic.php?id=10777 Однако эта тема может быть более полезной: tinymce.moxiecode.com/punbb/viewtopic.php?id=4937 - person VirtuosiMedia; 27.03.2009

Я также попытался объединить TinyMCE в один минимизированный скрипт, вот что я сделал, чтобы заставить его работать:

в tiny_mce_src.js измените эту строку...

if (n.src && /tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)) {

быть либо...

if (n.src && /YourFullScriptName.js/.test(n.src)) {

или даже просто часть имени скрипта...

if (n.src && /ullScriptNa/.test(n.src)) {

Это та строка, которая обрабатывает baseUrl, чтобы она могла загружать все остальные файлы, которые нужны TinyMCE. Дело в том, что из-за лицензии мы не можем этого делать. У меня была некоторая надежда, добавив это перед объединенным файлом tiny_mce.js...

var tinyMCEPreInit = {base : 'tinymce/jscripts/tiny_mce/'};

следуя совету Спока, но я похоже, это тоже не работает. Единственная другая вещь, о которой я могу думать, поскольку мы используем Prototype, — это динамическая загрузка скрипта tiny_mce.js или tiny_mce_gzip.js, а затем инициализация текстовых областей, которые мы хотим оттуда. Но я далек от того, чтобы заставить это работать.

Надеюсь это поможет,

Ваше здоровье,

DJDaveMark

person Community    schedule 03.05.2009
comment
var tinyMCEPreInit может быть window.tinyMCEPreInit - person huyz; 21.12.2012
comment
var tinyMCEPreInit = {база: 'tinymce/jscripts/tiny_mce/', суффикс: '.min', запрос: ''}; Это работает для меня. - person TechieBrij; 06.03.2018

Я запустил Gzip Compressor и подключился к Fiddler в процессе рендеринга.

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

Грязный, но рабочий

person Community    schedule 13.07.2009