Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Унылого треша тред (https://javascript.ru/forum/offtopic/47728-unylogo-tresha-tred.html)

iKillMaxmaxmaximus 05.07.2013 12:25

Нужен совет, как лучше сделать организацию сайта ВООБЩЕ?
У меня можно составлять модули из модулей использовать модули в шаблонах и в кастомных элементах, и наоборот. Чо думаете? Тут один чувак сказал что не нужно нутро показывать, но блин, и что мне делать все так? типа создать модули низкого уровня типа кнопочки флажки, и создать на их основе модули высокого уровня, типа чаты и стены новостей, дать всему этому кастомные элементы с настройкам и а в html писать только модули самого высокого уровня или что?
и если я захочу изменить чат то мне придется залезть в его папочку и работать только там, если захочется изменить кнопку в чате то придется залезть в папку с кнопкой и работать там)? это круто считается или что)?



А можно для себя обозначать вообще модули высокого уровня с заглавной начинать тег, не?)

И вообще по сути я только щас понял что столько свободы позволяет сделать что то вроде уровней, то есть придумать спецификацию как РЕКОМЕНДУЕТСЯ организовывать модули, типа в 2 уровня, и.т.п. связи описывать так то и сяк-то не)? И вообще если честно то я думаю что между глобальными модулями связей быть НЕ ДОЛЖНО. Ну то есть если мы хотим сделать кнопочку которая делает то то и сё-то то это связь, по этому нам нужно кнопочку и обьект с которым она что-то делает объединить в модуль и внутри шаблона описать связь сокетами хуёкетами и.т.п. дать этому кастомный элемент и в html только его и использовать не?

melky 05.07.2013 12:27

Цитата:

Сообщение от iKillMaxmaxmaximus
Нужен совет, как лучше сделать организацию сайта ВООБЩЕ?

мб наконец попробуешь работать со своим фреймворком, а не играться им?

iKillMaxmaxmaximus 05.07.2013 12:32

хорошая идея) лол понял понял, окей


melky, окей скажи тогда так, связи между модулями высокого уровня должны быть или нет)?

iKillMaxmaxmaximus 05.07.2013 12:35

Цитата:

Сообщение от melky
мб наконец попробуешь работать со своим фреймворком, а не играться им?

там просто видишь, УЖЕ куча вариантов как сайт создать на нем, и я хз как именно надо, то есть я слишком разболтано делал, мыл а если человек захочет так, а если человек захочет модуль в модуль? а если человек захочет кнопку сделать частью меню? и.т.п. наделал тузлов а щас хз как этим пользоваться грамотно

melky 05.07.2013 15:40

Цитата:

Сообщение от iKillMaxmaxmaximus
а если человек захочет модуль в модуль

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

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

iKillMaxmaxmaximus 05.07.2013 16:00

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

melky 06.07.2013 00:53

Цитата:

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

нет, одно другому мешать не должно

iKillMaxmaxmaximus 06.07.2013 02:41

Цитата:

Сообщение от melky
одно другому мешать не должно

что чему мешать не должно?

melky 06.07.2013 03:47

Цитата:

Сообщение от iKillMaxmaxmaximus
что чему мешать не должно?

условности не должны влиять на гибкость) это решение под стык)

iKillMaxmaxmaximus 06.07.2013 03:50

если они влияют на гибкость то какие же это условности) это РАМКИ ФРЕЙМворка, а у меня рамки свободные и надо придумать условности как НАДО ПРАВИЛЬНО программировать РЕКОМЕНДУЕМО для достижения максимальной эффективности пнятна)?

iKillMaxmaxmaximus 10.07.2013 01:02

пасоны версия 0.3



^__^

iLikeMaxmaxmaximus 18.08.2013 21:54

Что бы вы хотели видеть в UI?
 

l-liava-l 18.08.2013 23:54

Кинутым в портфолио и надпись RIP...;)

KingOfMaxmaxmaximus 15.10.2013 23:25

UI.js от Maxmaxmaximus
 
Короче суть нового UI 901:

Интерфейс состоит из виджетов. Каждый виджет состоит из одного или нескольких HTML элементов и модели. Виджеты создаются так:


<div ui="name"></div>

ui['name'] = function(){

}



В функции мы описываем модель виджета, а в html элементе данные из этой модели доступны через {теги}. Например:

<div ui="name"> Числа {a} и {b} </div>

ui['name'] = function(){

  this.a = 9;
  this.b = 20;

}



