Có cách nào dễ dàng để chuyển đổi mã jquery sang javascript không? [đóng cửa]


142

Có rất nhiều ví dụ về việc đạt được những thứ nhất định trong javascript / dom bằng jQuery. Tuy nhiên, sử dụng jQuery không phải lúc nào cũng là một tùy chọn có thể khiến việc hiểu các ví dụ về các giải pháp javascript được viết bằng jQuery trở nên khó khăn.

Có cách nào dễ dàng để chuyển đổi mã jQuery sang javascript thông thường không? Tôi đoán mà không cần phải truy cập hoặc hiểu mã nguồn jQuery.


8
về cơ bản, tôi đã theo đuổi thứ gì đó đã chuyển đổi dòng 1 jquery thành 10 dòng javascript vanilla ... cho các trường hợp khi jquery không có sẵn ...
davids ngủs

1
Ngay cả khi bạn không thể sử dụng thẻ script để bao gồm jQuery, bạn luôn có thể thêm một bản án được rút gọn vào tệp nguồn. Tôi không thể thấy bất kỳ lý do nào khiến jQuery không có sẵn ngoài một số loại chính trị công ty.
cdmckay

23
Tôi có thể thấy sử dụng tốt cho điều này là tốt. Suppoe bạn chỉ sử dụng khoảng 10 - 100 dòng trong javascript với jQuery. Nó sẽ tiết kiệm băng thông bằng cách biên dịch lại và thay thế các hàm cho các phương thức cốt lõi và do đó không tải mọi thứ khác từ jQuery.

5
Tôi đã có cùng một câu hỏi. Nhiều người trả lời rằng jQuery đơn giản hơn, nhưng một nhà phát triển đã quen thuộc với JavaScript sẽ gặp một số vấn đề trong việc hiểu biểu tượng / viết tắt trong jQuery. Và lý do tôi hỏi là, vì một số lý do, tập lệnh jQuery tôi đã không hoạt động trong Blackberry. Đó là một kịch bản tải lên Ajax. Vì vậy, tôi nghĩ rằng tôi cần dịch nó sang Javascript :(

1
Tôi đang cố gắng tạo ra một JS-kydge bên trong một ứng dụng hiện có và tất cả các chức năng JS được tích hợp sẵn của ứng dụng sẽ phá vỡ nếu tôi bao gồm jQuery. Đó là một ứng dụng được viết kém (JIRA của Atlassian) và tôi chắc chắn rằng họ sẽ đổ lỗi, nhưng tôi cần điều này giống như vậy.
chadoh

Câu trả lời:


41

Cách đơn giản nhất là chỉ học cách thực hiện thao tác và duyệt DOM với api DOM đơn giản (có thể bạn sẽ gọi đây là: JavaScript bình thường).

Điều này tuy nhiên có thể là một nỗi đau cho một số điều. (đó là lý do tại sao các thư viện được phát minh ở nơi đầu tiên).

Googling cho "thao tác / thao tác DOM javascript" sẽ cung cấp cho bạn nhiều tài nguyên hữu ích (và một số ít hữu ích hơn).

Các bài viết trên trang web này là khá tốt: http://www.htmlgoodies.com/primers/jsp/

Và như Nosredna chỉ ra trong các bình luận: hãy chắc chắn kiểm tra trong tất cả các trình duyệt, bởi vì bây giờ jQuery sẽ không xử lý các mâu thuẫn cho bạn.


4
Và bạn phải chắc chắn kiểm tra các phiên bản khác nhau của từng trình duyệt.
Nosredna

1
Sự lựa chọn máy trạm để bàn ảnh hưởng đến việc sử dụng jQuery như thế nào?
Dan Davies Brackett

5
Tôi đồng cảm với chính trị của việc sử dụng thư viện nguồn mở cho một số tổ chức. Cuối cùng, thời gian bạn dành để viết lại một cách rõ ràng (và có thể là một cách khó khăn) vào giao dịch DOM đơn giản và JS bị lãng phí tiền cho công ty. Bạn có thể đặt trường hợp các công ty lớn, bao gồm cả những công ty rất bảo thủ, sử dụng jQuery: docs.jquery.com/Sites_Using_jQuery : Oracle, Google, Amazon, Dell, Bank of America, Intuit, Salesforce. Đây là những công ty cộng sản khó hippie. Đây là những công ty rất thực tế mà các bộ phận pháp lý có thể đã hoàn thành bài tập về nhà và chấp nhận jQuery ...
artlung

2
@davids ngủs - jQuery bị Microsoft xử phạt ... Nó được bao gồm trong Visual Studio 2008, về mặt kỹ thuật làm cho nó trở thành một công cụ "Microsoft". Điều đó sẽ làm cho chủ nhân của bạn cảm thấy tốt hơn?
Robert Harvey

4
Sự khác biệt đối với công ty của bạn giữa jquery và toàn bộ javascript mà bạn đã viết để làm điều tương tự là gì? Nó không giống như bạn đang cài đặt bất cứ thứ gì, mã hóa bằng một ngôn ngữ mới hoặc thêm BẤT CỨ phụ thuộc. Đây thực sự là điều ngu ngốc nhất tôi từng nghe, cho phép javascript nhưng không phải jQuery. jQuery LÀ JAVASCRIPT!
micmcg

60

Điều này sẽ giúp bạn đạt được 90% theo cách đó; )

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

