2010-08-12 22 views
6

Bạn có thể giới thiệu bài viết, sách và phương pháp hay nhất về thiết kế ứng dụng Flex không? (cả AIR và web).Flex: Cách giữ mã khỏi MXML

Tôi đã đọc Creating components and enforcing separation of concerns with FlexBuilding components by using code behind.

Ứng dụng có luôn bắt đầu trên MXML chính không? Tôi không thể khởi tạo chế độ xem đầu tiên từ một lớp ActionScript?

Làm cách nào bạn thêm trình xử lý vào MXML đầu tiên và cung cấp điều khiển luồng cho nó?

Tôi đang cố gắng viết mã không trên các tệp MXML của mình để giữ chế độ xem được tách riêng khỏi mã. Điều này có thể thực hiện được trong Flex?

+0

Bạn đang làm điều này vì lý do ý thức hệ hay vì bạn thực sự tin rằng có lợi ích đáng kể để vượt qua lùi để tránh thỏa hiệp đơn giản và thuận tiện? – Robusto

+0

Hầu hết là những câu hỏi chung để giúp tôi hướng dẫn bản thân thông qua lập trình Flex GUI. Tôi đã được dạy giữ quan điểm từ mã tách ra là tốt. –

Trả lời

10

Tôi đã làm việc trên một vài dự án đã sử dụng mẫu mã phía sau, đáp ứng nhiều yêu cầu của bạn. Tóm lại, bạn cô lập mã từ MXML bằng cách tạo một lớp cơ sở ActionScript (MyClassCode.as) và sau đó tạo một tệp MXML kế thừa từ lớp mã-đằng sau của bạn (MyClass.mxml). Một nhược điểm là bất kỳ phần tử giao diện người dùng nào trong tệp MXML cần được khai báo lần thứ hai trong lớp mã-đằng sau của bạn, nếu không tôi đã thấy đây là một phương pháp tách mã hiệu quả từ giao diện người dùng. Dưới đây là một ví dụ và một số liên kết để biết thêm:

MyClassCode.as:

package mypackage 
{ 
    import flash.events.MouseEvent; 

    import mx.events.FlexEvent; 

    import spark.components.Button; 
    import spark.components.Group; 

    public class MyClassCode extends Group 
    { 
     public var myButton:Button; 

     public function MyClassCode() 
     { 
      super(); 
      this.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); 
     } 

     private function onCreationComplete(e:FlexEvent):void { 
      this.removeEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); 
      myButton.addEventListener(MouseEvent.CLICK, onClick); 
     } 

     private function onClick(e:MouseEvent):void { 
      // Do something 
     } 
    } 
} 

MyClass.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mypackage:MyClassCode xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         xmlns:mypackage="mypackage.*"> 
    <s:Button id="myButton"/> 
</mypackage:MyClassCode> 

Một số liên kết:

http://learn.adobe.com/wiki/display/Flex/Code+Behind

http://ted.onflash.org/2007/02/code-behind-in-flex-2.php

http://blog.vivisectingmedia.com/2008/04/the-flex-code-behind-pattern/

+0

Đây là cách tôi thường làm. – danjarvis

+0

Câu "tóm lại" đã làm cho ngày của tôi. Tôi sẽ tiếp tục đọc và mã hóa dựa trên các liên kết này và một số liên kết khác mà tôi đã tập trung vào chủ đề này. Các câu hỏi khác sẽ được xuất bản cho SO. Cảm ơn! –

+0

Tuyệt vời, vui vì tôi có thể giúp! –

1

Paul Williams có một số bài viết và ví dụ tuyệt vời về các mẫu trình bày khác nhau cho Flex. Ông thậm chí còn xây dựng một ứng dụng mẫu bằng cách sử dụng từng mẫu khác nhau và cho thấy cách đơn vị kiểm tra một số mẫu. http://blogs.adobe.com/paulw/

Hãy xem mô hình Chế độ xem thụ động, đây có thể là những gì bạn đang tìm kiếm dưới dạng viết mã AS không có trong MXML của bạn.

+0

Tài nguyên tuyệt vời, cảm ơn! –

2

Thực tiễn tốt nhất là rất chủ quan trong phát triển phần mềm. Nếu bạn tìm thấy một người nói "X", tôi có thể tìm một người khác nói "Y" và rất có thể cả hai đều đúng trong hoàn cảnh nhất định.

Hầu hết các sách tôi biết tập trung vào việc mang người mới bắt đầu đến tốc độ, trái ngược với các phương pháp hay nhất.

Để trả lời câu hỏi cụ thể của bạn:

Liệu ứng dụng luôn luôn phải bắt đầu trên MXML chính? Tôi có thể không khởi tạo chế độ xem đầu tiên từ lớp học ActionScript không?

Về lý thuyết, có vẻ như có thể có tệp ứng dụng chính là ActionSCript; sau khi tất cả trình biên dịch Flex chỉ biến MXM thành ActionSCript. Trong thực tế, tôi chưa bao giờ thấy ai làm điều này. Tôi đã thấy các ứng dụng là tất cả ACtionSCript ngoại trừ thẻ ứng dụng trong tệp ứng dụng chính.

Bạn sẽ thêm trình xử lý vào MXML đầu tiên và cấp điều khiển luồng cho nó như thế nào?

Bạn có ý nghĩa gì bởi trình xử lý và kiểm soát lưu lượng? Tôi không chắc tôi có câu trả lời cụ thể ở đây. Rất nhiều người sử dụng các khung công tác. Cairngorm được sử dụng rộng rãi nhất, nhưng một số tìm thấy nó quá phức tạp. Trong một thời gian, Mate là cộng đồng được yêu thích nhất. RobotLegs là yêu thích hiện tại.

Tôi đang cố viết mãMXML để giữ cho chế độ xem được tách riêng khỏi mã. Điều này có thể thực hiện được trong Flex?

Tùy theo. Không phải là xem cũng mã? Nếu bạn muốn sử dụng cách tiếp cận "Kiểu Chế độ xem Mô hình", có rất nhiều cách. Khung có thể giúp và tôi đã đề cập một vài ở trên. Nhưng, bạn cũng có thể tự mình làm điều đó. Nếu bạn mới làm quen với Flex, tôi khuyên bạn nên bắt đầu phát triển "Frameworkless" và đưa khung công tác vào phương trình để xem liệu chúng có giúp giải quyết các vấn đề bạn gặp phải hay không.

Các vấn đề liên quan