Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Bricks -- библиотека и набор правил для построения веб-приложений (https://javascript.ru/forum/project/25486-bricks-biblioteka-i-nabor-pravil-dlya-postroeniya-veb-prilozhenijj.html)

Kolyaj 06.02.2012 23:54

Bricks -- библиотека и набор правил для построения веб-приложений
 
Вам, как всегда, самым первым :)

Был CrossJS, больше нету. Точнее есть пока, но поддерживаться больше не будет. Он переродился в Bricks, взяв из CrossJS всё самое лучшее, а что не взял, возьмёт попозже.

Как написано на github-е, Bricks -- это
Цитата:

Библиотека и набор правил для построения больших, сложных, легко масштабируемых веб-приложений.
Т.е. это не только библиотека, но и набор правил. Конечно, и без соблюдения правил можно построить веб-приложение, но только не большое, не сложное и не легко масштабируемое.

Правила я пока не описывал, а для более быстрого погружения в концепцию сделал пример реализации пятнашек на Bricks. Из описания реализации можно почерпнуть некоторые правила. Пятнашки, кстати, получились в 14 кб со всеми зависимостями.

Ещё раз ссылки:
Сама библиотека: https://github.com/Kolyaj/Bricks
Реализация пятнашек: https://github.com/Kolyaj/Bricks/wik...88%D0%BA%D0%B8
Ветка с исходниками пятнашек: https://github.com/Kolyaj/Bricks/tree/TagGame

Riim 07.02.2012 03:12

А почему _fireEvent в обсервере скрытый?

Kolyaj 07.02.2012 08:34

Потому что снаружи события генерировать не нужно. Они могут только изнутри идти.

Riim 07.02.2012 09:49

Цитата:

Сообщение от Kolyaj
Потому что снаружи события генерировать не нужно. Они могут только изнутри идти.

а зачем так сделано?

Kolyaj 07.02.2012 09:54

А зачем события генерировать снаружи?

B~Vladi 07.02.2012 12:02

Цитата:

Сообщение от Riim
а зачем так сделано?

ИМХО, генерировать события программно - костыль.

Kolyaj, эта библиотека зависит от BuildJS, или можно без него обойтись?
Что за шаблонизатор используется?

Kolyaj 07.02.2012 12:13

Цитата:

Сообщение от B~Vladi
эта библиотека зависит от BuildJS, или можно без него обойтись?

Зависит только на этапе разработки в том плане, что в каждом файле прописано в терминах BuildJS, от каких других файлов он зависит. Если ты подключишь на страницу все нужные файлы в правильной последовательности, то можно обойтись и без BuildJS. Но лучше всё-таки с ним.


Цитата:

Сообщение от B~Vladi
Что за шаблонизатор используется?

Шаблонизатор в свойстве html (и ему подобных)? Модифицированный резиговский, т.е. вставки js-кода в <%%>, но входные данные передаются в this.

<%= this.varname %>

Выведет переменную с экранированием.

<%&= this.varname %>

Выведет переменную без экранирования.

<% if (this.varname) { %>
    <span><%= this.varname %></span>
<% } %>


Т.е. можно вставлять любой js-код, но практика показала, что нужны только for и if.

B~Vladi 07.02.2012 14:34

Цитата:

Сообщение от Kolyaj
Шаблонизатор в свойстве html (и ему подобных)?

Да, про него.

Gamestop 07.02.2012 22:01

извиняюсь за тупой вопрос, но можно по человечески обьяснить(СКАЗАТЬ ПО ДВОРОМУ, ТОЕСТЬ ПО-РУССКИ), что делает эта библиотека? :D

Просто читать эту всю документацию(Боже упаси), плиззз!!!

Мне интересно, но там столько читать надо что всё желание отпадёт, и буду пользоватся обычным js

Вот как JQuery документация, 1 пример и всё понятно.

Предвижу гнев праведных на мне.

Kolyaj 07.02.2012 22:16

Цитата:

Сообщение от Gamestop
что делает эта библиотека?

Сама по себе она ничего не делает. Она помогает делать большие и маленькие веб-приложения. Документации там пока и нет никакой, если не считать JSDoc-и. Есть только пример создания Пятнашек с помощью этой библиотеки.

