I hereby claim:
- I am arestov on github.
- I am banshee7994 (https://keybase.io/banshee7994) on keybase.
- I have a public key ASBcAbj5XEcqsI3_2NNfriY9ZwTU05l-bjnw5dwilXxu0Qo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| Декларативность. Лаконичный и оптимизируемый код | |
| Разделение кода сложных состояний на 3 части позволяет сильно уменьшить сложность | |
| и объем кода (за счёт автоматизации кода, актуализирующего эти состояния, | |
| при изменении других состояний), а также реализовывать оптимизации на системном уровне. | |
| 1) Декларативное описание того как используется результат (зачем вы что-то делаете, целеполагание) | |
| 2) Декларативное описание от каких состояний зависит результат (что нужно чтобы выполнить задачу) | |
| 3) Способ вычисления результата (как распорядится ингридиентами, чтобы получить необходимое) |
| // SNAPSHOT 1 | |
| { //root of big structure | |
| nest: [ | |
| bignestedPart1 : { //Big nested part 1 | |
| prop: bignestedPart2 //Big nested part 2, | |
| //other props | |
| }, | |
| bignestedPart3: {} | |
| ] |
| var getComplexCalculations = function(some_data) | |
| //Эта функция вызывается очень часто, соотствестенно каждый push({}) создаёт объект для сборщика мусора (который остановит выполнение всего приложения) | |
| var result_array = []; | |
| for (var i = 0; i < some_data.length; i++) { | |
| result_array.push({ | |
| state_name: getStateName(some_data[i]), //всегда строка | |
| state_value: getStateValue(some_data[i]) //любой тип (null, object, number, string...) | |
| }); | |
Provodajs - MVC фреймворк для простого обслуживания множества взаимосвязанных состояний моделей и связей между ними (иерархичных и фракталякционных) в асинхронном режиме, управления сетевыми запросами, из очереди которых первым должен быть отправлен тот, который обеспечивает данными ту часть приложения в которой заинтересован пользователь. Фреймворк для перспективного использования в условиях реальной изолированности моделей от их представлений.
Фреймворк обеспечивающий атомарные реакции в DOM дереве на изменения состояний (вместо переделывания больших участков DOM дерева), где не нужна сложность используя простые и эффективные шаблоны на основе html разметки аля angularjs и сложные views, где простыми не обойтись.
Фреймворк обеспечивающий огромную скорость отображения данных за счёт
| <div class="complex-page" pv-view-wrap='flow_order: {{$$level_num}}'> | |
| <div class="complex-page-scroll_con"> | |
| <div class="complex-page_material"> | |
| <div pv-view="tag_page"></div> | |
| </div> | |
| </div> | |
| </div> |
| <div pv-sample="button_area"> | |
| <span pv-text="{{name:}} fff"></span> | |
| </div> | |
| <div | |
| pv-clone-of='button_area' | |
| pv-clone-states="button_title: {{}}"> | |
| <div class="preview" pv-anchor=""></div> |
| <div pv-attrs="style.width: {{play_progress}} title: {{full_name}} style.background-image: {{album_cover_url}}"> | |
| </div> | |
| just more line breaks: | |
| <div | |
| pv-attrs=" | |
| style.width: {{play_progress}} | |
| title: {{full_name}} | |
| style.background-image: {{album_cover_url}}" |
| var iterateObjectDeeply = function(obj, fn) { | |
| var full_tree_array = [obj]; | |
| while (full_tree_array.length) { | |
| var cur = full_tree_array.shift(); | |
| for (var a in cur){ | |
| fn(cur, a); | |
| if (cur[a] && typeof cur[a] == 'object'){ | |
| full_tree_array.push(obj[prop_name]) | |
| } | |
| } |
| <div class="serpi-inject-results-wrap many-results scrollable-images"> | |
| <a href="javascript:void(0);" class="hp-b prev-serpi">←</a> | |
| <a href="javascript:void(0);" class="hp-b next-serpi">→</a> | |
| <script type="text/javascript"> | |
| var onImageLoad = function(img, cb) { | |
| var done, | |
| loaded = function() { | |
| if (!done){ | |
| done = true; |