Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> «js-core» — JavaScript framework, Новый JavaScript framework 
:(
    Опции темы
Octane
Дата 6.9.2008, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



Здравствуйте.
Занимаюсь разработкой JavaScript framewok'а «js-core». Хотел бы услышать замечания или рекомендации по поводу реализации работы и функциональности framework'а. Названия методов схожи с «jQuery», но реализация и входные параметры совершенно другие.
  • Небольшой размер (около 520 строк кода)
  • Кросс-браузерная работа (IE5.5+, FireFox 2.0+, Opera 8.5+)
  • Реализован «DOMContentLoaded»
  • Выполняется кэширование для «getElementById»
  • В версии 2.4 работает с AJAX
Пример использования:
Код

$(document.body).append('h1').html('Hello World!');

Функция «$» принимает в качестве входного параметра DOM-узел или строку, содержащую идентификатор узла. В отличие от «jQuery», в «js-core» работа ведется с последним используемым узлом, т.е. в «jQuery» приведенный выше код перезаписал бы «document.body.innerHTML», вместо того, чтобы изменить «innerHTML» только что созданного узла «h1», как в «js-core».

Для чего собственно был написан? Для применения в небольших проектах, где использование такого «монстроскрипта», как «jQuery» или «PrototypeJS» нецелесообразно, а так же для ситуаций, когда требуется высокая производительность и малое время загрузки, но в тоже время не хочется писать на «голом» JavaScript.


Это сообщение отредактировал(а) Octane - 14.9.2008, 00:30
PM MAIL WWW ICQ   Вверх
JSman
Дата 7.9.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Функционал стандартный.

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

PM ICQ   Вверх
Octane
Дата 7.9.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



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

function _$(arg) {
  this.node = typeof arg == 'string' ? document.getElementById(arg) : arg;
}

_$.prototype = {
  parent: function() {
    return new _$(this.node.parentNode);
  },
  // тут же все остальные методы
}

function $(arg) {
  return new _$(arg);
}

PM MAIL WWW ICQ   Вверх
JSman
Дата 9.9.2008, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Поймите меня правильно, я уже проходил это. Я реализовывал под ie эмуляцию Node, чтобы можно было расширить прототип. В итоге получилось сплошное нагромождение кода. У Вас в фреймворке, на лицо, как минимум, отсутствие полноценной работы с атрибутами. Почитайте минимум ppk, там есть описание дом-свойств. Игнорирование таких методов как swapNodes и прочих не есть хорошо. И поверьте, это лишь начало. Можно продожить демагогию об отборе элементов и так далее. А событийная модель?

В итоге, я хочу сказать, продукт пока еще сырой, особой ценности не несет (прошу прощения за критику). Вникните в идеи Dean Edwards. Поможет, если что-то новое хотите создать.

Постройте именно концепцию фреймворка. Без этого не видать успеха
PM ICQ   Вверх
Sannis
Дата 9.9.2008, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: нет
Всего: 13



[offlopic]Дня не прошло, как вы разукрасили гравную блока тупым баннером Сапы. Ну нафига? (:[/offlopic]


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
JSman
Дата 9.9.2008, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Цитата(Sannis @  9.9.2008,  01:13 Найти цитируемый пост)
Дня не прошло, как вы разукрасили гравную блока тупым баннером Сапы

Юмор оценил smile Конечно, я вижу, что человек реально старался, и в этом случае, молодец.

Если по существу, дело в том, что любой должен, если хочет протолкнуть сквозь массы свой программный продукт, особенно фреймворк, сказать, что тот механизм лучше другого тем-то и тем-то, иначе зададим вопрос: зачем он нужен. В данном случае, мы говорим о ядре и поддержке Node. Написать функции типа trim, это, конечно, прикольно, но нужно понимать, что фреймворк должен иметь свой двигатель, причем именно в этом заключается его реальное отличие от иных продуктов. Если это пародия на jQuery, то лучше этого продукта - jQuery, как минимум.  Можно красть идеи - это совершено правильно. Крадите, в этом прогресс, законодательство не запрещает. Уже фреймворки в мире знают Если предъявлять что-то новое, то нужно сравнивать новое веяние по :
    1. событийным моделям
    2. компонентному подходу
    3. отбору элементов
    4. неявной поддержке стандартов
    5. публикованию принципиально новых универсальных функций, которые реально уменьшают объем кода, например сортировка элементов.
    6. анимации, в конце концов.
    7. скорости -  в первую очередь

и так далее.
PM ICQ   Вверх
Се ля ви
Дата 9.9.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



Octane, главная проблема с этими библиотеками в том, что они грузятся целеком, при этом они довольно большие и используются обычными юзверями на 2-3%.
Я сейчас разрабатываю механизм динамической подгрузки небольших кусочков сценариев через AJAX по мере надобности, я думаю, вам тоже следует посмотреть в эту сторону smile


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Octane
Дата 9.9.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



Се ля ви, да я тоже думал об этом, поэтому пока не спешу все модули (AJAX, Forms, ect) объединять в один файл, хотел реализовать механизм загрузки таких модулей (если они нужны), типа инклуда библиотек, правда не через AJAX, а просто созданием нового DOM-узал «script». Но пока, не успел это сделать.

JSman, да естественно он еще сырой, правда я не ставил перед собой задачу «угадывать, что же хотел написать программист», как это сделано, например, в jQuery, который вместо указанного имени атрибута «class» может подставить правильное значение «className», поэтому для многих может показаться что некоторые функции работают не правильно. Анимация конечно будет, пока можно сказать реализован базовый функционал.

Да и я не пытаюсь написать «убийцу jQuery» или какого-то другого существующего фреймворка. Просто пытаюсь сделать что-то более быстрое и легкое, но в тоже время многофункциональное.

swapNode ни разу не приходилось использовать и видеть примеры его использования в каких-либо скриптах.

Это сообщение отредактировал(а) Octane - 9.9.2008, 20:26
PM MAIL WWW ICQ   Вверх
JSman
Дата 20.9.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Цитата(Се ля ви @  9.9.2008,  12:28 Найти цитируемый пост)
 механизм динамической подгрузки небольших кусочков сценариев через AJAX

Количество кусочков библиотеки = количество запросов на сервак. тормозить не будет ли случайно?;-)


Цитата(Octane @  9.9.2008,  19:32 Найти цитируемый пост)
swapNode ни разу не приходилось использовать и видеть примеры его использования в каких-либо скриптах.

Вот его можно было бы использовать здесь. И есть еще много примеров.
PM ICQ   Вверх
Octane
Дата 21.9.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



А чем «insertBefore» плохо? Этот метод переносит существующий узел. Не удалять, не пересоздавать не надо, просто выполняем «insertBefore» с уже существующим узлом. «swapNode», как я понял, вообще выдумка Microsoft, как и «outerHTML» и другие бесполезные вещи.

Это сообщение отредактировал(а) Octane - 21.9.2008, 23:15
PM MAIL WWW ICQ   Вверх
JSman
Дата 24.9.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Цитата(Octane @  21.9.2008,  23:14 Найти цитируемый пост)
«swapNode», как я понял, вообще выдумка Microsoft, как и «outerHTML» и другие бесполезные вещи.

Вы же создатель Фреймворка и Вы же не видите основной ценности использования готовых функций. Поучать не  собираюсь, но отрицание предложений от Ms, их концепции, как пример, породит брешь в программном продукте.

insertBefore != swapNode
outerHTML - это нормально

Вот, специально для Вас, приведу реализацию кроссбраузерных функций

Код


window.ie = !!window.ActiveXObject;
Node =  // модуль Node
{
    swapNode : function (x, y)
    {
        if (window.ie && x!=y) return x.swapNode(y); else return;

        var z = y.nextSibling;
            x.parentNode.insertBefore(y, x);
            
            if (z) y.parentNode.insertBefore(x, z);
            else y.parentNode.appendChild(x);
    },
    
    serializeToString : function (node)
    {
        return node.outerHTML || node.xml || new XMLSerializer().serializeToString(node)
    }


}; 



Разговор переходит во флуд. Надеюсь, что мы в данном разделе не будем видеть холиварsmile
PM ICQ   Вверх
Octane
Дата 24.9.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



Есть функции «inserAfter» и «insertBefore»
Код

$(node1).insertAfter(node2);
// или
$(node1).insertBefore(node2);

которые выполнят тоже самое, используя метод «insertBefore», надобность делать «swapNode», мне кажется, отпадает. Пример использования «swapNode» не нашел ни в «jQuery», ни в «Prototype», ни в «MooTools», ни в «DOMAssistant». Видимо, не такая уж это ценная готовая функция.

Про «outerHTML» я был не прав, спасибо за полезную функцию, включу ее в «js-core».

Это сообщение отредактировал(а) Octane - 24.9.2008, 12:56
PM MAIL WWW ICQ   Вверх
Octane
Дата 25.9.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.5.2007
Где: Волгоград

Репутация: нет
Всего: нет



JSman, можете рассказать для каких браузеров нужен «node.xml»?
PM MAIL WWW ICQ   Вверх
JSman
Дата 26.9.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 279
Регистрация: 10.7.2006

Репутация: 1
Всего: 4



Опера и IE.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.