Pull to refresh

Comments 29

Ну неужели наконец-то вменяемый способ получить Jade в браузере?
Оно старалось. Причем быстрый Jade :)
Не нашел беглым в взглядом в доках, там есть debug — режим, как в browserify. Т.е чтобы файрбаг показывал ошибки в оригинальных файлах при отладке.
Пока все, что могу предожить для дебага — имена файлов как комментарий к коду, map source попробую прикрутить, но позднее. ИМХО юнит тесты + console.log() вполне решают проблему.
Ну иногда приходится дебажить и чужой код. Но вообще спасибо, попробую как случай подвернется.
Ясно, подумаю в этом направлении, может чего и выйдет.
Фидбек! Фидбек! :)
Я так понимаю что он только парсит страницы на предмет require? Можно ли явно ему задавать список файлов и директорий что нужно включить в bundle?

У меня есть в коде например, что то типа такого
var a = '../routes';
return require(a);

я решил это просто руками указав все что мне нужно (find + grep + аккуратное именования серверной части и клиентской).
Он не «просто парсит страницы», он смотрит в сгенерированный AST кода на предмет наличия лексемы require.

У меня есть в коде например, что то типа такого

Нет, такого мы не поддерживаем, просто в моем стиле кода это не используется. Кстати — профит-то в чем?

Для списка файлов и директорий clinch вряд ли подойдет — основная фишка как раз и была в нативной поддержке vanilla CommonJS из коробки, бо mocha.
Извнияюсь ответил ниже.
Кстати — профит-то в чем?

Так у меня определяются контроллеры, чтобы явно их не поключать они загружаются во время загрузки и подключаются по своим route'ам.

А можно у вас делать синонимы (н-р везде подменить underscore на lodash)? А как включить jquery в бандл (именно клиентский вариант а не тот что в npm)?
они загружаются во время загрузки

Может быть в вашем смысле это чем-то оправдано, но в общем случае динамический require — это ммм… плохая идея.
Во-первых он очень синхронный — там куча всего под капотом происходит с суффиком Sync.
Во-вторых, потому что что-то надо было что-то делать с во-первых — он кеширует все вещи, которые были запрошены, в результате фактически в экземпляре процесса висят все штуки, которые были разрешены.

ИМХО лучшее, что тут можно сделать — сделать контейнер, который будет статически рекверить все, и отдавать отдельные элементы по имени. И подключить этот контейнер в код.

А можно у вас делать синонимы

Надеюсь что понял вопрос верно — да, можно, в конфиге пака есть ключ replacement, он как раз для таких вещей, но тут есть вопрос идеологии, о нем вот ниже.

А как включить jquery в бандл

Как бы идеологически использованиеи именно бандлов, а не какого-то app связано с тем, что clinch скорее аналог component, в том смысле что с его помощью можно делать маленькие виджеты, или кучу разных мелких хелперов. Если надо завернуть целый app — тут overhead не так страшен.
Поэтому немного неверно включать большие либы в бандл, их можно грузить отдельно, или, что правильнее — брать из CDN, а в бандле делать «пустышку», типа такой.

###
This is lodash shim
###

module.exports = @_
Может быть в вашем смысле это чем-то оправдано, но в общем случае динамический require — это ммм… плохая идея.
Во-первых он очень синхронный — там куча всего под капотом происходит с суффиком Sync.

Да я и не утверждаю, что это хорошая идея. Поэтому у меня это и используется только во время загрузки — один раз.
Как бы идеологически использованиеи именно бандлов, а не какого-то app связано с тем, что clinch скорее аналог component, в том смысле что с его помощью можно делать маленькие виджеты, или кучу разных мелких хелперов. Если надо завернуть целый app — тут overhead не так страшен.
Поэтому немного неверно включать большие либы в бандл, их можно грузить отдельно, или, что правильнее — брать из CDN, а в бандле делать «пустышку», типа такой.

Да думаю скорее всего тут вы правы.
ИМХО лучшее, что тут можно сделать — сделать контейнер, который будет статически рекверить все, и отдавать отдельные элементы по имени. И подключить этот контейнер в код.

Разумная идея — надо будет попробовать.
Контейнер примерно так выглядит — di_container.coffee.
Правда это навороченный вариант, с само-разрешением зависимостей, но идея именно такая.
А сложно ли прикручивать свои шаблонизаторы? Мне интересно dust и handlebars.
API для этого пока нет (и там много подумать надо будет), форкнуть и захардкодить — должно быть реально, смотрим здесь, при условии что у них есть аналог прекомпиляции, я их глубоко не копал.
Посмотрел повнимательнее — Handlebars — вроде бы несложно, возможно добавлю в поддерживаемые шаблонизаторы.
С dust как-то мутновато, там идея немного не по формату такой компиляции, так что пока фик знает.
Ну все равно спасибо — на выходных посмотрю на вашу разработку внимательнее.
Good news for everyone! ©

API для сторонних обработчиков будет, постараюсь сегодня выкатить до вечера.
С примером как прикручивается Handlebars.
Хм. Итожя:

Как и грозился — API кастом-процессоров теперь есть.
Неожидано — Handlebars не будет, авторы перемудрили с предкомпиляцией и я его прикрутить тупо не смог :)

Хотя, может у кого-то с API теперь и получится.
И в конце концов справедливость восторжествовала — how to use Handlebars with clinch.

Надеюсь окажется полезным и мой спам еще не задолбал :)
А можно небольшое пожелание? опубликуйте пожалуста модуль скомпилированный в js (=.
PS: Нашел вопрос на SO об этом (если вдруг пригодится)
А… хм, как-то все время вылетает из головы, что не у всех npm install coffee-script -g :)

Точно, перепакую сегодня, спасибо за напоминание.
Done, v 0.2.9 в js варианте, правда из npm пакета я src не выкидываю никогда, потому как у меня тесты на него завязаны.
У меня еще такой вопрос появился — может вы с ним тоже встречались.
Я запихиваю backbone в бандл как зависимость — у него по факту 2 зависимости: underscore и jquery. _ он подключает через require, а $ пробует взять из глобального объекта через this.jQuery, но внутри модуля this это тот же объект что и module.exports — то есть backbone в бандле не может найти jquery потому что выполняется не в констекте глобального объекта. Вы решали такую задачу?
Странно, на живой пример можно посмотреть?

Вообще-то код модуля вызывается в контексте глобали, т.е. this.jQuery должен найтись, если он в глобали есть.
Пруфф — здесь и ниже.

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

Ну, т.е. надо до бандла просто подгрузить на страницу jQuery и все должно сработать.
Ну это не совсем пруф — это у вас так реализовано (впринципе мне кажется что так разумнее — хотя и не так как в node). Просто в node немного не так и поэтому я и спрашиваю:
mac:pipedream den$ node test.js 
true
false
mac:pipedream den$ cat test.js
console.log(this === module.exports);
console.log(this === module);
Извиняюсь я плохо выразился. Я имел в виду, что не с clitch а например в browserbuild или в само node.
Ну, с clinch по идее должно сработать :)

Просто в node немного не так

Да, но делать так же в браузере — получишь ровно то, что туда положил — смысла как мне кажется никакого.
Я вот даже как-то и не знал, что она (node) так себя ведет :)

Sign up to leave a comment.

Articles