- Phân tích cú pháp XML AJAX/jQuery
- Sơ đồ XML với Đa kế thừa
- Tuần tự hóa Enum Json so với XML
- XML loại đơn giản, nội dung đơn giản, loại phức tạp, nội dung phức tạp
Trong những cuộc trò chuyện này Nicholas ZakasVà Addy OsmaniHọ thảo luận về ý tưởng sử dụng mô hình facade như một hộp cát khi xây dựng các ứng dụng JavaScript lớn để tách ứng dụng khỏi cơ sở hạ tầng cơ bản.
Về mặt lý thuyết, việc tách rời này cho phép bạn chuyển đổi các thư viện cơ sở mà không cần phải viết lại các mô-đun ứng dụng. Tuy nhiên, trên thực tế, điều này có vẻ khó đạt được hơn.
Kiến trúc được đề xuất này có các triển khai cụ thể, ví dụ:AuraJS Tuy nhiên, khi xem xét mã nguồn, có vẻ như sandbox vẫn còn lỗi trừu tượng, vì nó trả về đối tượng jQuery từ một số phương thức của nó.
Tôi không quan tâm cụ thể đến AuraJS mà quan tâm nhiều hơn đến khái niệm chung về việc cố gắng trừu tượng hóa một thư viện như jQuery mà không làm mất quá nhiều chức năng.
Ví dụ, giả sử facade/sandbox của tôi có phương thức dom .find(bộ chọn)
. Tôi có thể nghĩ ra 3 lựa chọn cho những gì nó có thể trả về:
Một đối tượng jQuery - Điều này sẽ rò rỉ jQuery vào mô-đun using.
Phần tử DOM gốc - Mất chức năng, thực sự không ai muốn sử dụng! Không có liên kết.
Trình bao bọc tùy chỉnh giống jQuery - Có thể khá phức tạp, nhưng có vẻ như là giải pháp lý tưởng.
Vậy câu hỏi của tôi là,Làm thế nào bạn có thể tóm tắt một thư viện như jQuery mà không làm mất đi quá nhiều chức năng để có thể thay thế nó với ít công sức nhất vào một thời điểm nào đó trong tương lai?
1 Câu trả lời
Sau đây là một ví dụ rất đơn giản về việc sử dụng mô-đun làm kiến trúc:
Chơi mô-đun
// myCore cung cấp tất cả các chức năng cần thiết cho các mô-đun
// Có thể sử dụng thư viện ở đây
var myCore = {
lấyContainer: hàm() {
// mã ở đây để tìm một container phù hợp để đặt các tiện ích
// Đây là nơi các khả năng khác nhau của khách hàng sẽ được kiểm tra để đảm bảo
// tiện ích hoạt động theo ngữ cảnh của người dùng - máy tính để bàn, điện thoại, máy tính bảng, máy tính bảng, v.v.
// phím tắt rất đơn giản
trở lại {
phần tử: document.body,
// Hàm này có thể sử dụng một thư viện mục đích chung
thêm: chức năng(widget) {
this.element.appendChild(widget.getElement());
}
};
},
// Hàm này có thể sử dụng một thư viện mục đích chung
lấyNewWidget: hàm() {
var element = document.createElement('div');
trở lại {
lấy phần tử: hàm() {
phần tử trả về;
},
hiển thị: hàm(văn bản) {
// Có liên kết chặt chẽ với chính nó hay không?
this.getElement().innerHTML = '' + văn bản + '';
// hoặc
element.innerHTML = '' + văn bản + '';
}
}
}
};
// Thiếu lớp hộp cát...
// Thêm một mô-đun - chỉ sử dụng API myCore (quyền truy cập phải được kiểm soát bởi
// hộp cát), không xử lý các đối tượng thư viện hoặc máy chủ cơ bản
(chức năng() {
// Lấy một container để thêm một widget nữa
var container = myCore.getContainer();
// Tạo một tiện ích
var widget = myCore.getNewWidget();
// Thêm tiện ích vào vùng chứa
container.add(tiện ích);
// Cung cấp thứ gì đó cho tiện ích để hiển thị
widget.display('Xin chào thế giới');
}());
Vì vậy, bạn có thể thấy rằng ở cấp độ mô-đun, bạn không quan tâm đến môi trường lưu trữ hoặc các thư viện cơ bản, bạn chỉ viết ECMAScript thuần túy. Bạn có thể trở nên thực sự phòng thủ và làm điều gì đó như:
(chức năng() {
var container, widget;
nếu (!myCore) trả về;
if (myCore.getContainer) { // Một số sẽ bao gồm cả bài kiểm tra isCallable
container = myCore.getContainer();
}
// getWidget có thể là một phương thức chứa thay thế để
// tất cả những gì bạn cần là một phương thức hoặc thuộc tính của container
// hoặc tiện ích
nếu (myCore.getWidget) {
tiện ích = myCore.getWidget();
}
...
}
V.v., vì vậy mọi thứ đều được thử nghiệm và kiểm tra. Tôi đã bỏ qua phần xử lý lỗi, nhưng hy vọng ví dụ này đủ.
Liên quan đến javascript - jQuery trừu tượng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/16032440/
Tôi hơi bối rối về tính trừu tượng trong Java. Tôi đã kiểm tra nhiều trang nói rằng trừu tượng hóa là ẩn dữ liệu (ẩn triển khai). Theo tôi hiểu, trừu tượng là một "sự triển khai một phần". Chỉ cần xác định những gì bạn cần trong các lớp/giao diện trừu tượng, sau đó mở rộng/triển khai chúng và thêm
Tôi mới làm quen với Ruby, chủ yếu sử dụng C# và ActionScript 3 (cùng với một số ngôn ngữ khác). Tôi tò mò về chức năng trừu tượng. Cụ thể là gói và tóm tắt các thư viện FTP và SFTP của Ruby. Tôi tìm kiếm xung quanh và tìm thấy một
Nội dung Java cơ bản (Tóm tắt) Tóm tắt Định nghĩa của abstract Sử dụng abstract Định nghĩa của abstract class
Tôi đã dành thời gian trong tháng này để vật lộn với Emacs Lisp, cố gắng để chức năng tự động thụt lề hoạt động tốt hơn theo nhu cầu của tôi. Thật đáng ngạc nhiên khi hầu hết mã thụt lề ở cấp độ thấp. Tôi chỉ thấy một vài sự trừu tượng như tìm kiếm biểu thức chính quy đầu tiên không có trong chuỗi hoặc bình luận
Tôi có những điều sau đây: public abstract class Foo{ //nội dung của Foo // ... public class Bar mở rộng
Tôi có ba lớp (lớp A, lớp B và lớp C). Lớp A gọi một thể hiện của B và chạy start(). Lớp B mở rộng Thread, do đó khi start() được gọi, mọi thứ trong phương thức run() sẽ được thực thi. hiện hữu
Câu hỏi này đã có câu trả lời: Gọi phương thức lớp con từ lớp cha (5 câu trả lời) Đã đóng 7 năm trước. Klasse1 là lớp trừu tượng có một phương thức foo(). K
Tôi có một hàm như thế này: def test(): x = "3" # Trong mã thực tế, hàm này được tính nếu x là None: return
Tôi có mối quan hệ giữa hai lớp cơ sở: public abstract class RecruiterBase { // Thuộc tính khai báo ở đây // Các hàm tạo khai báo
Đây là lần đầu tiên tôi đăng bài và tôi đang gặp phải rất nhiều vấn đề. Hiện tại tôi có một lớp AbstractDevice có tiêu đề: public abstract class AbstractDevice> implements De
Tôi có một lớp MotorDefinition và một lớp trừu tượng có tên là Motor: class MotorDefinition { public: MotorDefinition(int p1,
Có cách nào để tạo các quy tắc trừu tượng của css trong loại mã này (sass): #cottage-image-gallery input:nth-of-type(1):checked ~ label:nth-o
Có thể khai báo một kiểu cơ sở đã biết và cho phép chuyển giao tất cả các kiểu dẫn xuất không? [ServiceContract] giao diện công khai IService { [OperationContract]
Hiện tại tôi đang phát triển cơ chế tạo nhân vật cho một trò chơi văn bản dựa trên Java, nhưng tôi gặp phải một vấn đề và không biết lỗi ở đâu. Tôi có lớp "Character" là lớp trừu tượng và một lớp khác là "NPCharacter" được xây dựng dựa trên lớp này.
Xin lỗi, tiêu đề gây nhầm lẫn. Không chắc chắn lắm về cách diễn đạt, có thể đó là vấn đề! Tôi đang tìm một sự trừu tượng tốt để sử dụng cho các tình huống liên quan đến luồng đồng thời. Tôi đã gần đến đích rồi, nhưng vẫn chưa hoàn toàn. Để đơn giản hóa một chút, tôi đã thu thập hai cảm biến trên điện thoại Android của mình
Cảm ơn bạn trước vì đã đọc bài viết này. Tôi không hiểu đầy đủ về cách/thời điểm sử dụng đoạn trích, vì vậy tôi cố gắng nghĩ về nó trong mọi dự án tôi làm và xem liệu một ngày nào đó mọi thứ có ổn không. Cười | :) Ngoài ra, các mức độ truy cập (riêng tư, được bảo vệ
Tôi đang khám phá meme XML -> XSLT -> HTML để tạo nội dung web. Tôi có rất ít kinh nghiệm với XSLT. Tôi tò mò muốn biết có những cơ chế nào trong XSLT để xử lý trừu tượng hóa hoặc "tái cấu trúc". Ví dụ, sử dụng HTML chung và
Trong các buổi nói chuyện này, Nicholas Zakas và Addy Osmani thảo luận về ý tưởng sử dụng mô hình facade như một hộp cát khi xây dựng các ứng dụng Javascript lớn nhằm tách ứng dụng khỏi các thư viện cơ sở bên dưới. Sự tách rời này về mặt lý thuyết cho phép
Tôi đang sử dụng C++ và CUDA/C và muốn viết mã cho một vấn đề cụ thể, nhưng tôi gặp phải một vấn đề đơn giản hóa rất khó khăn. Kinh nghiệm của tôi với lập trình song song không phải là không đáng kể nhưng khá hạn chế, và tôi không thể lường trước được hết những đặc thù của vấn đề này. Tôi nghi ngờ liệu có cách nào thuận tiện hay thậm chí là "dễ dàng" không
Giả sử tôi có: trait A class B extends A class C extends A Có cách nào để cấu hình tham số kiểu không: class Foo[AType <: A with canCreateIn
Tôi là một lập trình viên xuất sắc, rất giỏi!