С jQuery её сравнивать не нужно, она про другое. Если есть тяга к jQuery, можно и его рядом использовать, но обычно это не требуется. Если кратко, то jQuery -- про работу с DOM, Bricks -- про построение сложного или не очень сложного веб-приложения, в котором для работы с DOM можно использовать тот же jQuery, а можно встроенные в Bricks функции.

Gamestop 07.02.2012 22:43

Цитата:

Сообщение от Kolyaj (Сообщение 155975)
Сама по себе она ничего не делает. Она помогает делать большие и маленькие веб-приложения. Документации там пока и нет никакой, если не считать JSDoc-и. Есть только пример создания Пятнашек с помощью этой библиотеки.

С jQuery её сравнивать не нужно, она про другое. Если есть тяга к jQuery, можно и его рядом использовать, но обычно это не требуется. Если кратко, то jQuery -- про работу с DOM, Bricks -- про построение сложного или не очень сложного веб-приложения, в котором для работы с DOM можно использовать тот же jQuery, а можно встроенные в Bricks функции.

а что такое "Сложные веб приложения или неочень" :)

Kolyaj 07.02.2012 22:45

Если ты задаёшь такие вопросы, значит тебе это не надо.

Gamestop 07.02.2012 23:22

Ладно, пойду смотреть примеры и читать документацию, я это спросил не в смысле того что я незнаю что такое "Сложные веб приложения", а что это имеется в вашем случае

with-love-from-siberia 08.02.2012 10:15

Цитата:

Сообщение от Kolyaj
Если кратко, то jQuery -- про работу с DOM, Bricks -- про построение сложного или не очень сложного веб-приложения

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

Kolyaj 08.02.2012 10:20

Цитата:

Сообщение от with-love-from-siberia
поэтому спрашивают что значит термин сложное или не очень сложное веб-приложение.

Это любое веб-приложение. Что такое веб-приложение, надеюсь, объяснять не надо?

Тема, на самом деле, про то, как можно написать пятнашки, используя Bricks. Я прекрасно понимаю, что нужно написать ещё много текста, чтобы всем было понятно, что это и зачем. По мере написания документации, буду кидать сюда ссылки.

with-love-from-siberia 08.02.2012 10:34

Ну так и надо было написать (в Вашей терминологии) - про построение любого веб-приложения. Библиотека же так и называется Bricks - Кирпичи, то есть позволяет строить веб-приложения из кирпичей. Верно?

Цитата:

Сообщение от Kolyaj
По мере написания документации, буду кидать сюда ссылки

Будем ждать. В вики на гитхабе? Или другое место?

Kolyaj 08.02.2012 10:50

Цитата:

Сообщение от with-love-from-siberia
Библиотека же так и называется Bricks - Кирпичи, то есть позволяет строить веб-приложения из кирпичей.

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

Цитата:

Сообщение от with-love-from-siberia
В вики на гитхабе?

Сначала там, да.

Riim 08.02.2012 11:25

Цитата:

Сообщение от Kolyaj
А зачем события генерировать снаружи?

хм, что-то в этом есть, просто непривычно.

Gozar 08.02.2012 15:19

Поддерживаю Gamestop.

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

Начало совсем не радует, хотите начать работать - идите ставьте nodeJS. Лично для меня не причина попробовать библиотеку для создания пятнашек, чтобы ставить nodeJS, который может ещё и не встать у меня без шаманства на 3 дня.

У всех библиотек есть небольшое вступление с простейшим примером использования. Его не хватает.

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

Если результаты не жмуться и обфусцируются можно выложить рабочую игру?

Kolyaj 08.02.2012 15:40

Про описание подхода я всё понимаю, примерно было описано про crossjs http://alljs.ru/crossjs/, но это надо переписывать, чем я и займусь в ближайшее время. Пример было легче сначала написать.

Демо с пятнашками не выкладывал, т.к. пока не решил, а где все эти демки будут лежать. Но можно и здесь пока положить
<!doctype html>
<html>
<head>
    <title>Пятнашки</title>
    <style type="text/css">
        body {
            font-family: arial, sans-serif;
            font-size: 13px;
        }
    </style>
    <script type="text/javascript"
            src="https://raw.github.com/Kolyaj/Bricks/TagGame/lib/taggame.pack.js"></script>
