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

vflash 02.10.2013 23:01

Madzi,
если сравнивать камаз и жигули, то да. и тот и этот автомобиль.

у YUI больше с AMD общего

Madzi 02.10.2013 23:04

Не улавливаю аналогии.
Исходная задача - структурировать файлы (при разработке больших проектов). И в этом направлении я и сравниваю...

vflash 02.10.2013 23:31

YUI,AMD - на клиенте
scmod - веб сервис

YUI,AMD - асинхронное подключение js файлов (разработка)
scmod - не асинхронное подключение js файлов (разработка)

YUI,AMD - один модуль , один js файл
scmod - один модуль , сколь угодно js файлов

YUI,AMD - область видимости кодишь сам
scmod - область видимости делает автоматом весь файл

YUI,AMD - строгий режим нужно выставлять самому
scmod - строгий режим делает автоматом

YUI,AMD - подключить старый код без доработки нельзя
scmod - подключить старый код без доработки можно

YUI,AMD - собирать проект в два файла не умеет
scmod - собирать проект в два файла умеет

Madzi 02.10.2013 23:51

Какие-то у вас не правильные сведения :)
Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - на клиенте
scmod - веб сервис

YUI - работает как на клиенте, так и на сервере Node.js
У Yahoo ещё на его базе проект Mojito есть, когда сервер сам распределяет код, который будет выполняться на нём и на клиенте. На слабых клиентах - мало кода (основной код выполняется на сервере) и наоборот.

Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - асинхронное подключение js файлов (разработка)
scmod - не асинхронное подключение js файлов (разработка)

Есть как асинхронное так и синхронное подключение файлов и несколько способов управления ими. + есть ленивая загрузка скриптов, т.е. можно загрузку прописать внутри скрипта в нужном месте и если до этого места логика не дойдёт, то скрипт не загрузится.

Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - один модуль , один js файл
scmod - один модуль , сколь угодно js файлов

Можно собрать несколько модулей в один js файл, но зачем.

Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - область видимости кодишь сам
scmod - область видимости делает автоматом весь файл

Область видимости в YUI определяется границей модуля:
// Модуль YUI
YUI.add('test', function (Y) {
//... песочница, ограничивающая код
});


Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - строгий режим нужно выставлять самому
scmod - строгий режим делает автоматом

Строгий режим по-умолчанию стоит в компрессоре (yuicompressor), который сжимает скрипты перед продакшеном (обычно используют *-min.js файлы).

Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - подключить старый код без доработки нельзя
scmod - подключить старый код без доработки можно

Почему нельзя - можно. Вставляешь в песочницу и всё ок.

Цитата:

Сообщение от vflash (Сообщение 274800)
YUI,AMD - собирать проект в два файла не умеет
scmod - собирать проект в два файла умеет

Можно собрать проект в любое количество файлов. Хоть отдать каждый файл по отдельности, хоть сборкой. Зависит только от настроек серверной части.

tenshi 03.10.2013 00:20

> Строгий режим по-умолчанию стоит в компрессоре (yuicompressor), который сжимает скрипты перед продакшеном (обычно используют *-min.js файлы).

При разработке код должен быть максимально приближен к боевому с точностью до эквивалентных преобразований (например, безопасная минификация). Включать стрикт режим только для релиза - всё равно что ходить с заряженным пистолетом у виска

Madzi 03.10.2013 00:22

Цитата:

Сообщение от tenshi (Сообщение 274814)
> Строгий режим по-умолчанию стоит в компрессоре (yuicompressor), который сжимает скрипты перед продакшеном (обычно используют *-min.js файлы).

При разработке код должен быть максимально приближен к боевому с точностью до эквивалентных преобразований (например, безопасная минификация). Включать стрикт режим только для релиза - всё равно что ходить с заряженным пистолетом у виска

Никто не мешает писать так:
YUI.add('test', function (Y) {
    'use strict'
    //... код ...
});

Просто иногда попадается legacy код, на который легче закрыть глаза (отключить strict), чем переписать его. Поэтому опоциональность скорее плюс, чем минус.

vflash 03.10.2013 01:24

Цитата:

Сообщение от Madzi
Строгий режим по-умолчанию стоит в компрессоре (yuicompressor), который сжимает скрипты перед продакшеном (обычно используют *-min.js файлы).

речь про 'use strict' , и он больше нужен для разработки чем для продакшена.
'use strict' частенько забывал добавить в код. а потом долгие поиски где что не работает. Отсюда и решение чтоб он по умолчанию всегда был включен. опционально также могу и выключить


имхо наш диалог путь в некуда. У меня не достаточно познаний в библиотеке YUI чтоб объективно вести диалог по поводу этой библиотеке. Судить могу только по примерам, которые мне сильно напоминают AMD.

Код AMD я изучал и ничего кроме костылей я там не увидел.
Асинхронная природа и необходимость ручного оборачивания модуля считаю критичной причиной не рассматривать AMD для проектов.

vflash 03.10.2013 01:36

Цитата:

Сообщение от Madzi
Почему нельзя - можно. Вставляешь в песочницу и всё ок.

как указать что этот файл зависит от других модулей но при этом не изменяя его ?

DjDiablo 03.10.2013 02:34

vFlash.

А мне нравится ход твоих мыслей :)
Я примерно к похожим выводам приходил.

Но вот только для девелоперской версии, одним файлом отдавать не надо, так как отлаживать большой файл неудобно. Тем более его не стоит сжимать.

А вот в продакшене как раз одним сжатым файлом надо, и желательно сжатым предварительно.

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

Что то вроде компилятора для продакшена (возможно на базе grunt) ,
и для девелоперов какой то загрузчик на клиенте который умеет забирать файлы описанные в json.
Как то так я себе это вижу.

vflash 03.10.2013 03:02

DjDiablo,
есть три основные команды sandbox, scripts, styles

sandbox как рас и есть дивелоперская версия. это небольшой js файл который использует document.write для вставки всех js и css с заранее подготовленной последовательностью. js при этом подключаются не на прямую а через специальное прокси которое немного модифицирует файл, но сохраняет положение строк как у оригинала.

document.write('...') нужен чтоб с одной стороны все было синхронно, с другой чтоб загрузка была в несколько потоков.


вот sandbox
http://scmod.vflash.ru/sandbox?src=h...s/replace.json

вот пример как выглядит js-файл после прокси
http://scmod.vflash.ru/file/6jyfv5/m...cram_notify.js


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