Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.12.2016, 20:07
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Сообщение от kobezzza Посмотреть сообщение
Я имел ввиду унифицирует интерфейс IndexedDB на мотив LocalStorage.
Не думаю, что это хорошая идея и реализуемо. Вседь это MySQLi, если я не ошибаюсь. Как это можно унифицировать на мотив LS если речь идет о полноценной БД.

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

Вот LS - это хорошо. Теперь Cookies не нужны, да и места больше дают.
Ответить с цитированием
  #12 (permalink)  
Старый 04.12.2016, 20:22
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Не думаю, что это хорошая идея и реализуемо.
Вы меня либо плохо читаете, либо не читаете вообще) Я уже говорил, что есть тысячи либ, которое это делают, например LocalForage. Зачем? Когда нам нужно асинхронное key-value для больших данных, то интерфейс СУБД избыточен и всё. Вообще голый интерфейс IndexedDB не удобный, и если нужно сахарное АПИ как к СУБД, то есть PouchDB, MongoLite и т.д. Я кстати об этом тоже писал.

Цитата:
Вообще могу попробовать и это реализовать, если нужны в движке.
Вы пишите библиотеку для себя и для развития себя как программиста. Практического смысла в ней нет, ввиду того, что в 2016 году библиотеки типа jQuery не нужны, а если будет нужно - возьму jQuery. Более того, идея засунуть "всё всё" в один неймспейс хуже некуда и именно за это ругают jQuery больше всего.

Но я не хочу разубедить вас писать свой велосипед, пишите, т.к. это отличный опыт.

Цитата:
Но мне кажется этим еще не скоро начнут пользоваться, да и излишество это на стороне клиента, на мой взгляд.
Пользуюсь IndexedDB уже года 4-5. Вы наверное удивитесь, но сейчас люди используют потоки, полноценные СУБД, С++ модули и прочее на клиенте.
__________________
kobezzza
code monkey
Ответить с цитированием
  #13 (permalink)  
Старый 04.12.2016, 21:15
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Сообщение от kobezzza Посмотреть сообщение
Вы меня либо плохо читаете, либо не читаете вообще) Я уже говорил, что есть тысячи либ, которое это делают, например LocalForage. Зачем? Когда нам нужно асинхронное key-value для больших данных, то интерфейс СУБД избыточен и всё. Вообще голый интерфейс IndexedDB не удобный, и если нужно сахарное АПИ как к СУБД, то есть PouchDB, MongoLite и т.д. Я кстати об этом тоже писал.



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

Но я не хочу разубедить вас писать свой велосипед, пишите, т.к. это отличный опыт.



Пользуюсь IndexedDB уже года 4-5. Вы наверное удивитесь, но сейчас люди используют потоки, полноценные СУБД, С++ модули и прочее на клиенте.
>> в 2016 году библиотеки типа jQuery не нужны

Не нужны кому? Именно вам? А я считаю есть достаточное число не таких опытных программистов, которым бы такие библиотеки не помешали.

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

Я понимаю, что вам больше подавай ES6, но это будет актуально только для Node.js и для сервера. Браузер Edge его не понимает до сих пор, а это критическое в данном случае.

Да и Node.js это не панацея. Я вот предпочитаю PHP.

ИМХО, как-то писал обертку для API MySQLi на PHP на подобие Doctryne только без поддержки JOIN. Интересно, но мало чего полезного в итоге.

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


А пишу я не бесполезную библиотеку, а полноценный front-end framework ибо включаю в ядро уже более сложные по своему принципу модули. Это не библиотека.
Ответить с цитированием
  #14 (permalink)  
Старый 04.12.2016, 21:22
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Не нужны кому? Именно вам? А я считаю есть достаточное число не таких опытных программистов, которым бы такие библиотеки не помешали.
Кому нужны, то те возьмут jQuery.

Цитата:
Я понимаю, что вам больше подавай ES6, но это будет актуально только для Node.js и для сервера. Браузер Edge его не понимает до сих пор, а это критическое в данном случае.
Хоспади, https://babeljs.io/. Пишу всё на ES6 уже года 4 точно, хотя мейнстримом он стал года 2 как, т.к. до появления бабеля всё было сложнее.

Цитата:
Мне тоже не нужна jQuery по большому счету, но пишется с ней проще и приятнее чем на нативном скрипте.
DOM API Level4 и так как жиквери.

Или fetch API для аякс запросов:

await fetch('/my-request')


Цитата:
А именно джойны - это основное полезное из того что есть в Indexed DB, но сложности синтаксиса таковы, что красивую обертку для них написать практически невозможно.
Откуда вы такие берётесь. JS тьюринг полный язык и вы можете написать на нём всё, что можно написать и на другом языке.

Цитата:
А пишу я не бесполезную библиотеку, а полноценный front-end framework ибо включаю в ядро уже более сложные по своему принципу модули. Это не библиотека.
Для начала разберитесь тогда в терминологии.

***

Ладно, вы явно не можете воспринимать критику, поэтому удаляюсь из треда.
__________________
kobezzza
code monkey
Ответить с цитированием
  #15 (permalink)  
Старый 04.12.2016, 21:39
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

>> Хоспади, https://babeljs.io/. Пишу всё на ES6 уже года 4 точно, хотя мейнстримом он стал года 2 как, т.к. до появления бабеля всё было сложнее.

Упарываетесь полифилами. Ваш выбор. Не мой. Я не спешу.
Ответить с цитированием
  #16 (permalink)  
Старый 05.12.2016, 12:35
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

В очередной раз, пока мой рабочий ноут в ремонте со всеми данными, помаленьку пилю код фреймворка на мамкином ноутбуке (:

v. 1.4.7:

Добавлены легкие эффекты для анимации CSS свойств(easeInOutCubic, elastic, circ, back), которые были сперты из мануала(https://learn.javascript.ru/js-animation).

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

Да и bounce у меня почему-то не заработал(повесил всю страницу и разбираться в этом я пока не стал, но позже обязательно добавлю и его).

Добавлен $.hasClass для проверки имеет ли элемент установленный класс заданный в параметре; или классы.

Добавлен $externalScript, который при указании сорцы прикрепляет и запускает асинхронно искомый удаленный JS-файл.

Планирую написать небольшой Rooter для того, чтобы можно было спокойно обходиться без Angular и прочего.

Также принимаю идею по поводу реализации модулей.
Ответить с цитированием
  #17 (permalink)  
Старый 13.12.2016, 19:43
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

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 раз примерно. Минифицированная версия будет немного позже.
Ответить с цитированием
  #18 (permalink)  
Старый 14.12.2016, 11:24
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

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 с готовыми стилями(возможно будут разные цветовые схемы по вкусу).
Ответить с цитированием
  #19 (permalink)  
Старый 16.12.2016, 12:06
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

v.1.5.1

Добавлены модули removeClass, addClass и hasClass.
Оптимизирован модуль $.scroll для работы с animate engine и возможностью использования easing.
Ответить с цитированием
  #20 (permalink)  
Старый 17.12.2016, 13:47
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

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.

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

Пока над проектом работаю один. Присоединяйтесь. С радостью приму.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно загрузить через framework Mateus jQuery 5 11.01.2013 20:08