За место {a} и {b} подставятся числа, изменяя числа в модели они автоматически перерисовываются в html.


В модель можно класть как просто какие-то константные значения, так и формулы. Например:

<div ui="name"> {a} + {b} = {c} </div>

ui['name'] = function() {

    this.a = 12;
    this.b = 19;
    this.c = '{a+b}';

};


Теперь в ячейке с в любой момент времени будет лежать сумма a+b. Изменив значение a или b мы МГНОВЕННО изменим значение и с. Формулы записываются как строки, только в фигурных скобках, чтобы отличаться от обычных строк.
Вот '{так}' например.

Например мы можем сделать формулу которая будет возвращать всегда актуальный массив:

ui['name'] = function() {

    this.a = 12;
    this.b = 19;
    this.c = '{a+b}';

    this.arr = '{ [a,b,c] }'; // [12, 19, 31]
    // или так
    this.arr = ['{a}', '{b}', '{c}']; // [12, 19, 31]

};


Это называется FRP, когда система в любой момент времени имеет явное и четкое состояние.

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


devote 17.10.2013 10:35

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

KingOfMaxmaxmaximus 17.10.2013 13:42

devote, забань ка того кто меня оскорбил в карму. Если не забанишь то грош цена твоим словам и принципам.
Сообщение от devote: Мои слова сказаны после оскорблений. А значит они распространяются на текущее и будущее время.
Цитата:

Сообщение от devote
для тебя почистил и переименовал.

Спасибо)

devote 17.10.2013 14:23

а в чем сложность писать код таким образом?:
//************************************************************************************** Collection
/** @constructor  */
function Collection(widgets, module) {

  if (widgets instanceof Collection) return widgets;

  if (!widgets) {
    this.emptyCollection = true;
    return
  }

  arrayItemsToObject(widgets, this);

  this.template = this.eq(0).clone();
  this.module = module;

}

Collection.prototype = {
    constructor: Collection,
    each: function(callback) {
    },
    add: function(widget) {
    },
    hasElement: function(element) {
    },
    eq: function(index) {
    },
    eqElement: function(index) {
    },
    indexOfElement: function(element) {
    },
    toggle: function(propName) {
    },
    turnOn: function(prop, filter) {
    },
    clickIndex: function(propName) {
    },
    splice: function(index, count, dataArray) {
    },
    insert: function(index, dataArray, toProp) {
    },
    prepend: function(toProp, dataArray) {
    },
    append: function(toProp, dataArray) {
    },
    filter: function(filter) {
    },
    empty: function() {
    },
    remove: function(index) {
    },
    repeat: function(dataArrayProp, toProp) {
    },
    watch: function(prop, callback) {
    },
    model: function(model, b) {
    },
    bind: function(prop) {
    },
    css: function(props, value) {
    },
    width: function(value) {
    },
    on: (function() {
    }
};
и читать код проще, видя всю структуру класса, да и писать тоже куда проще создать новое свойство, чем каждый раз писать Collection.prototype.и_т_д=что_то

KingOfMaxmaxmaximus 17.10.2013 16:32

Цитата:

Сообщение от devote
а в чем сложность писать код таким образом?:

да это старый быдлокод я уже все переписал) новый код седня ночью покажу/)

l-liava-l 17.10.2013 18:56

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

KingOfMaxmaxmaximus 17.10.2013 20:38

Цитата:

Сообщение от l-liava-l
я до сих пор не вдуплил зачем.

ЧТО зачем? Зачем я пилю свой FRP MVC фреймворк с блекджеком и шлюхами? Потому что нет нормальных)

cyber 18.10.2013 00:54

KingOfMaxmaxmaximus, может тогда поделишься исходниками твоего "чуда" ?

KingOfMaxmaxmaximus 18.10.2013 05:20

Цитата:

Сообщение от cyber
твоего "чуда"

Почему чуда в кавычках? Фреймворк плохой или что? Да, поделюсь) На гитхаб, и доки выложу, щас как раз оформляю все)

KingOfMaxmaxmaximus 18.10.2013 15:07

Цитата:

Сообщение от devote
и читать код проще, видя всю структуру класса, да и писать тоже куда проще создать новое свойство, чем каждый раз писать Collection.prototype.и_т_д=что_то

Не, мне не проще, так я сразу в длинном текстовом файле вижу к какому классу этот метод относится) а во вторых чтобы создать метод я пишу pro{tab} и он сам всё дописывает, ну ты понял))


