是否可以将GWT ImageResource 与区域设置特定的网址一起使用,而无需复制基础图像?
我读到影响SEO的图像网址,应该选择好的有意义的关键词来提高排名。所以我最好在图片网址中使用特定于区域设置的关键字,即来自i18n Constants类的图片名称。
它可以像调用myImageResource.setUrl一样简单吗?如果是这样,什么时候打电话呢?
或者是否有注释来设置网址?
下面是一些代码上下文。
public interface MyImageBundle extends ClientBundle
{
public static final MyImageBundle INSTANCE = GWT.create(MyImageBundle.class);
public static final String IMAGE_PATH = "image/";
@Source(IMAGE_PATH + "foo1.png")
ImageResource foo1();
@Source(IMAGE_PATH + "foo2.png")
ImageResource foo2();
}
在浏览器中,我希望网址看起来像这样:
图片foo1& foo2在所有语言环境中都是相同的,我只希望url是特定于语言环境的。
我理想情况下会形成来自常量的url的路径和关键字,例如:
public interface MyConstants extends com.google.gwt.i18n.client.Constants
{
String path();
String keywordFoo1();
String keywordFoo2();
}
MyConstants myConstant = (MyConstants) GWT.create(MyConstants.class);
以下工作会怎样?这是正确的方法吗?
Image foo1Image = new Image(MyImageBundle.INSTANCE.foo1());
foo1Image.setUrl(myConstant.path() + "/" + myConstant.keywordFoo1() + ".png");
或者是否有注释在MyImageBundle中设置网址?
答案 0 :(得分:2)
您似乎缺少ClientBundle的基础逻辑 我将尽快解释,但你应该看一下TLTR版本的GWT规范。
简而言之,在编译你的应用程序时,gwt编译将获取位于MyImageBundle类中由ImageResource注释的所有图像文件,并将其打包到一个单个精灵表图像文件(带有乱码的SHA1哈希文件名)中节省下载空间和时间。
此文件保存在GWT编译目录下,GWT Image类知道如何使用它来正确显示图像。
似乎你应该为此目的跳过使用ImageResource:
修复您的代码:
Image foo1Image = new Image();
foo1Image.setUrl(myConstant.path() + "/" + myConstant.keywordFoo1() + ".png");
而不是在服务器端克隆文件,你可以编写(或在网上找到)一个非常简单的http路由器,它为两个内容调用提供: mydomain.com/myFrenchPath/myFrenchKeywordFoo1.png mydomain.com/myEnglishPath/myEnglishKeywordFoo1.png 从: mydomain.com/images/KeywordFoo1.png
答案 1 :(得分:-2)
所有ClientBundle都可以自动国际化: http://www.gwtproject.org/doc/latest/DevGuideClientBundle.html#I18N
为默认版本创建foo1.png,为法语版本创建foo1_FR.png。