Цитата:
Вообще могу попробовать и это реализовать, если нужны в движке. Но мне кажется этим еще не скоро начнут пользоваться, да и излишество это на стороне клиента, на мой взгляд. Вот LS - это хорошо. Теперь Cookies не нужны, да и места больше дают. |
Цитата:
Цитата:
Но я не хочу разубедить вас писать свой велосипед, пишите, т.к. это отличный опыт. Цитата:
|
Цитата:
Не нужны кому? Именно вам? А я считаю есть достаточное число не таких опытных программистов, которым бы такие библиотеки не помешали. Мне тоже не нужна jQuery по большому счету, но пишется с ней проще и приятнее чем на нативном скрипте. Я понимаю, что вам больше подавай ES6, но это будет актуально только для Node.js и для сервера. Браузер Edge его не понимает до сих пор, а это критическое в данном случае. Да и Node.js это не панацея. Я вот предпочитаю PHP. ИМХО, как-то писал обертку для API MySQLi на PHP на подобие Doctryne только без поддержки JOIN. Интересно, но мало чего полезного в итоге. А именно джойны - это основное полезное из того что есть в Indexed DB, но сложности синтаксиса таковы, что красивую обертку для них написать практически невозможно. А пишу я не бесполезную библиотеку, а полноценный front-end framework ибо включаю в ядро уже более сложные по своему принципу модули. Это не библиотека. |
Цитата:
Цитата:
Цитата:
Или fetch API для аякс запросов: await fetch('/my-request') Цитата:
Цитата:
*** Ладно, вы явно не можете воспринимать критику, поэтому удаляюсь из треда. |
>> Хоспади, https://babeljs.io/. Пишу всё на ES6 уже года 4 точно, хотя мейнстримом он стал года 2 как, т.к. до появления бабеля всё было сложнее.
Упарываетесь полифилами. Ваш выбор. Не мой. Я не спешу. |
В очередной раз, пока мой рабочий ноут в ремонте со всеми данными, помаленьку пилю код фреймворка на мамкином ноутбуке (:
v. 1.4.7: Добавлены легкие эффекты для анимации CSS свойств(easeInOutCubic, elastic, circ, back), которые были сперты из мануала(https://learn.javascript.ru/js-animation). Остальные я воровать не решился так как они возможно находятся под чьей-то лицензией. Буду рад если кто подскажет свободно распространяемые формулы. Да и bounce у меня почему-то не заработал(повесил всю страницу и разбираться в этом я пока не стал, но позже обязательно добавлю и его). Добавлен $.hasClass для проверки имеет ли элемент установленный класс заданный в параметре; или классы. Добавлен $externalScript, который при указании сорцы прикрепляет и запускает асинхронно искомый удаленный JS-файл. Планирую написать небольшой Rooter для того, чтобы можно было спокойно обходиться без Angular и прочего. Также принимаю идею по поводу реализации модулей. |
v 1.4.9.
Еще немного оптимизирован механизм анимаций и добавлена наиболее полная коллекция easing методов для рендеринга CSS анимаций. Вот полный список способов(их 31!): switch(r) { case 'easeIn': f = Math.pow( f, 5 ); break; case 'easeOut': f = 1 - Math.pow( 1 - f, 5 ); break; case 'easeOutQuad': f = f < 0.5 ? 2 * f * f : -1 + (4 - 2 * f) * f; break; case 'easeOutCubic': f = f * f * f; break; case 'easeInOutCubic': f = f < 0.5 ? 4 * f * f * f : (f - 1) * (2 * f - 2) * (2 * f - 2) + 1; break; case 'easeInQuart': f = f * f * f * f; break; case 'easeOutQuart': f = 1 - (--f) * f * f * f; break; case 'easeInOutQuart': f = f < 0.5 ? 8 * f * f * f * f : 1 - 8 * (--f) * f * f * f; break; case 'easeInQuint': f = f * f * f * f * f; break; case 'easeOutQuint': f = 1 + (--f) * f * f * f * f; break; case 'easeInOutQuint': f = f < 0.5 ? 16 * f * f * f * f * f : 1 + 16 * (--f) * f * f * f * f; break; case 'elastic': f = Math.pow(2, 10 * (f - 1)) * Math.cos(20 * Math.PI * 1.5 / 3 * f); break; case 'easeInElastic': f = (.04 - .04 / f) * Math.sin(25 * f) + 1; break; case 'easeOutElastic': f = .04 * f / (--f) * Math.sin(25 * f); break; case 'easeInOutElastic': f = (f -= 0.5) < 0 ? (0.01 + 0.01 / f) * Math.sin(50 * f) : (0.02 - 0.01 / f) * Math.sin(50 * f) + 1; break; case 'easeInSin': f = 1 + Math.sin(Math.PI / 2 * f - Math.PI / 2); break; case 'easeOutSin': f = Math.sin(Math.PI / 2 * f); break; case 'easeInOutSin': f = (1 + Math.sin(Math.PI * f - Math.PI / 2)) / 2; break; case 'easeInCirc': f = -(Math.sqrt(1 - (f * f)) - 1); break; case 'easeOutCirc': f = Math.sqrt(1 - Math.pow((f-1), 2)); break; case 'easeInOutCirc': f = ((f /= 0.5) < 1) ? -0.5 * (Math.sqrt(1 - f * f) - 1) : 0.5 * (Math.sqrt(1 - (f-=2) * f) + 1); break; case 'easeInQuad': f = f * f; break; case 'radical': f = Math.sqrt(f); break; case 'harmony': f = (1 + Math.sin((f - 0.5) * Math.PI)) / 2; break; case 'back': f = Math.pow(f, 2) * ((1.5 + 1) * f - 1.5); break; case 'easeInExpo': f = (f === 0) ? 0 : Math.pow(2, 10 * (f - 1)); break; case 'easeOutExpo': f = (f === 1) ? 1 : -Math.pow(2, -10 * f) + 1; break; case 'easeInOutExpo': f = ((f /= 0.5) < 1) ? 0.5 * Math.pow(2,10 * (f-1)) : 0.5 * (-Math.pow(2, -10 * --f) + 2); break; case 'easeOutBounce': if ((f) < (1/2.75)) { f = (7.5625 * f * f); } else if (f < (2/2.75)) { f = (7.5625 * (f -= (1.5 / 2.75)) * f + 0.75); } else if (f < (2.5/2.75)) { f = (7.5625 * (f -= (2.25 / 2.75)) * f + 0.9375); } else { f (7.5625 * (f -= (2.625 / 2.75)) * f + 0.984375); } break; case 'bounce': if (f < (1/2.75)) { f = (7.5625 * f * f); } else if (f < (2 / 2.75)) { f = (7.5625 * ( f -= (1.5 / 2.75)) * f + 0.75); } else if (f < (2.5 / 2.75)) { f = (7.5625 * (f -= (2.25 / 2.75)) * f + 0.9375); } else { f = (7.5625 * (f -= (2.625 / 2.75)) * f + 0.984375); } break; case 'bouncePast': if (f < (1/2.75)) { f = (7.5625 * f * f); } else if (f < (2 / 2.75)) { f = 2 - (7.5625 * ( f -= (1.5 / 2.75)) * f + 0.75); } else if (pos < (2.5 / 2.75)) { f = 2 - (7.5625 * ( f -=(2.25 / 2.75)) * f + 0.9375); } else { f = 2 - (7.5625 * ( f -=(2.625 / 2.75)) * f + 0.984375); } break; default: f = 1; break; } Весь фреймворк на данный момент весит около 40кб чистого несжатого кода, что выигрывает у jQuery в 6 раз примерно. Минифицированная версия будет немного позже. |
v 1.5.0
После некоторых раздумий было решено расширить возможные варианты схем CSS для различных устройств. if(caseVal <= 480) { this.schema = "mobile"; } if(caseVal <= 768 && caseVal >= 480) { this.schema = "tablet"; } if(caseVal <= 960 && caseVal >= 768 ) { this.schema = "ptablet"; } if(caseVal >= 1024 && caseVal <= 1280) { this.schema = "desktop-min"; } if(caseVal >= 1280) { this.schema = "desktop-max"; } Автоматически подключаемые схемы: 1) мобильный телефон 2) таблетка(планшет) 3) таблетка в режиме портрета 4) десктопная схема минимум для меньше 1280px 5) десктопная схема максимум для больше 1280px Таким образом упростилась верстка под разные устройства с использованием Evolution, а также произошло избавление от надобности писать media-queries. CSS-схемы расположены в /app/schema. также мною запланирована реализация сетки для удобной верстки шаблонов и небольшой bootstrap с готовыми стилями(возможно будут разные цветовые схемы по вкусу). |
v.1.5.1
Добавлены модули removeClass, addClass и hasClass. Оптимизирован модуль $.scroll для работы с animate engine и возможностью использования easing. |
v 1.5.2
Закончил все мыслимые и немыслимые тесты и сделал первый релиз фреймворка(https://github.com/xShiftx/javascrip...ework/releases). Есть пара багов связанных с ошибками Edge, о которых я написал разработчикам(два из них уже подтвердили и будут исправлять). Баги мелочные: при анимациях в IE желательно указывать изначально оба свойства и left и right ибо они по умолчанию не вычисляются браузером и отдаются как значения auto. Я не стал лепить костылей и просто попросил исправить код у разработчиков. Вот ошибки: https://developer.microsoft.com/en-u...sues/10216077/ https://developer.microsoft.com/en-u...sues/10216218/ В целом: вы можете спокойно использовать фреймворк на Production. Пока нет сетки для верстки, но я над этим активно думаю(задача не простая). Если вам нужны какие-то функции или модули - вы можете запросить об реализации здесь или написать мне на почту shift-sg@yandex.ru. Также приглашаю разработчиков к разработке и тестированию. Религия не запрещает менять код ядра - все адекватные правки кода буду смотреть и принимать решение о включении изменений в будущие релизы. Пока над проектом работаю один. Присоединяйтесь. С радостью приму. |
Часовой пояс GMT +3, время: 14:28. |