Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery - есть ли смысл? (https://javascript.ru/forum/jquery/16457-jquery-est-li-smysl.html)

розовый слоник 12.04.2011 17:29

x-yuri
Тут на сайте есть пример написания анимации и пусть там не 5-10 строчек, а гдето чуть больше 20 это сути не меняет, хотя думаю, что если сесть и подумать можно и в 10ть строк написать.

Kolyaj 12.04.2011 17:31

<html>
<head>
    <title>test</title>
    <style type="text/css">
        .block {
            width: 800px;
            height: 300px;

            background: red;
        }
    </style>
</head>
<body>
<button onclick="hide()">Скрыть</button>
<div id="t" class="block"></div>

<script type="text/javascript">
    function hide() {
        var el = document.getElementById('t');
        var count = 10, i = count, width = el.offsetWidth, height = el.offsetHeight;
        (function() {
            if (i--) {
                el.style.width = Math.round(width * i / count) + 'px';
                el.style.height = Math.round(height * i / count) + 'px';
                if (typeof el.style.opacity == 'string') {
                    el.style.opacity = i / count;
                } else {
                    el.style.filter = 'Alpha(opacity=' + Math.round(i / count * 100) + ')';
                }
                setTimeout(arguments.callee, 20);
            }
        })();
    }
</script>
</body>
</html>


Это если уж совсем без библиотек.

розовый слоник 12.04.2011 17:31

да и что бы не создавать новую тему такой вопрос.
я погуглил 5ть мин и не нашел ничего про регулярки в jquery, их там нет и их писать, как на js? или все же, как то по другому?

розовый слоник 12.04.2011 17:32

Kolyaj
Я пользуюсь таким же примером для анимации :)

B@rmaley.e><e 12.04.2011 20:39

Цитата:

Сообщение от x-yuri
почему?

Потому что у этого объекта есть свои методы, работать с которыми гораздо удобнее.

Цитата:

Сообщение от розовый слоник
я погуглил 5ть мин и не нашел ничего про регулярки в jquery, их там нет и их писать, как на js? или все же, как то по другому?

Зачем они там, когда они в языке есть?

kostr 12.04.2011 22:02

розовый слоник,
jquery - это тот же javascript, просто с добавленной библиотекой. Все, что работало на чистом javascript, будет работать и с ней, регулярные выражения в том числе. Зачем им добавочный функционал, они и так неплохо обрабатываются.

x-yuri 13.04.2011 05:28

вот тот же код на jquery, без использования ее возможностей в плане анимации
<html>
<head>
    <title>test</title>
    <style type="text/css">
        .block {
            width: 800px;
            height: 300px;

            background: red;
        }
    </style>
</head>
<body>
<button onclick="hide()">Скрыть</button>
<div id="t" class="block"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript">
    function hide() {
        var count = 10, i = count, width = $('#t').width(), height = $('#t').height();
        (function() {
            if (i--) {
                $('#t').css({
                    'width': Math.round(width * i / count) + 'px',
                    'height': Math.round(height * i / count) + 'px',
                    'opacity': i / count
                });
                setTimeout(arguments.callee, 20);
            }
        })();
    }
</script>
</body>
</html>

в данном конкретном случае изменения, может быть, небольшие. Но деталей реализации меньше. Следовательно проще понять, что эта функция делает. Если по какой-либо причине вам нужно в первую очередь видеть не что делает код, а как он это делает, это не значит, что так должно быть всегда и везде. Оба подхода имеют право на жизнь. Да, пряча реализацию, мы можем усложнить себе отладку в дальнейшем. Но это всего лишь возможность, у нее есть свои достоинства и недостатки. Где-то это уместно, где-то - нет, для кого-то подходит, для кого-то - нет. Да и просто, не прятать реализацию - значит не использовать функции. И люди делают это в разной степени, кто-то больше, кто-то - меньше

в общем, я к тому, что там 200КБ несжатого кода и куча недоплагинов, но ими можно пользоваться. :) И это опять же одна из возможностей, со своими достоинствами и недостатками

Kolyaj 13.04.2011 07:59

Цитата:

Сообщение от x-yuri
вот тот же код на jquery, без использования ее возможностей в плане анимации

Т.е. ради скрытия реализации opacity ты подключил 200 кб несжатого кода. Я бы просто вынес setElementStyle в отдельную функцию.


В jQuery нет инструментов для удобного наследования "классов", поэтому я не понимаю, как на нём можно создавать сложные приложения.

x-yuri 13.04.2011 11:24

Цитата:

Сообщение от Kolyaj
Т.е. ради скрытия реализации opacity ты подключил 200 кб несжатого кода. Я бы просто вынес setElementStyle в отдельную функцию.

нет, конечно. В том примере я просто продемонстрировал скрытие реализации. В общем-то после того, как я попросил привести аналог, я понял, что это немного не по теме. В первую очередь, я хотел сказать, что в jquery 200КБ функционала и для нее написана куча плагинов, и про нее много написано. В большинстве случаев самописная библиотека будет хуже. Недостатки: в ее коде сложно разбираться, если что-то не работает (но зачастую можно найти альтернативный вариант), может быть заметно медленнее реализации на js. Т.е. jquery - это в первую очередь функционал, которым можно пользоваться

Цитата:

Сообщение от Kolyaj
В jQuery нет инструментов для удобного наследования "классов", поэтому я не понимаю, как на нём можно создавать сложные приложения.

согласен, но ведь реализация наследования - 5-10 строк на чистом js :lol: Кроме того, можно подключить реализацию классов из mootools, например. Его можно собирать, выбирая, какие части нужны, прямо на официальном сайте. Даже плагин где-то видел, который подключает классы из mootools к jquery

и еще, на чистом js проще писать неподдерживаемый код, потому что jquery - более высокоуровневая штука

Kolyaj 13.04.2011 11:42

Цитата:

Сообщение от x-yuri
В первую очередь, я хотел сказать, что в jquery 200КБ функционала и для нее написана куча плагинов, и про нее много написано.

Весь этот функционал нужен только потому, что у jQuery идеология коллекции DOM-элементов. Т.е. даже если ты выбираешь один элемент по id-шнику, ты всё равно получишь коллекцию. В результате нативные DOM-методы и свойства (большинство из которых кроссбраузерны) использовать становится неудобно. Поэтому пришлось на каждый чих писать свою имплементацию, отсюда 200кб.
А плагины вообще упоминать глупо, ибо любой скрипт это плагин к нативному JS, так что у нативного JS плагинов заведомо больше, чем у jQuery :)


Цитата:

Сообщение от x-yuri
но ведь реализация наследования - 5-10 строк на чистом js

Вот так и получается, вроде бы 200кб есть, а базовые вещи всё равно самому приходится писать.


Цитата:

Сообщение от x-yuri
и еще, на чистом js проще писать неподдерживаемый код, потому что jquery - более высокоуровневая штука

Неподдерживаемый код на чём угодно писать легко. На качество jQuery-кода можно посмотреть на этом форуме.


Часовой пояс GMT +3, время: 23:31.