ОБНОВИЛ ПЕРВЫЙ ПОСТ

KingOfMaxmaxmaximus 19.10.2013 17:16

Пасоны, небольшая трабла есть=) думаю как лучше биндить элементы ввода к ячейкам модели, либо атрибутом (что смотрится по ублюдски кстати) либо просто передав селектор в формулу, как лучше? формулы достаточно умные кстати чтобы врубиться что это селектор а не выражение=) так что можно использовать любые селекторы.





В первом случае мы можем задавать значения по умолчанию (хотя атрибутом value тоже можем):


Во втором код сахарнее, да и читать понятнее когда все описание находится не в области разметки а в модели:

KingOfMaxmaxmaximus 19.10.2013 17:30

Разумеется ответ очевиден, я просто выебываюсь)))

Сидел думал как биндилку сделать кошерно, и подумал, ОБА НА, У МЕНЯ Ж ФОРМУЛЫ ЕСТЬ, ОНИ Ж УМНЫЕ, туда можно прямо селектор пихнуть и она поймет, это ж гениально подумал я) так что пилю сижу

nerv_ 21.10.2013 22:48

почему эта тема до сих пор тут, а не здесь?

devote 21.10.2013 23:50

Цитата:

Сообщение от nerv_
почему эта тема до сих пор тут, а не здесь?

ну во первых потому что тут полезного что-то я пока не вижу, а во вторых если ты не заметил, максимус был забанен. А значит тема пуста и мертва.

nerv_ 22.10.2013 00:05

Цитата:

Сообщение от devote
если ты не заметил, максимус был забанен

не заметил. Счастье то какое. Определенно будет праздник :dance:

Цитата:

Сообщение от devote
ну во первых потому что тут полезного что-то я пока не вижу

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

__Maxmaxmaximus__ 25.10.2013 02:07

Возможно кто-то скажет - ты делаешь второй ангуляр, ко ко ко.
Но знаете ли, stylus это второй scss а вы посмотрите на разницу!!!!

И я не ставлю цели максимально отличаться от ангуляра! НАОБОРОТ, я буду воровать от туда внаглую все хорошие идеи! Но это не значит что я буду воровать плохие вещи и не буду добавлять свои фитчи. Моя UI будет лучше чем ангуляр, это будет лучший фреймворк для создания интерфейсов во вселенной! У меня УЖЕ есть формулы и FRP! Вы просто посмотрите на это:



И да, мы могли бы сделать это в ангуляр:



То есть у них тоже есть FRP но у них нет поверх этого формул.
А я и начал писать UI потому что все существующее было говном несахарным.
Резиг Jquery начал писать потому что все существующее было говном несахарным.

Но оно вам надо?
Ангуляр весит 80 кб, UI весит 7, в сжатом 1.4 (!!!) почти как ванилла жс

И к слову формулы в PHPstorm можно подсветить:

Shaci 25.10.2013 03:34

Цитата:

Сообщение от __Maxmaxmaximus__
А я и начал писать UI потому что все существующее было говном несахарным

я так понял, что ты сахарное говно пишешь?:D
(ну а по делу, флаг в руки, хотя я не верю, что у тебя что-то получится)

__Maxmaxmaximus__ 25.10.2013 06:40

Цитата:

Сообщение от Shaci
хотя я не верю, что у тебя что-то получится

А тя не смущает что оно УЖЕ работает)?


FRP в действии - Ни одного события, просто задекларированное состояние системы:

<script src="http://mychamber.ru/lib/ui.js"></script>
<style type="text/css">  .todo:hover { background-color : #b7e2ff } </style>



<div ui="widget">
  <div for="todos as todo" class="todo">
    <input bind="todo.selected" type="checkbox">
    {todo.selected} | {todo.text}
  </div>

  <hr>

  <div for="selectedTodos as todo" class="todo">
    {todo.text}
  </div>
</div>



<script>
  ui['widget'] = function() {

    this.todos = [
      {text: 'погулять ', selected: false},
      {text: 'попить пива', selected: false},
      {text: 'разработать ui', selected: false},
      {text: 'покакать', selected: false},
      {text: 'сжечь документацию ангуляра', selected: false}
    ];

    this.selectedTodos = '{todos.filter(todo=>todo.selected)}';

  };
</script>


Тут показаны все фитчи: FRP, стрелочные функции и формулы =)


