Как разделить файлы extjs4 на связанные комплекты - PullRequest
2 голосов
/ 06 февраля 2012

Существует проект Symfony 2 с интерфейсом extjs4.Я начал с пакета extjs, который теперь содержит все приложение extjs.Проблема в том, что с ростом проекта будет трудно управлять.

Я думаю, что лучшим решением было бы переместить весь файл extjs в связанный пакет
(например: в UserBundle все формы, панель, сетка и т. д.) и используйте центральный пакет Extjs для их загрузки.

Как лучше всего организовать проект таким образом?
А как включить файлы js из другого комплекта?
Или я должен создать приложение extjs для каждого пакета (я не уверен, что это будет разумно)?

Ответы [ 2 ]

1 голос
/ 01 мая 2012

Я не уверен, что это лучшая практика, но я знаю, что это работает на ExtJs 4.0.7.

Так, например, у меня есть следующая структура папок:

proj
  index.htm
  proj
    app.js
    app
      view
        SimpleIFrame.js

Итак, в app.js у меня есть следующий код:

Ext.Loader.setConfig(
{
    enabled: true
});
Ext.Loader.setPath('proj.view', './proj/app/view');
Ext.Loader.require([
    'proj.view.SimpleIFrame'
])

В SimpleIFrame у меня есть следующий код:

Ext.define('proj.view.SimpleIFrame', {
  extend: 'Ext.Panel',
  alias: 'widget.simpleiframe',
  ...
  });

Итак, позже в app.js я могу сделать следующее:

var panel = Ext.create('adminClaiming.view.SimpleIFrame', {
  title: 'Hello',
  ...
});

Это позволяет мне разделить весь app.js на отдельные файлы. До тех пор, пока я не понял это, я продолжал получать страшные:

Uncaught TypeError: object is not a function

Что означало, что я забыл вызвать Ext.Loader.setPath.

Теперь не указывайте мне этот следующий бит, но кажется, что если вы удалите Ext.require , тогда SimpleIFrame.js будет загружен в глобальное пространство имен, что на самом деле не то, что вам нужно, но он все еще загружен и работает, что более важно.

Надеюсь, это поможет. И заметьте, я, скорее всего, буду неправ;) и только что повезло в моем случае; что я могу сделать, я все еще n00b.

0 голосов
/ 05 апреля 2012

Вы можете сделать отдельные пакеты с вашими файлами JS внутри Resources / public / js каждого из них.

Затем в свой основной html-шаблон вы можете включить все ваши JS-файлы, используя сборку.

...