Индикатор выполнения загрузки с разделением кода GWT - как gmail

В моем проекте я использую разделение кода. но в любом случае есть коды для начальной загрузки в первый раз.

Теперь я хочу показать конечному пользователю прогресс загрузки кода (.cache.html - или другое разделение кода), например прогресс запуска Gmail.

Не могли бы вы мне помочь.

RGDS


person Nav    schedule 11.12.2010    source источник


Ответы (4)


Согласно дизайну (примерно) здесь упоминается разделение модулей где это имеет смысл, поскольку технически не поддерживает предварительную выборку; При этом я могу только предположить, что GMail показывает прогресс на основе прогресса загрузки модуля, проверенного с помощью обратных вызовов (т.е. GWT.runAsync()). Не все модули имеют одинаковый размер, но вы можете «угадать» и назначить взвешенный процент для каждого модуля (см. GWT составить отчет)

  1. Если ваш исходный размер загружаемой страницы велик (> = 1 МБ), я бы порекомендовал изучить возможность рефакторинга и оптимизации вашего дизайна, чтобы он был немного более легким (строительные леса). Это означало бы больше обращений к серверу, но ограничило бы начальный размер загрузки. Это обеспечит основу для более точной обратной связи с пользователем о том, что страница «работает» (т. Е. неопределенный индикатор выполнения), и позволит избежать ненужной точности.

  2. Общий размер страницы сложно измерить на пути к клиенту / браузеру, это было бы больше проблем, чем показывать это пользователю. Вы могли бы добиться этого с помощью нескольких легких модулей, но вам придется компенсировать все сгенерированные ресурсы, такие как ClientBundle, потому что GWT создает определенный набор для каждой перестановки браузера.

Дополнительное примечание: при загрузке файла обычно используется обратная связь в реальном времени, например, о прогрессе точности размера файла (например, 80 КБ из 1,29 МБ (6% заполнено)) (например, изображений, видео, музыки и т. д.). на жесткий диск пользователя. Данные в этот момент больше не являются временными, и пространство для хранения может быть проблемой, кеши очищаются и сбрасываются, поэтому, как правило, не имеет большого значения, насколько велика веб-страница.

person Lam Chau    schedule 14.12.2010

Может быть, вы можете попробовать это и, пожалуйста, прокомментируйте, работает это или нет;

Я пришлю вам только html файл. Вы можете спроектировать в соответствии со своим кодом. Как это просыпается. Есть элемент div, включающий «загрузку». При первой загрузке страницы, парни, простой html загружается и отображается загружаемый текст. После загрузки файла html запустится ваш файл nocache.js (вы все еще видите загруженный текст). После загрузки js файла запускается скрипт onmoduleload (загрузка текста все еще видна) и после того, как все виджеты созданы, ваши панели и т. Д. Готовы. Попробуйте приведенный ниже код и удалите текст «загрузка» с экрана;

com.google.gwt.user.client.Element loading = DOM.getElementById("loading");
DOM.removeChild(RootPanel.getBodyElement(), loading);

proje.html;

 <!doctype html>
<!-- The DOCTYPE declaration above will set the    -->
<!-- browser's rendering engine into               -->
<!-- "Standards Mode". Replacing this declaration  -->
<!-- with a "Quirks Mode" doctype may lead to some -->
<!-- differences in layout.                        -->

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <!--                                                               -->
    <!-- Consider inlining CSS to reduce the number of requested files -->
    <!--                                                               -->
    <link type="text/css" rel="stylesheet" href="<proje>.css">
    <link rel="stylesheet" type="text/css" href="resources/css/gxt-all.css" />

    <!--                                           -->
    <!-- Any title is fine                         -->
    <!--                                           -->
    <title><Proje></title>

    <!--                                           -->
    <!-- This script loads your compiled module.   -->
    <!-- If you add any GWT meta tags, they must   -->
    <!-- be added before this line.                -->
    <!--                                           -->
    <script type="text/javascript" language="javascript" src="<proje>/<proje>.nocache.js"></script>
  </head>

  <!--                                           -->
  <!-- The body can have arbitrary html, or      -->
  <!-- you can leave the body empty if you want  -->
  <!-- to create a completely dynamic UI.        -->
  <!--                                           -->
  <body>

    <!-- OPTIONAL: include this if you want history support -->
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>

    <!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
    <noscript>
      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">

      </div>
    </noscript>

    <div align="center" id="loading"> 
        <table style="height:600px;" border="0">
            <tr height="100%">
                <td align="center">
                    <b>Loading...</b>
                </td>
            </tr>
        </table>
    </div>

    <div id="main" style="display:none">
       <table border="0" width="100%" height="100%" align="center" cellspacing="0">
              <tr>
                <td colspan="2" width="100%" id="ustMenuPanel"></td>
              </tr>
              <tr height="100%" valign="top">
                <td id="menuPanel" width="20%"></td>
                <td id="modulPanel" width="80%"></td>
              </tr>
        </table>
    </div>
  </body>
</html>
person Yusuf K.    schedule 14.12.2010
comment
Проблема в том, что пользователь не знает, сколько было загружено. У вас есть идея, как я могу получить что-то вроде 100kb из 500kb загружено? - person Chris Boesing; 14.12.2010
comment
@Chris_Boesing Да, вы правы, я всего лишь пытаюсь дать образец для отправной точки вашего вопроса. - person Yusuf K.; 14.12.2010
comment
да, ребята, это работает, но, как сказал Крис, я хочу знать, сколько процентов заполнено - person Nav; 17.04.2011

В GWT нет виджета, такого как индикатор выполнения. Я тоже хотел добавить эту функцию в свое приложение, но не смог

Вы можете использовать индикатор выполнения инкубатора.

http://google-web-toolkit-incubator.googlecode.com/svn/trunk/demo/ProgressBar/index.html.

person Community    schedule 14.12.2010
comment
Спасибо за Ваш ответ. Этот вопрос не о индикаторе выполнения в вашем приложении, а о индикаторе выполнения, который отображается до полной загрузки приложения, чтобы пользователь знал, сколько времени ему нужно ждать. - person Chris Boesing; 14.12.2010
comment
@Chris Спасибо за ваш комментарий. Я просто хочу показать индикатор выполнения и его использование - person ; 14.12.2010

Вы можете использовать тот же подход, что и Apache Hupa, который просто показывает анимированный gif, пока приложение загружается. После загрузки приложение удаляет анимированный gif через структуру dom главной страницы.

person crowne    schedule 17.12.2010