سؤال

أنا أستخدم GWT ClientBundle لأول مرة. كتبت واجهة تمتدها وهنا الكود:

package edu.etf.fuzzy.client.login;

import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;

public interface Resources extends ClientBundle {

 @Source("logo_federacija.jpg")
 ImageResource logo();

 @Source("shim.gif")
 ImageResource shim();
}

سؤالي هو: كيف يمكن العثور على أين يمكن العثور على هذه الموارد (الصور في هذه الحالة) بالضبط. هل يجب أن أضعهم: أ) في نفس الدليل مثل الواجهة - (قبيح)؟ ب) في دليل محدد لا يمكن تغييره أبدًا؟ ج) في الدليل الذي أريده ، ولكن يجب أن تكون هناك آلية لتحديدها - (ستكون رائعة)؟

شكرًا لك.

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

المحلول

عادةً ما أقوم بإنشاء حزمة جديدة للموارد (com.example.project.resource) ووضع ClientBundle الواجهة والموارد المناسبة هناك (معًا ، كما في دليل واحد) - إنه ملف Java واحد بالإضافة إلى مجموعة من الصور ، لا حاجة لمزيد من الفصل ، IMHO.

أما بالنسبة للمسارات للموارد - يمكنك تمريرها عبر @Source("path") حاشية. ملاحظة. على سبيل المثال ، إذا كان لديك ClientBundle واجهة في com.example.project.resource والصور في com.example.project.images, ، ثم تكتب @Source("../images/shim.gif"). ربما يمكنك استخدام المسارات المطلقة ، ولكن تأكد من تخزينها في متغير ثابت ومشاركة بين المورد ، بحيث يمكن تجاوزه بسهولة ؛)

نصائح أخرى

على غرار نقاط Igor:

com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here

المفتاح هنا هو أنه إذا لم تستهلك مورد (CSS/Image/Text) ، فسيتجاهله برنامج التحويل البرمجي GWT. هذا يمنع حرب الانتفاخ نظرًا لأن التطبيق الخاص بك يحصل على حامل ولديك مئات الصور وليس متأكدًا من المستخدمين والذين ليسوا كذلك.

إذا كنت تستخدم خيار إسقاط كل شيء في الجمهور/الصور المجلد ، ثم سيتم تضمين جميع العناصر في حرب التطبيق الخاصة بك ، بغض النظر عما إذا كانت تستخدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top