События селекторы и коллекции конечно тоже работают, там первым аргументом передается $ который всем этим занимается аля jQuery, но мы планируем от него отказаться в пользу полной декларативности =) по этому я его не использовал в демо и убрал половину примера ToDo (например убрал кнопочки добавления и удаления тудушек)

В будущем в формулах кстати можно будет использовать специальные значения вроде $mouse.x или $location и.т.п.

cyber 25.10.2013 10:28

__Maxmaxmaximus__,
ты хотя бы обернул код в Function Expression .

__Maxmaxmaximus__ 25.10.2013 14:06

Цитата:

Сообщение от cyber
ты хотя бы обернул код в Function Expression

спасибо но пока это не требуется) я ж не выпускал еще. хотя щас как раз всякие константы выносить в переменные буду, заодно и оберну.

Цитата:

Сообщение от Дзен-трансгуманист
ничего не смущает?

Спасибо) друга попросил составить коды и названия) на будущее, составил блин)


p.s. Прошу модерацию форума вынести предупреждение человеку, оскорбившему меня, от зависти, в карму. Спасибо.

cyber 25.10.2013 20:00

__Maxmaxmaximus__, и что ты код лучше сжался лучше делать так.
К примеру

(function () {
 var HTM_proto__ = HTMLParser.prototype;

 function HTMLParser() {
  // body function
  }
HTM_proto__._splitTextNodesAtTheTags  = function () {

};


window.HTMLParser = HTMLParser;
} ());


П.с __Maxmaxmaximus__ и хватит уже разводить срачь, если хочешь что не "бросали камнями"

__Maxmaxmaximus__ 25.10.2013 20:30

Цитата:

Сообщение от cyber
и хватит уже разводить срачь

Приведи хотя бы один пример когда я разводил срач за последние месяца 3.

Цитата:

Сообщение от cyber
и что ты код лучше сжался лучше делать так.

а гугл компиллер в экстримальном режиме сможет заинлайнить такие методы?

cyber 25.10.2013 21:04

__Maxmaxmaximus__,
хм я ошибся, я почему то думал что лучше сожмет, а получилось так, так что забей.
(function(){function a(){}a.prototype._splitTextNodesAtTheTags=function(){};window.HTMLParser=a})();

__Maxmaxmaximus__ 26.10.2013 00:17

Цитата:

Сообщение от cyber
я почему то думал что лучше сожме

А ни чо что на сайте статьи есть и тесты как оно лучше сжимается)?
Что мыл елси способом как я делать то он инлайнит функции доставая код из них и обьединяя в одну функцию и.т.п. ты не читал?

Gozar 26.10.2013 01:02

Цитата:

Сообщение от __Maxmaxmaximus__
p.s. Прошу модерацию форума вынести предупреждение человеку, оскорбившему меня, от зависти, в карму. Спасибо.

Хочешь, чтобы она утвердила тебе карму?! Ты сам выбрал этот путь, тот который у тебя в карме. Так что хватит ныть, выкладывай свой код и начинай писать на него доки. А то как гласит твоя карма, ты на форуме не популярен. ;)

ruslan_mart 26.10.2013 14:18

Дзен-трансгуманист, вопрос конечно не в тему, но... почему у тебя всегда "Сообщений: 207"? Не зависимо сколько пишешь ты сообщений на форум. :)

__Maxmaxmaximus__ 26.10.2013 15:55

Цитата:

Сообщение от Дзен-трансгуманист
Плюс 1К, минус 1К - сотня килобайт кода парсится за считанные миллисекунды. Экономить их, все равно что копейки на дороге подбирать.
Архитектура это основа функциональной модели - ее нужно писать с упором на гибкость и целостность внутренней структуры, а не исходя из объема кода.

я вчера это осознал и рефакторю вторые сутки) в принципе как не странно абстракция поднялась а обьем кода уменьшился, и все стало логичнее. Инкапсулировал некоторые штуки в классы. Оч много думал где есть НУЖДА создать сущнгость а где нету. Боялся что Окам придет за мной с бритвой) В итоге создание сущности Scope позволило дико оптимизировать рендеринг, добавил систему подписок и дерево зависимостей и все это смотрится красиво и логично)

Раньше у меня был обсервер который при эплаях смотрел что в модели изменилось а что нет, и перерендеривал то что изменилось. Щас же я просто анализирую код который может что-то изменить и смотрю что он МОГ изменить а что НЕТ, потом проверяю это на изменения и запускаю дерево зависимостей сделать перерасчеты этих веток дерева)


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