2011-03-21 22 views
13

Có loại hình phạt nào khi tôi đang sử dụng số HTMLPanel thay vì một số div đơn giản không?UiBinder - HTMLPanel so với div

Ví dụ:

<g:HTMLPanel> 
    <div> 
    /* Widgets, more HTML */ 
    </div> 
</g:HTMLPanel> 

trái ngược với

<g:HTMLPanel> 
    <g:HTMLPanel> 
    /* Widgets, more HTML */ 
    </g:HTMLPanel> 
</g:HTMLPanel> 

Trả lời

8

Câu trả lời ngắn:

Khi nghi ngờ, hãy nhìn vào mã được tạo (vượt qua đối số -gen đến devmode hoặc Compiler)

dài câu trả lời :

Sẽ có hình phạt hiệu suất thời gian chạy bằng cách sử dụng tiện ích con trên một phần tử DOM đơn giản, luôn luôn. Và thậm chí nhiều hơn khi phần tử DOM đó được tạo bằng cách phân tích cú pháp một đoạn mã HTML.

Khi UiBinder thấy một widget như một đứa trẻ của HTMLPanel, nó sẽ tạo ra một placeholder <span> với một tạo ID duy nhất và sau đó sử dụng để thay thế HTMLPanel.addAndReplaceElement placeholder rằng với một widget.

Vì vậy, đoạn thứ hai sẽ tạo ra (xấp xỉ)

HTMLPanel root = new HTMLPanel("<span id='uuid'></span>"); 
HTMLPanel child = new HTMLPanel("/* Widgets, more HTML. */"); 
root.addAndReplaceElement(child, "uuid"); 
1

Đây không phải là một hình phạt hiệu quả, nhưng tôi nghĩ HTMLPanel chỉ là Widget rằng, trong vòng một UiBinder, có thể chứa (như trẻ em) một hỗn hợp của cả tiện ích con và thẻ HTML.

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