أين أضع الملفات الثابتة لتطبيق GWT؟ مجلد الحرب أو المجلد العمومي؟

StackOverflow https://stackoverflow.com/questions/1502166

سؤال

لدي بعض ملفات JavaScript، وملف HTML الرئيسي، وملف CSS الرئيسي، وبعض ملفات CSS التي يتم استيرادها في المرحلة الرئيسية.

أفهم أنه يمكنني وضع ملفات ثابتة في مكانين: أ) مجلد "الحرب"؛ أو ب) المجلد "العام".

أين هو أفضل مكان لوضع ملفاتي الثابتة؟ هل تعامل الموقعان بشكل مختلف؟ هل هناك "أفضل الممارسات" في هذه المشكلة؟

هل كانت مفيدة؟

المحلول

الفرق بين المواقع 2 هو أن الملفات الموجودة في المجلدات العامة يتم نسخها بواسطة برنامج التحويل البرمجي GWT إلى مجلد "الوحدة النمطية" في مجلد "الحرب". هذا يعني إذا قمت بنشر "الحرب" (على سبيل المثال عبر البرنامج المساعد Google إلى Google Appengine) الملفات من المجلد "العام" ليست في Toplevel.

على سبيل المثال، إذا كان لديك index.html في المجلد "العام" مع وحدة نمطية GWT باسم "MyModule" وأنت تنشره إلى www.example.com يبدو على النحو التالي، تحتاج إلى الوصول إليه عبر:

www.example.com/mymodule/index.html

إذا كان لديك index.html في مجلد "الحرب"، فستحصل على:

www.example.com/index.html

تلخيص. يجب أن تكون صفحتك المقصودة في مجلد "الحرب". يمكن أيضا تخزين ملفات الموارد المستخدمة من قبل صفحة الهبوط هنا (CSS والصور). يجب تخزين أي ملف مورد آخر يشار إليه في أي ملف وحدة نمطية GWT (أو رمز مثل الصور) في المجلد "العام" المرتبط به وحدة GWT.

نصائح أخرى

الطريقة الجديدة للعمل في GWT هي استخدام مجلد الحرب.

ولكن، إذا كان لديك مشروع عبارة عن مكتبة القطعة القابلة لإعادة الاستخدام يتم استخدامها في تطبيق GWT، فعليك وضع الموارد في المجلد العمومي. سوف يتأكد المحول البرمجي على إدراج الملفات تلقائيا في الحزمة التي تم إنشاؤها تلقائيا.

كما أراها، فإنه يعتمد على الاحتياجات الخاصة بك، ولكن دعنا نبدأ في مثال على التحدث أولا ...

أجد. توثيق (يجب أن تكون GWT 2.6.0) حول هذا لتكون غير صحيحة أو غير كاملة غير كاملة / مربكة. كما اراه (أنا لست جرو لذا يرجى تصحيح لي إذا كانت التحقيقات مخطئ!) أبحث في ما يلي مثال بنية ProJ.

myproj/
  src/my/gwtproj/
     client/
       img/
         foo1.png
       AppClientBundle.java
       foo2.png
     public/
       img/
         foo3.png
       foo4.png
  war/
    img/foo5.png
    foo6.png
  .classpath
  .project

تخيل أننا قد (أو لا) بحاجة إلى الإشارة هذه الموارد في بعض AppClientBundle واجهة (أو سياق مرجعي آخر):

interfaces AppClientBundle extends ClientBundle {

  @Source("img/foo1.png")
  ImageResource fooImg();
}

ثم يبدو ل تعتمد على الاحتياجات الخاصة بك, ، على سبيل المثال:

  • RA) هذه الموارد (مثل الصور) هي المشار إليها في رمز التطبيق, ، على سبيل المثال في لدينا AppClientBundle واجهة عبر @Source التوضيحية
  • RB) هذه الموارد هي أن تكون مجمعة بواسطة مجلدات, ، على سبيل المثال foo2.png ضد. img/foo1.png
  • RC) يجب أن تكون هذه الموارد متاحة خارج مسار سياق URL للتطبيق المحدد، على سبيل المثال إذا استخدمت مكتبة القطعة، على سبيل المثال http://host1/gwtapp1/foo4.png ضد. http://host1/gwtapp2/foo4.png
  • بحث وتطوير) هذه الموارد تحتاج إلى أن تكون تطبيقية - بشكل مستقل (على سبيل المثال خارجيا) - مراجع عنوان URL، على سبيل المثال http://host1/gwtapp1/foo4.png ضد. http://host1/foo6.png

إليك ما يمكن للمرء القيام به (الاحتمالات) وهي آثار فيما يتعلق رديئة* في الاعلى:

  • P.1) (موصى به عموما كما أراها) وضع لطيف موارد منظمة مجلد تحت my.gwtproj.client (هنا على سبيل المثال foo1.png)
    • من هنا @Source("img/foo1.png")... يعمل بشكل جيد
    • في المستندات أعلاه يخبرون عن بعض public مجلد (في حالتي my.gwtproj.public)، ولكن خلقها كحزمة في الكسوف لا يسمح لي بذلك (منذ public هي كلمة مفاتيح جافا محفوظة, ، ولكن خلقها عبر Navigator عرض الأشغال)
      • ومع ذلك، بهذه الطريقة @Source أعلاه لا يعمل (المحتمل لأنه مشكلة مع النسبية AppClientBundle نظام الملفات الموقع)
      • ومع ذلك، إذا كان المورد متاحا للجمهور بموجب سياق التطبيق، فقد يتعين على المرء القيام بذلك عن طريق هذا public مجلد
  • P.2) وضع الموارد "غير المجموعات" مباشرة تحت myproj/war, ، على سبيل المثال projdir/war/foo6.png
    • بهذه الطريقة يمكن استخدامها / وجدت في التعليقات التوضيحية، على سبيل المثال @Source
    • ويمكن الإشارة إلى خارج التطبيق نفسه عبر مثل http://host1/foo6.png
  • P.3) وضع موارد منظمة مجلد تحت myproj/war, ، على سبيل المثال projdir/war/img/foo5.png
    • على النقيض من P.2) @Source("img/foo5.png") لن تعمل بعد الآن
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top