Собрался мыслями и начал писать свою CMS. Выбор JavaScript фреймворка пал на небезызвестный ExtJS. После написания контроллера загрузки модулей возник вопрос: не сильно ли будет загружаться CPU пользователя при такой модели загрузке модулей: [js] // Функция загрузки модуля после выбора из главного меню function loadModule() { if(!Ext.get(this.moduleName)) { // Если модуль не загружен, загружаем. Ext.Ajax.request({ waitMsg: 'Please wait...', url: '/admin/module/', params: { module: this.moduleName, }, success: function(response){ try { // Вот это место меня беспокоит eval(response.responseText); } catch(e) { Ext.MessageBox.alert('Ошибка','Невозможно загрузить модуль<br /><b>' + e + '</b>'); } }, failure: function(response){ Ext.MessageBox.alert('Ошибка','Внутренняя ошибка приложения.'); } }); } } [/js] Backened: PHP: function module() { if($this->req['module']) { $this->load->view("admin/shell/{$this->req['module']}.js"); } }
Зависит от количества и содержания модулей. Два-три не слишком больших модуля проблем не вызовут, но если их будет с десяток - проще повеситься, чем работать с такой страницей. При разработке своего фреймворка я поступил следующим образом - в отладочном виде модули разбиты по отдельным файлам, подгрузка осуществляется через динамическую вставку тега script (кстати, такой метод менее ресурсоемок по сравению с eval'ом). В продакшн-версии CMS все эти модули при экспорте из SVN объединяются в один файл и пакуются YUICompressor'ом. На клиенте данный файл жестко кешируется. В результате о скорости загрузки скриптов можно забыть