Я использую слишком много JQuery? Когда я пересекаю черту?

C99 N1256 стандартная черновик

http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf

6.5.3.4 Оператор sizeof :

3 При применении к операнду, который имеет структуру или тип объединения, результатом является общее количество байтов в таких объект, включая внутреннюю и конечную прокладку.

blockquote>

6.7.2.1 Спецификаторы структуры и объединения :

13 ... Там может быть неназванным дополнением внутри объекта структуры, но не в начале.

blockquote>

и:

15 В конце структуры может быть неназванное дополнение или объединение.

blockquote>

Новая функция члена C99 с гибким элементом массива (struct S {int is[];};) также может влиять на заполнение:

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

blockquote>

Приложение J Проблемы с переносимостью повторяет:

Следующие неуказаны: ...

  • Значение байтов заполнения при хранении значений в структурах или объединениях (6.2.6.1)
blockquote>

C ++ 11 Стандартная черновая версия N3337

http://www.open-std.org/jtc1/sc22/wg21/ docs / papers / 2012 / n3337.pdf

5.3.3 Размер :

2 При применении к классу результатом является количество байтов в объекте этого класса, включая любое дополнение, необходимое для размещения объектов этого типа в массиве.

blockquote>

9.2 Члены класса :

Указатель на объект структуры стандартного макета, соответствующим образом преобразованный с использованием reinterpret_cast, указывает на его начальный член (или если этот элемент является битовым полем, то t o единица, в которой он находится) и наоборот. [Примечание. Таким образом, в рамках объекта структуры стандартного макета может быть указано неназванное заполнение, но не в его начале, по мере необходимости, для достижения соответствующего выравнивания. - end note]

blockquote>

Я знаю достаточно C ++, чтобы понять примечание: -)

25
задан 5 revs, 4 users 67% 13 August 2010 в 09:23
поделиться

8 ответов

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

jQuery, безусловно, не следует использовать в качестве замены CSS - подумайте о пользователях, у которых отключен JavaScript.

Я знаю, что этим изображением злоупотребляют, но кто-то должен был вставить его сюда:

Image Credit - bobince .

87
ответ дан 28 November 2019 в 17:39
поделиться

Если вы отключили java-скрипт в своем браузере, а ваш сайт / приложение не запускается или не работает без него, то у вас проблема.

JS - это здорово, но он никогда не должен останавливать пользователя от использования того, что вы создали, ЕСЛИ это отключено.

6
ответ дан 28 November 2019 в 17:39
поделиться

Если это легко сделать в CSS, откажитесь от jQuery и сделайте это в CSS. Таким образом, вам не нужно зависеть от выполнения javascript для внешнего вида вашего приложения.

4
ответ дан 28 November 2019 в 17:39
поделиться

Я не думаю, что здесь есть "линия", я думаю, что есть некоторые простые вещи и некоторые серые области, которые вы должны уравновесить, что вы хотите. Расширенные функции, производительность, совместимость - представьте, что это треугольник, трудно сделать все 3 как можно лучше одновременно.

Если CSS может это сделать, конечно, сделайте это в CSS. Если это невозможно сделать в CSS, используйте jQuery, но не используйте jQuery там, где накладные расходы не нужны, например. $ (this) .attr ("id") обычно может быть this.id , многие вещи доступны строго в DOM и по-прежнему доступны для разных браузеров.

Когда вы используете это слишком часто? Когда это не , иногда вам нужен jQuery для кроссбраузерных селекторов CCS3, иногда вы используете CSS-селектор, который уже доступен , поместите его в таблицу стилей . Есть сотня других примеров, но если вы можете обойтись без него кроссбраузерно, то в этом нет необходимости, такие вещи, как затухание, не являются тривиальным делом. Если вам вообще нужно включить jQuery, нет причин не использовать .fadeIn () , когда у вас есть (код был включен, зачем его дублировать?)

JavaScript против отсутствия JavaScript

Как в комментариях сказано, что ваш сайт должен предлагать все основные функции без javascript , обычно это не проблема, например захват щелчка и загрузка содержимого через AJAX ... если вы его не фиксируете, выполняется полная перезагрузка страницы, это простой откат к стандартному поведению.Однако все «навороты»? Это, конечно, самоуверенное мнение, но я не думаю, что вам следует отказываться от предложения всей функциональности без JavaScript. Пользователь отключил его, они не получают ничего необычного, это нормально ... посмотрите на SO в качестве примера, disable javascript отключает множество несущественных функций , вы можете просматривать все в порядке , но комментирование, голосование, в основном действия не обязательно доступны без JavaScript.

7
ответ дан 28 November 2019 в 17:39
поделиться

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

/** Select 400 rows and change the background colour **/
$('#table tr').css('backgroundColor', 'blue');

Вместо:

/** jQuery **/
$('#table').addClass('blueRows');

/** CSS **/
#table tr.blueRows {
    background-color: blue;
}

Чтобы избежать стилизации jQuery, вы также можете установить класс в body, чтобы его было легче стилизовать с помощью CSS для браузеров с поддержкой Javascript:

/** jQuery **/
$(document).addClass('JS-enabled');

/** CSS **/
body #table tr{
    background: #FFF;
}

body.JS-enabled #table tr {
    background: blue;
}
2
ответ дан 28 November 2019 в 17:39
поделиться

jQuery чаще всего применяется после загрузки документа. Я полагаю, что если вы можете добиться того же с помощью простого CSS, CSS - это правильный путь. Меньше нагрузки на браузер, и если у кого-то не включен jQuery, по крайней мере, есть (некоторый) стиль из-за CSS.

0
ответ дан 28 November 2019 в 17:39
поделиться

Например, я чередую цвета строк таблицы или создаю эффекты наведения кнопок и ссылок с помощью JavaScript / jQuery. Это приемлемо? Или мне следует продолжать использовать CSS для подобных вещей?

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

table.classname tr:nth-child(even) td {
  background-color: #ddd;
}

Но это вообще не работает в Internet Explorer (хотя должно быть в следующей версии 9). Поэтому, если вам нужно, чтобы все выглядело одинаково в разных браузерах, используйте вместо этого jQuery.

Для эффектов наведения ссылки, предполагая, что вы имеете в виду изменение цвета и т. Д., А не причудливую анимацию, определенно используйте CSS , поскольку он поддерживается повсюду.

0
ответ дан 28 November 2019 в 17:39
поделиться

Хорошо, не помечайте меня как тролля...

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

Если вы хотите, чтобы он работал позже без поддержки JavaScript, то вы должны попытаться использовать css. Но если вы не планируете поддержку без JavaScript, и она работает, ищите то, что проще для вас

0
ответ дан 28 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: