Pyjamas là một bộ công cụ và thư viện được thiết kế để cho phép viết các ứng dụng AJAX trong Python. Pyjamas dựa trên của Google GWT, mà ngày nào cũng làm cho Java.
ike GWT, đồ ngủ liên quan đến các bản dịch của các ứng dụng và thư viện (bao gồm cả vật dụng UI và lớp DOM) để Javascript và bao bì lên các mã Javascript.
Có hai công cụ phát triển cốt lõi bao gồm trong bộ đồ ngủ. pyjs dịch mã Python để Javascript bằng cách đi bộ cây cú pháp trừu tượng Python và tạo Javascript.
Trong nhiều trường hợp, được xây dựng trong Python loại đòi hỏi một tùy chỉnh thực hiện Javascript. Ví dụ, mặc dù danh sách Python là tương tự như mảng Javascript, danh sách Python là chuyển đổi các đối tượng tùy chỉnh thực hiện các phương pháp như append. Những đối tượng tùy chỉnh cần thiết cho dịch bởi pyjs được định nghĩa trong một thư viện được gọi pyjslib.
Giống như GWT, đồ ngủ đi kèm với một tập hợp các giao diện người dùng tiện ích cũng như một thư viện cho các thao tác DOM. Các thư viện được viết bằng Python nhưng, cũng giống như mọi thứ khác, phiên dịch sang Javascript để triển khai.
Các dịch tổng thể của các thành phần cá nhân được quản lý bằng cách xây dựng mà còn tạo ra các mã boilerplate cần thiết. Kết quả là một tập hợp các .html và Js tập tin có thể được phục vụ bởi một máy chủ Web.
Có những thành phần khác lên kế hoạch đó đã không được đề cập ở đây như server-side mã cho truyền thông trong các ứng dụng client-server
là gì mới trong phiên bản này:.
- Simple sys.stdout và sys.stderr đối tượng đã được thêm vào. sys.exc_info () đã được cố định để thực hiện giống như Python.
- Một module traceback rất cơ bản đã được thêm vào.
- oninput và onpropertychange hỗ trợ sự kiện được thêm vào.
- Một vấn đề getWidget với HTMLTable dưới pyjd trên Windows đã được cố định.
- Phân tích cú pháp của các tài liệu XML dưới pyjd trên Windows đã được bổ sung.
- Một tùy chọn tự động xây dựng (theo dõi tập tin) đã được thêm vào pyjsbuild.
- pyjscompressor.py được thêm vào.
- lỗi khác nhau đã được cố định.
- Một số tính năng khác được thêm vào.
là gì mới trong phiên bản 0.5p1:
- Cố định Autocompletion mà chỉ cần không phương thức trên PopupPanel ( nhờ lovelysystems để thực hiện các hộp thoại không phương thức nếu không nó sẽ không thể sửa chữa Autocompletion)
- Thêm thực hiện metaclass & quot; kiểu & quot; chức năng
- Made KeyboardListener một module đơn hơn là có một lớp có tên giống như các mô-đun. Tương tự như vậy với MouseListener, tổ chức sự kiện và Focus.
- Thêm thể click chuột phải Context Menus, và thêm một ví dụ trong KitchenSink Menus.py để hiển thị như thế nào để thiết lập chúng.
- Thêm python-SpiderMonkey như một nền tảng thử nghiệm, chính xác như pyv8run.py bây giờ có pysmrun.py
- Top cấp biến toàn cầu, và cấp cao nhất chức năng, bây giờ chính xác phạm vi trong một module (nhờ Jose nuôi này)
- hằng chuỗi đang trở lại như trường hợp của String () mà kết quả là họ có phương pháp __iter__ đã được thêm vào proto của javascript kiểu String cơ sở.
- Lỗi Loại đã kế thừa từ BaseException chứ không phải là một proto javascript từ Lỗi (). Lỗi Loại bây giờ có thể được nâng lên như một ngoại lệ, với một tin nhắn.
- làm == sử dụng so sánh __eq__, trong đó có điều kiện sử dụng __cmp__ nếu nó có sẵn: sửa chữa lỗi này trong so sánh các danh sách trong LibTest. thay thế một số lượng lớn các số & quot; == & quot; so sánh với & quot;. & quot ;, là để __eq__ không có được gọi là (hiệu quả)
- thêm hỗ trợ cho các cuộc gọi * args về chức năng: trước đây, một chức năng gọi (* args) sẽ cho kết quả trong args bị vứt bỏ !
- làm tuple lớp riêng của mình, chứ không phải kế thừa từ List, để nó có thể được phân biệt từ danh sách. __cmp__ của một danh sách với một tuple nay không chính xác.
- viết lại ví dụ / libtest để họ có thể chạy theo python chuẩn (python ./LibTest.py). điều này cho phép so sánh pyjs chống python tiêu chuẩn.
- thêm các phương pháp mở rộng đến pyjslib.List
- thêm phao để dựng sẵn
- thêm pyjamas.log dựa trên các ví dụ / libtest / write.py
- đăng ký chức năng dựng sẵn 'cmp'. đã được triển khai nhưng chưa đăng ký tại pyjs.py
- thêm một lựa --optimize để mà kết quả trong việc loại bỏ báo cáo in. điều này có thể được cải thiện hơn nữa. ví dụ khi khẳng định được thực hiện
- cố định Mozilla & quot; Permission Denied & quot; lỗi trong DOM.isOrHasChild
- pyjslib.Dict bây giờ sử dụng các phương pháp băm để tạo ra các phím trong nội bộ, vì vậy nó si có thể sử dụng đối tượng như các phím như trong python. Đối với những hạn chế về dicts đọc những ví dụ / libtest / DictTest.py
là gì mới trong phiên bản 0.4p1:
- Đây là một phát hành bản vá nhỏ của bộ đồ ngủ 0.4p1, trình biên dịch Python-to-Javascript và Python Web UI Widgets Toolkit.
- lỗi đáng kể cố định bao gồm remove () chức năng HorizontalPanel của, rõ ràng () chức năng SimplePanel, và sprintf với nhiều đối số (& quot;% s% d & quot;% (& quot; chào & quot ;, 2) bây giờ sẽ làm việc) Dialog Box hiện nay có phương thức chức năng (nhờ Jurgen kartnaller).
- HorizontalSplitPanel đã được thêm vào, mặc dù cả hai tấm ngang và dọc hoạt động chính xác trên các trình duyệt dựa trên Mozilla, Safari và IE nhưng cần tình nguyện viên làm việc trên chúng.
là gì mới trong phiên bản 0.4:
- Các phụ kiện:
- Thêm thư viện / splitpanel.py và thư viện / vertsplitpanel.py, cùng với các ví dụ / splitpanel. Chú ý:. Splitpanels phải ở trong ui
- Thay đổi ui.TabBar.insertTab () để cho phép các vật dụng được thông qua cũng như văn bản.
- ví dụ thêm / tabpanelwidget
- Thêm gtk_converter đến & quot; contrib & quot; thư mục (nhờ Jeremy)
- Thêm thư viện / decoratorpanel.py bao gồm DecoratorPanel, DecoratedTabPanel và DecoratedTabBar. Chú ý:. Các lớp này phải ở trong ui
- ví dụ thêm / slideshow
- Thêm hỗ trợ cắt các số âm.
- ví dụ thêm / jsobject
- Hỗ trợ thêm cho một chế độ gỡ lỗi, mà có thể được bật lên bằng cách bao gồm một & quot; -d & quot; tùy chọn dòng lệnh khi gọi build.py. Với tùy chọn này được bật, mỗi câu trong mã Python của bạn được bao quanh bởi một thử ... ngoại trừ tuyên bố rằng sẽ hiển thị một cảnh báo nếu một ngoại lệ xảy ra. Các thông điệp cảnh báo có chứa các văn bản gốc nguồn Python, số dòng trong tập tin nguồn Python của bạn, nơi xảy ra lỗi, và các chi tiết của lỗi javscript đó xảy ra. Điều này giúp đơn giản hóa nên gỡ lỗi mã Pyjamas của bạn.
- Issue # 75: Thêm hỗ trợ cho & quot; không phải là Không & quot; cú pháp.
- Issue # 85: Triển khai công tác repr () được xây dựng trong chức năng .
- Issue # 93:. Thực hiện dict.items ()
- Issue # 95:. Thực hiện Window.prompt ()
- Issue # 100:. Thêm một phương pháp setPadding () để ui.CellPanel
- Issue # 103: Triển khai công tác enumerate () được xây dựng trong chức năng .
- Issue # 104: Thêm khả năng để gán cho một danh sách các biến, ví dụ: x, y = self.method ()
- Issue # 105: Triển khai công tác min () và max () được xây dựng trong chức năng .
- Issue # 88: Bây giờ có thể sử dụng getattr () được xây dựng trong chức năng để có được một phương pháp, và sau đó vượt qua các tham số của phương thức đó khi bạn gọi nó. Có một ví dụ mới trong & quot; ví dụ / & quot; thư mục, gọi là & quot;. & quot ;, getattr mà thể hiện như thế nào điều này có thể được sử dụng
- Issue # 111:. Added XOR và bit-shift khai thác, nhờ legith
- Issue # 112:. Hỗ trợ các ord () và chr () được xây dựng trong chức năng (! Cảm ơn, legith)
- Issue # 113: hỗ trợ thực hiện cho thử cơ bản ... ngoại trừ báo cáo. Ngoài ra còn có một mô-đun mới, ví dụ / libtest / ExceptionTest.py, mà kiểm tra việc sử dụng các cố gắng ... ngoại trừ tuyên bố.
- Sửa chữa lỗi:
- Thêm một thực hiện mới của sprintf.
- Issue # 86: Cố định một lỗi mà có thể gây ra HttpRequest sụp đổ. Nhờ finder83 từ code.google.com/p/pyjamas giúp đỡ để tìm kiếm này.
- Thêm hình ảnh tiêu chuẩn để sử dụng cho các cạnh và góc của một hộp thoại
- thay đổi khác nhau để ui.py và DOM.py để (một phần) sự kiện hỗ trợ xử lý trên các hộp thoại.
- Cố định một lỗi trong ui.CellFormatter.getElement () mà có thể gây ra một vụ tai nạn.
- Cố định một vấn đề với ui.FormSubmitEvent.setCancelled ()
- Cố định lỗi trong ui.clickDelegatePanel.onBrowserEvent () mà gây ra một vụ tai nạn khi xử lý một sự kiện keyDown.
- Thay đổi ui.ClickDelegatePanel.onBrowserEvent () để kiểm tra các đại biểu quan trọng thực sự có một & quot; onKeyDown & quot; phương pháp trước khi cố gắng gọi nó.
- Issue # 54: Cố định một probem với phát hiện trình duyệt (thông qua các & quot; đại lý người dùng & quot; string) trong Internet Explorer 7.0. Rõ ràng Microsoft đã quyết định thay đổi chuỗi user-agent trong IE 7, phá vỡ các mã trong Pyjamas trong đó xác định trình duyệt của người dùng.
- Mã Removed từ DOM.init () mà đã cố gắng để sửa chữa một lỗi với các hình các yếu tố, nhưng đã không làm việc.
- Cố định một lỗi trong ComplexPanel.insert đó đã gây ra Internet Explorer 6 để hỏng mô hình DOM của nó.
- Issue # 53:. Cố định một vấn đề với điều hành ưu tiên
- Issue # 91: Added DOM.eventGetCurrentEvent () để lấy các sự kiện hiện tại .
- Thay đổi FocusWidget.onBrowserEvent () để kiểm tra xem người nghe nhấp chuột thực sự có một & quot; onClick & quot; phương pháp trước khi cố gắng gọi nó.
- Issue # 82: Thay đổi nội dung kiểu gửi bởi thư viện / HTTPRequest.asyncPostImpl đến & quot; application / x-www-form-urlencoded & quot; chứ không phải là & quot; text / plain & quot ;. Điều này cho phép các đối tượng HttpRequest được sử dụng để thực hiện các cuộc gọi AJAX sử dụng yêu cầu HTTP POST.
- Issue # 81:. Thư viện Cố định / ui.Panel.clear ()
- Thêm một stylesheet tầng để các ví dụ / chương trình mail
- Issue # 106: Cố định một vấn đề mà sử dụng một bộ từ điển như một chìa khóa cho kết quả bất ngờ
- Issue # 107: Nó bây giờ có thể bao gồm một dấu cộng vào lúc bắt đầu của một số chữ
- datetime.py Đã chuyển từ thư mục addons vào thư viện.
- Issue # 80: Thay đổi nhiều trong những ví dụ sử dụng mới & quot; đồ ngủ & quot; Tên gói.
- Cố định một vấn đề với việc sử dụng lát tiêu cực trên các danh sách (cảm ơn, Legith).
Bình luận không