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

vflash 23.06.2013 19:54

Цитата:

Сообщение от tenshi
А зачем указывать глобальный адрес? Чем локальные-то не угодили?

вот создал ты модуль button и я создал свой button . И вдруг случилось что нужно использовать их оба. и пойдика разрули эту ситуацию

Цитата:

Сообщение от tenshi
Вручную - это же страшный геморрой. Неужели это никак не автоматизировать?

как ? гадать на кофейной гуще ?


Цитата:

Сообщение от tenshi
Для примера, мой сборщик ...

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

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

tenshi 24.06.2013 22:51

В чём проблема переименовать один из них, раз уж сразу мы не позаботились использовать вендорные префиксы?

Есть разные способы. Например, у меня анализируются xslt шаблоны и подключаются только те модули, что реально используются.

Вообще я вроде рассказывал. Но я так понимаю критика и свежие идеи тебя не интересуют. Ок.

Знаешь, попробовав лучшее, на такие велосипеды уже не смотришь)

vflash 25.06.2013 09:43

Цитата:

Сообщение от tenshi
В чём проблема переименовать один из них, раз уж сразу мы не позаботились использовать вендорные префиксы?

проблема в том что эти модули используются к примеру еще где-то. А вендорные префиксы глаза мозолят, мало кто их любит.

Цитата:

Сообщение от tenshi
Есть разные способы. Например, у меня анализируются xslt шаблоны и подключаются только те модули, что реально используются.

ну и чем это отличается. в шаблоне связи ведь руками прописал.

Цитата:

Сообщение от tenshi
Знаешь, попробовав лучшее, на такие велосипеды уже не смотришь)

ну да, своя рубашка ближе

tenshi 25.06.2013 22:36

А без префиксов получаем кашу. В разных местах под одним именем скрываются совершенно разные сущности.

Отличается тем, что я делаю это один раз - по факту использования. А ты в двух местах: там где подключаешь и там где используешь.

Я был бы счастлив, если бы мне не приходилось писать самому столь базовые вещи.

vflash 26.06.2013 09:12

Цитата:

Сообщение от tenshi
Отличается тем, что я делаю это один раз - по факту использования. А ты в двух местах: там где подключаешь и там где используешь.

вот стоило бы сперва разобраться, а уже потом писать "ты все делаешь не так".
структура описана только в json файле. в одном модуле может быть множество js файлов, но зависимости опишу только один рас в одном месте.

tenshi 28.06.2013 01:39

Когда ты пишешь в файле:
var button = new My.Component('button')
То неявно объявляешь зависимость от модуля My.Component
Этот код зависит от этого модуля и если он не будет предварительно подключен, то код выдаст ошибку.

И все такие зависимости ты дублируешь в json-описании.

vflash 02.10.2013 19:39

релиз v0.2.10

Реализовал еще один вариант сборки.
Идея такая - собирать проект не в один js(css) файл, а в два. Первый файл это ядро и оно общее на всех страницах. Второй это код только для определенной странице.

Выглядит примерно это так:
1) собираем модуль-ядра
http://scmod.vflash.ru/sandbox?src=h...s/replace.json
2) собираем модуль-страницы исключив из него модули-ядра . (параметр &core=[url])
http://scmod.vflash.ru/sandbox?src=h...ore/zcore.json

На страницу подключаем оба результата

Madzi 02.10.2013 20:58

Поздравляю. Ещё немного и вы переизобретёте недо-YUI :)
А чем вам require.js не угодил ?

vflash 02.10.2013 22:24

у YUI другая архитектура.

Цитата:

Сообщение от Madzi
А чем вам require.js не угодил ?

он только для js . только асинхрон, костыль на костыле,

вот к пример сайт http://www.sochi2014.com/ , эталон . куча js и css файлов подключены сами по себе, без каких либо зависимостей.
Переписывать это дело на AMD гиблое дело, проще всех нах.. послать и уволиться.

с scmod все просто. собираем js и css в списочек, и первый шаг к грамотной организации файлов сделан.
{
	"nowrap": true,

	"script": [
		  "/Content/js/lib/head.min.js"
		, "/Content/js/lib/modernizr.js"
		, "/Content/js/lib/jquery.js"
		, "/Content/js/lib/json.js"
		, "/Content/js/lib/jquery.jscrollpane.js"
		, "/Content/js/lib/jquery.fader.js"
		, "/Content/js/util.js"
		, "/Content/js/articul/tools.js"
		, "/Content/js/storejs/store_json2.min.js"
		, "/Content/js/adriver/adriver.core.2.js"
 
		, "/Content/js/articul/announce.js?t=635047491833716637"
		, "/bitrix/components2/Articul.Sochi.Components/QuoteBlockHomepageComponent/templates/.default/script.js?t=635029161642020053"
		, "/bitrix/components2/Articul.Sochi.Objects/MapHomepageComponent/templates/.default/script.js?t=634964358382536565"
		, "/Content/js/articul/event-scroller.js?t=635095805248728492"
		, "/Content/js/lib/jquery.mousewheel.js?t=635025631538839519"
		, "/bitrix/components2/Articul.Sochi.Twitter/TweetListComponent/templates/.default/script.js?t=635013476703264764"
		, "/Content/js/articul/blogs.js?t=635023237566266204"
		, "/Content/js/articul/polls.js?t=635029161638739013"
		, "/bitrix/components2/Articul.Sochi.Components/InterestingBlockHomepageComponent/templates/.default/script.js?t=635029161641893108"
		, "/Content/js/articul/partners-banners.js?t=635029161638729248"
	],
	
	"styles": [
		 "/Content/css/main.css"
		,"/Content/css/articul/pit.css"
		,"/Content/css/mm.css"
		,"/Content/css/index.css"
	]
}

Madzi 02.10.2013 22:33

Почему у YUI другая архитектура ?
Я объявляю модуль, он находится в своей песочнице. Могу экспортировать из него нужные мне объекты в глобальное окружение. Указываю от каких модулей зависит текущий и модули будут сами подгружены. Могу указать, что у модуля есть css и тогда css будет подгружена. Могу указать что модуль мультиязычный и язык сам будет определён и подгружен, если существует такой языковой файл. Плюс я могу получить все модули одним файлом в одном запросе.


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