Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   модульность для js (https://javascript.ru/forum/project/28264-modulnost-dlya-js.html)

Madzi 03.10.2013 08:54

Цитата:

Сообщение от vflash (Сообщение 274824)
как указать что этот файл зависит от других модулей но при этом не изменяя его ?

YUI.add('module-name', function (Y) {
// ... текст модуля ...
}, 'version', {
    lang: ['ru'], // для каких языков есть языковые файлы
    requires: [
        'some-module',... // модули от которых зависит данный модуль.
   ]
    skinnable: true // присутствует CSS
});

Зависимость модулей может быть иерархическая.
Т.е.
например:
* dom
* base
* core
* strings
В модуле dom указываются только base и strings, а в base - core.

vflash 03.10.2013 09:28

Цитата:

Сообщение от Madzi (Сообщение 274838)
YUI.add('module-name', function (Y) {
// ... текст модуля ...
}, 'version', {
    lang: ['ru'], // для каких языков есть языковые файлы
    requires: [
        'some-module',... // модули от которых зависит данный модуль.
   ]
    skinnable: true // присутствует CSS
});

Зависимость модулей может быть иерархическая.
Т.е.
например:
* dom
* base
* core
* strings
В модуле dom указываются только base и strings, а в base - core.

это по вашему "не изменяя файл" . как думаете что будет если я такой код function XX() {...}; обверну в модуль ? Правильно мы из глобальной функции XX получим локальную сломав всю логику.

Madzi 03.10.2013 09:29

Глобальные функции - зло. Не стоит их использовать в коде.

vflash 03.10.2013 09:49

Цитата:

Сообщение от Madzi
Глобальные функции - зло. Не стоит их использовать в коде.

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

Madzi 03.10.2013 10:47

Цитата:

Сообщение от vflash (Сообщение 274847)
речь не о хорошо или плохо. вы ведь сами пишите что можно делать из файла модуль не изменяя его, и тут же приводите пример в котором его изменяет.

Можно вообще без изменений:
YUI({
groups: {
  'old-scripts': {
    'old-script': {
      base: 'http://...', // Путь к скриптам
      async: false,
      modules: {
        'old-script': {
          path: 'old-script.js', // путь к файлу (относительно указанного выше)
          requires: ['another-old-script'] // файлы от которых зависит данный
        },
        'another-old-script': { // также сюда можно включать CSS файлы
        ...
        }
      }
    }
  }
}
}).use('old-script', function (Y) {
//... Песочница, в которой доступен "старый" код
});

vflash 03.10.2013 14:42

Цитата:

Сообщение от Madzi
Можно вообще без изменений:

допустим что умеет. Но как по вашему то что вы привели как пример это нормальный код ?

Madzi 03.10.2013 15:35

Цитата:

Сообщение от vflash (Сообщение 274903)
допустим что умеет. Но как по вашему то что вы привели как пример это нормальный код ?

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

Но по возможности, конечно, стараюсь избавляться от Legacy кода, так как глобальные переменные/функции - зло, которое неизвестно когда проявит себя.

tenshi 03.10.2013 22:18

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

tenshi 03.10.2013 22:27

как ты отлаживаешь свои сендбоксы? это же нечитаемая портянка. Сравни например с http://wrikeman.hyoo.ru/wman/-mix/in...b.stage=dev.js и http://wrikeman.hyoo.ru/wman/-mix/index.stage=dev.css

tenshi 03.10.2013 22:29

> function(global,module,core,elems,tmpl,__zAgS_)

global и module ещё понятно, но нафига остальные-то навязывать?


Часовой пояс GMT +3, время: 20:39.