2009-06-11 7 views
104

Существует множество примеров достижения определенных вещей в javascript/dom с помощью jQuery. Однако использование jQuery не всегда является вариантом, который может помочь понять примеры javascript-решений, написанных в jQuery.Есть ли простой способ конвертировать jquery-код в javascript?

Есть ли простой способ конвертировать код jQuery в обычный javascript? Я думаю, без необходимости доступа или понимания исходного кода jQuery.

+0

Я не могу понять, почему вы когда-нибудь хотели бы сделать это. Но вы всегда можете использовать ванильный JavaScript DOM, чтобы сделать в десяти строках то, что вы могли бы сделать с помощью jQuery. – yfeldblum

+7

Я был в основном после чего-то, что конвертировало 1 строку jquery в 10 строк javascript vanilla ... для случаев, когда jquery недоступен ... – davidsleeps

+0

Даже если вы не можете использовать тег скрипта для включения jQuery, вы всегда можете добавьте мини-версию в исходный файл. Я не вижу никакой причины, по которой jQuery не будет доступен, кроме какой-то корпоративной политики. – cdmckay

ответ

34

Самый простой способ - это просто узнать, как делать DOM, перемещаясь и используя простой DOM api (вы, вероятно, назовете это: обычный JavaScript).

Это может быть больно для некоторых вещей. (именно поэтому библиотеки были изобретены в первую очередь).

Googling для «javascript DOM traversing/manipulation» должен предоставить вам множество полезных (и некоторых менее полезных) ресурсов.

Статьи на этом сайте, являются довольно хорошо: http://www.htmlgoodies.com/primers/jsp/

И как Nosredna указывает в комментариях: не забудьте проверить во всех браузерах, потому что теперь JQuery не будет заниматься несогласованности для вас.

+4

И вы должны быть уверены, что будете тестировать различные версии каждого браузера. – Nosredna

+0

Действительно. Половина точки jQuery заключается в том, что она сортирует все проблемы совместимости JS с кросс-браузером для вас. – Noldorin

+0

Это правда, и почему я использую jquery всякий раз, когда могу. это конкретное приложение - это среда только для интрасети с обычной стандартной настройкой рабочей станции ... политика предотвращает использование jquery в приложении! – davidsleeps

1

Книга Джереми Кита «DOM Scripting» - отличное введение в работу с Javascript и DOM. Я очень рекомендую, хотите ли вы использовать jQuery или нет. Хорошо знать, что происходит внизу.

6
+2

Немного не по теме, но переговоры Крокфорда, как правило, потрясающие. – Indolering

8

Есть простой способ преобразовать JQuery код в обычный JavaScript?

Нет, особенно если:

понимание примеров яваскрипта решений , написанных в JQuery [это] трудно.

JQuery и все рамки, как правило, упрощают понимание кода. Если это трудно понять, то ваниль Javascript будет пытка :)

+13

есть ответы на все вопросы – ftrotter

+2

Кроме того, хотя JQuery делает код более кратким (обычно), его можно обсуждать, действительно ли это упрощает *. jQuery может сделать код более сложным для анализа. Например, '' with 'myfunction (field) {field.value =" 3 "; } 'имеет для меня больше смысла, чем' 'with' (function ($) {$ (вещь) .click ({$ (вещь) .val ("3");});})() ' – liljoshu

6

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

16k - или что бы то ни с gzip'нутыми , миниатюрная библиотека jQuery - может быть слишком большой для вашего сайта, который предназначен для мобильного браузера. W3c рекомендует, чтобы все HTTP-запросы для мобильных веб-сайтов составляли не более 20k.

w3c specs for mobile

Так мне нравится кодирования в моем славном, немногословный, прикованного JQuery. Но теперь мне нужно оптимизировать для мобильных устройств. Должен ли я действительно вернуться и выполнить сложную, утомительную работу по переписыванию всех вспомогательных функций, которые я использовал в библиотеке jQuery? Или есть какое-то удобное приложение, которое поможет мне перекомпилировать?

Это было бы очень мило. К сожалению, я не думаю, что такая вещь существует.

43

Это даст вам 90% пути туда;)

window.$ = document.querySelectorAll.bind(document) 

Для Ajax, то Fetch API теперь supported on the current version of every major browser. Для $.ready(), DOMContentLoaded имеет near universal support. You Might Not Need jQuery дает эквивалентные нативные методы для других общих функций jQuery.

Zepto предлагает аналогичную функциональность, но весит 10 кг на молнии. Существуют специальные сборки Ajax для jQuery и Zepto, а также некоторые micro frameworks, но jQuery/Zepto имеют прочную поддержку, а 10KB - только ~ 1 секунду на модеме 56K.

16

Я только что нашел это довольно впечатляющий учебник о JQuery для преобразования яваскрипта из Jeffrey Way на Jan 19 2012*Copyright © 2014 Envato*:

http://net.tutsplus.com/tutorials/javascript-ajax/from-jquery-to-javascript-a-reference/

Нравится нам это или нет, но все больше и больше разработчиков будучи , впервые представил миру JavaScript через jQuery. Во многих моделях эти новички - счастливые. Они имеют доступ к множеству новых API JavaScript, которые делают процесс DOM обход (что многие люди зависят от jQuery для) значительно проще. К сожалению, они не знают об этих API!

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

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

Кроме того, Jeffrey Way упомянул о его вдохновение ведьма, кажется, хороший праймер для понимания: http://sharedfil.es/js-48hIfQE4XK.html

Имеет тизер, это сравнение документа о JQuery в JavaScript:

$(document).ready(function() { 
    // code… 
}); 

document.addEventListener("DOMContentLoaded", function() { 
    // code… 
}); 

$("a").click(function() { 
    // code… 
}) 

[].forEach.call(document.querySelectorAll("a"), function(el) { 
    el.addEventListener("click", function() { 
    // code… 
    }); 
}); 

Вы должны смотреть.

+0

Выглядит многообещающе! – Indolering

8

Я знаю, что это старый поток, но есть отличный ресурс, показывающий собственный javascript-эквивалент jquery, он даже включает в себя примеры ES6. Это наиболее полное из того, что я нашел из других статей, посвященных этому вопросу.

jQuery to Vanilla JS

+0

отличный ресурс, спасибо! – davidsleeps

Смежные вопросы