Đối với Ajax, API Fetch hiện được hỗ trợ trên phiên bản hiện tại của mọi trình duyệt chính . Đối với $.ready(), DOMContentLoadedgần hỗ trợ phổ quát . Bạn có thể không cần jQuery cung cấp các phương thức gốc tương đương cho các hàm jQuery phổ biến khác.

Zepto cung cấp chức năng tương tự nhưng có trọng lượng 10 nghìn được nén. Có các bản dựng Ajax tùy chỉnh cho jQuery và Zepto cũng như một số khung vi mô , nhưng jQuery / Zepto có hỗ trợ vững chắc và 10KB chỉ ~ 1 giây trên modem 56K.


22

Tôi vừa tìm thấy hướng dẫn khá ấn tượng này về chuyển đổi jquery sang javascript từ Jeffrey Way vào ngày 19 tháng 1 năm 2012 *Copyright © 2014 Envato* :

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

Cho dù chúng ta có thích hay không, ngày càng có nhiều nhà phát triển được giới thiệu về thế giới JavaScript thông qua jQuery. Theo nhiều cách, những người mới này là những người may mắn. Họ có quyền truy cập vào rất nhiều API JavaScript mới, điều này làm cho quá trình duyệt DOM (điều mà nhiều người phụ thuộc vào jQuery) dễ dàng hơn đáng kể. Thật không may, họ không biết về các API này!

Trong bài viết này, chúng tôi sẽ thực hiện một loạt các tác vụ jQuery phổ biến và chuyển đổi chúng thành cả JavaScript hiện đại và kế thừa.

Tôi đã đề xuất nó trong một bình luận cho OP, và sau gợi ý của anh ấy, tôi xuất bản nó có một câu trả lời cho mọi người tham khảo.

Ngoài ra, Jeffrey Way đã đề cập về phù thủy truyền cảm hứng của mình dường như là một mồi tốt để hiểu: http : // Sharedfil.es/js-48h IfQE4XK.html

Có một lời trêu ghẹo, tài liệu này so sánh jQuery với 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…
  });
});

Bạn nên xem qua.


12

Tôi biết đây là một chủ đề cũ nhưng có một tài nguyên tuyệt vời hiển thị javascript gốc tương đương với jquery, nó thậm chí bao gồm các ví dụ ES6. Đây là bài viết toàn diện nhất mà tôi đã tìm ra trong số các bài viết khác về chủ đề này.

jQuery sang Vanilla JS


6

Có cách nào dễ dàng để chuyển đổi mã jQuery sang javascript thông thường không?

Không, đặc biệt là nếu:

hiểu các ví dụ về các giải pháp javascript được viết bằng jQuery [là] khó.

JQuery và tất cả các khung có xu hướng làm cho việc hiểu mã dễ dàng hơn. Nếu điều đó khó hiểu, thì javilla javascript sẽ bị tra tấn :)


15
những người khác có câu trả lời thực tế
ftrotter

2
Ngoài ra, mặc dù JQuery làm cho mã ngắn gọn hơn (thông thường), nhưng nó có thể gây tranh cãi cho dù nó thực sự làm cho nó dễ dàng hơn . jQuery có thể làm cho một số mã khó phân tích hơn về mặt tinh thần. Ví dụ, <input onclick="myfunction(this)">với tôi myfunction(field){ field.value = "3"; }có ý nghĩa hơn <input id='thing'>với(function ($) { $(thing).click({ $(thing).val("3");});})()
liljoshu

6

Tôi có thể thấy một lý do, không liên quan đến bài viết gốc, để tự động biên dịch mã jQuery thành JavaScript tiêu chuẩn:

16k - hoặc bất cứ thư viện jQuery được rút gọn, rút ​​gọn nào - có thể là quá nhiều cho trang web của bạn dành cho trình duyệt di động. W3c đang khuyến nghị rằng tất cả các yêu cầu HTTP cho các trang web di động nên tối đa là 20k.

thông số kỹ thuật w3c cho điện thoại di động

Vì vậy, tôi thích mã hóa trong jQuery đẹp, ngắn gọn và bị xiềng xích của tôi. Nhưng bây giờ tôi cần tối ưu hóa cho điện thoại di động. Tôi có nên thực sự quay lại và thực hiện công việc khó khăn, tẻ nhạt khi viết lại tất cả các hàm trợ giúp mà tôi đã sử dụng trong thư viện jQuery không? Hoặc có một số loại ứng dụng tiện lợi sẽ giúp tôi biên dịch lại?

Điều đó sẽ rất ngọt ngào. Đáng buồn thay, tôi không nghĩ rằng một điều như vậy tồn tại.


6

1

Cuốn sách " DOM Scripting " của Jeremy Keith là một giới thiệu tuyệt vời để làm việc với Javascript và DOM. Tôi đánh giá cao nó, cho dù bạn có muốn sử dụng jQuery hay không. Thật tốt khi biết những gì đang diễn ra bên dưới.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.