Нужен совет, как лучше сделать организацию сайта ВООБЩЕ?
У меня можно составлять модули из модулей использовать модули в шаблонах и в кастомных элементах, и наоборот. Чо думаете? Тут один чувак сказал что не нужно нутро показывать, но блин, и что мне делать все так? типа создать модули низкого уровня типа кнопочки флажки, и создать на их основе модули высокого уровня, типа чаты и стены новостей, дать всему этому кастомные элементы с настройкам и а в html писать только модули самого высокого уровня или что? и если я захочу изменить чат то мне придется залезть в его папочку и работать только там, если захочется изменить кнопку в чате то придется залезть в папку с кнопкой и работать там)? это круто считается или что)? ![]() А можно для себя обозначать вообще модули высокого уровня с заглавной начинать тег, не?) И вообще по сути я только щас понял что столько свободы позволяет сделать что то вроде уровней, то есть придумать спецификацию как РЕКОМЕНДУЕТСЯ организовывать модули, типа в 2 уровня, и.т.п. связи описывать так то и сяк-то не)? И вообще если честно то я думаю что между глобальными модулями связей быть НЕ ДОЛЖНО. Ну то есть если мы хотим сделать кнопочку которая делает то то и сё-то то это связь, по этому нам нужно кнопочку и обьект с которым она что-то делает объединить в модуль и внутри шаблона описать связь сокетами хуёкетами и.т.п. дать этому кастомный элемент и в html только его и использовать не? |
Цитата:
|
хорошая идея) лол понял понял, окей
melky, окей скажи тогда так, связи между модулями высокого уровня должны быть или нет)? |
Цитата:
|
Цитата:
гибкость и взаимодействие продумывается обычно на этапе построения диаграммы классов и связями между ними. |
ну короче он гибкий и даже очень он как платформа. но это хорошо или плохо? теперь , раз он гибкий мне придется придумывать какие-то условности и рекомендации и способы программирования на нем, не?
|
Цитата:
|
Цитата:
|
Цитата:
|
если они влияют на гибкость то какие же это условности) это РАМКИ ФРЕЙМворка, а у меня рамки свободные и надо придумать условности как НАДО ПРАВИЛЬНО программировать РЕКОМЕНДУЕМО для достижения максимальной эффективности пнятна)?
|
пасоны версия 0.3
![]() ^__^ |
Что бы вы хотели видеть в UI?
![]() |
Кинутым в портфолио и надпись RIP...;)
|
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 у нас всегда содержится актуальный обьект с актуальными данными. И все зависимости видны не вооруженному глазу. Мы можем аяксить этот обьект на сервер совершенно не парясь о его актуальности, абстрагируясь от необходимости следить за его наполнением. Все зависимости просчитываются автоматически. ![]() |
Maxmaxmaximus,
для тебя почистил и переименовал. Будешь писать оскорбления, пойдешь в бан и я сам лично буду без промедления каждый твой аккаунт сразу же после создания туда отправлять, без объяснения причин! |
devote, забань ка того кто меня оскорбил в карму. Если не забанишь то грош цена твоим словам и принципам.
Сообщение от devote: Мои слова сказаны после оскорблений. А значит они распространяются на текущее и будущее время. Цитата:
|
а в чем сложность писать код таким образом?:
//************************************************************************************** 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, может тогда поделишься исходниками твоего "чуда" ?
|
Цитата:
|
Цитата:
ОБНОВИЛ ПЕРВЫЙ ПОСТ |
Пасоны, небольшая трабла есть=) думаю как лучше биндить элементы ввода к ячейкам модели, либо атрибутом (что смотрится по ублюдски кстати) либо просто передав селектор в формулу, как лучше? формулы достаточно умные кстати чтобы врубиться что это селектор а не выражение=) так что можно использовать любые селекторы.
![]() В первом случае мы можем задавать значения по умолчанию (хотя атрибутом value тоже можем): ![]() Во втором код сахарнее, да и читать понятнее когда все описание находится не в области разметки а в модели: ![]() |
Разумеется ответ очевиден, я просто выебываюсь)))
Сидел думал как биндилку сделать кошерно, и подумал, ОБА НА, У МЕНЯ Ж ФОРМУЛЫ ЕСТЬ, ОНИ Ж УМНЫЕ, туда можно прямо селектор пихнуть и она поймет, это ж гениально подумал я) так что пилю сижу |
почему эта тема до сих пор тут, а не здесь?
|
Цитата:
|
Цитата:
Цитата:
|
Возможно кто-то скажет - ты делаешь второй ангуляр, ко ко ко.
Но знаете ли, stylus это второй scss а вы посмотрите на разницу!!!! И я не ставлю цели максимально отличаться от ангуляра! НАОБОРОТ, я буду воровать от туда внаглую все хорошие идеи! Но это не значит что я буду воровать плохие вещи и не буду добавлять свои фитчи. Моя UI будет лучше чем ангуляр, это будет лучший фреймворк для создания интерфейсов во вселенной! У меня УЖЕ есть формулы и FRP! Вы просто посмотрите на это: ![]() И да, мы могли бы сделать это в ангуляр: ![]() То есть у них тоже есть FRP но у них нет поверх этого формул. А я и начал писать UI потому что все существующее было говном несахарным. Резиг Jquery начал писать потому что все существующее было говном несахарным. Но оно вам надо? Ангуляр весит 80 кб, UI весит 7, в сжатом 1.4 (!!!) почти как ванилла жс И к слову формулы в PHPstorm можно подсветить: ![]() |
Цитата:
(ну а по делу, флаг в руки, хотя я не верю, что у тебя что-то получится) |
Цитата:
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 и.т.п. |
__Maxmaxmaximus__,
ты хотя бы обернул код в Function Expression . |
Цитата:
Цитата:
p.s. Прошу модерацию форума вынести предупреждение человеку, оскорбившему меня, от зависти, в карму. Спасибо. |
__Maxmaxmaximus__, и что ты код лучше сжался лучше делать так.
К примеру (function () { var HTM_proto__ = HTMLParser.prototype; function HTMLParser() { // body function } HTM_proto__._splitTextNodesAtTheTags = function () { }; window.HTMLParser = HTMLParser; } ()); П.с __Maxmaxmaximus__ и хватит уже разводить срачь, если хочешь что не "бросали камнями" |
Цитата:
Цитата:
|
__Maxmaxmaximus__,
хм я ошибся, я почему то думал что лучше сожмет, а получилось так, так что забей. (function(){function a(){}a.prototype._splitTextNodesAtTheTags=function(){};window.HTMLParser=a})(); |
Цитата:
Что мыл елси способом как я делать то он инлайнит функции доставая код из них и обьединяя в одну функцию и.т.п. ты не читал? |
Цитата:
|
Дзен-трансгуманист, вопрос конечно не в тему, но... почему у тебя всегда "Сообщений: 207"? Не зависимо сколько пишешь ты сообщений на форум. :)
|
Цитата:
Раньше у меня был обсервер который при эплаях смотрел что в модели изменилось а что нет, и перерендеривал то что изменилось. Щас же я просто анализирую код который может что-то изменить и смотрю что он МОГ изменить а что НЕТ, потом проверяю это на изменения и запускаю дерево зависимостей сделать перерасчеты этих веток дерева) |
Часовой пояс GMT +3, время: 11:47. |