</head>
<body>
<div id="tag"></div>
<script type="text/javascript">
    var game = new Tag({
        renderTo: 'tag'
    });
    game.addEventListener('win', function() {
        alert('Круто, вы разложили их!');
    });
</script>
</body>
</html>


NodeJS уже давно встаёт без шаманства даже на винду, а под убунту всегда вставал без шаманства.

Gamestop 10.02.2012 09:30

Божественно :) , а я вот подумал а разве такое нельзя на простом js сделать? o_O, вот что поражает так это скорость перемешивания шашек), даже незнаю, прокатит-ли с setInterval, да и кстати дайте ссылку где можно установить БЕЗ шаманаства nodeJS как вы и сказали на Windows please, ниразу не юзал эту библиотеку, хочу научится и узнать что это такое + заодно и ваше изобретение изучу

Kolyaj 10.02.2012 09:38

Цитата:

Сообщение от Gamestop
а я вот подумал а разве такое нельзя на простом js сделать?

А что такое простой JS? Bricks, jQuery, ExtJS, etc. -- все на простом JS написаны. Если считать, что и Bricks и пятнашки написал я, можно считать, что я написал пятнашки на простом JS :)


Цитата:

Сообщение от Gamestop
вот что поражает так это скорость перемешивания шашек

А что не так со скоростью? Можно медленнее сделать, можно вообще моментально сделать, просто хотелось как-то усложнить пример.


Цитата:

Сообщение от Gamestop
дайте ссылку где можно установить БЕЗ шаманаства nodeJS как вы и сказали на Windows

http://nodejs.org/#download

B~Vladi 23.03.2012 22:32

Я тут посмотрел, функцию getCharUnicode в файле String.js можно упростить:
function getCharUnicode(ch) {
  var code = ch.charCodeAt(0).toString(16);

  return '\\u' + new Array(5 - code.length).join('0') + code;
}


Ну и вообще вынести её из compile, что бы не создавалась каждый раз. Это же касается camelize и uncamelize.

Kolyaj 23.03.2012 22:41

Ну я бы не назвал это упрощением :)

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

А что не так с camelize/uncamelize?

B~Vladi 23.03.2012 22:46

Цитата:

Сообщение от Kolyaj
Ну я бы не назвал это упрощением

Мне показалось, что создание и преобразование массива проще цикла. Ну да ладно.

Цитата:

Сообщение от Kolyaj
С выносом получается, что она будет видна снаружи

Я имел ввиду что-то вроде этого:
var obj = {
  method: (function () {
    function name() {}

    return {};
  })()
};


Цитата:

Сообщение от Kolyaj
что не так с camelize/uncamelize?

Я про всё ту же вновь создаваемую функцию :)

Kolyaj 23.03.2012 22:55

Цитата:

Сообщение от B~Vladi
Мне показалось, что создание и преобразование массива проще цикла. Ну да ладно.

Ага, точно, затупил я.


Цитата:

Сообщение от B~Vladi
Я имел ввиду что-то вроде этого:

Не, такими конструкциями я переболел. Они труднее воспринимаются, труднее читаются, следовательно, труднее поддерживаются.


Цитата:

Сообщение от B~Vladi
Я про всё ту же вновь создаваемую функцию

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

B~Vladi 23.03.2012 23:19

Цитата:

Сообщение от Kolyaj
Они труднее воспринимаются, труднее читаются, следовательно, труднее поддерживаются.

В спагетти тоже легко запутаться. Дело вкуса, не стану спорить.

Цитата:

Сообщение от Kolyaj
Нее, это даже не на спичках оптимизация, а на спичечных головках.

Да, но ситуации всякие бывают. Бывает и такое, что интерпретатору приходится хранить scope, а то и не один. Это, конечно, не твой случай, но я стараюсь избегать этого, уже вошло в привычку :)
Опять же это дело вкуса.

B~Vladi 08.08.2012 11:51

http://habrahabr.ru/post/149230/

vadim5june 08.08.2012 13:32

Цитата:

Сообщение от B~Vladi (Сообщение 195587)

Что это значит?

Gozar 08.08.2012 16:14

Цитата:

Сообщение от vadim5june
Что это значит?

Кто виноват?

B~Vladi 08.08.2012 21:45

Цитата:

Сообщение от vadim5june
Что это значит?

Похожая штука с таким же названием.


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