gol*_*dim 2 css qooxdoo dynamic-script-loading
是否有一个特殊的qooxdooqx.util.DynamicScriptLoader类可以像JavaScript 文件一样动态加载 CSS 文件?
例如,取决于用户选择他想要使用什么地理地图,应用程序会加载特定的 JavaScript 和 CSS 文件。我可以通过类获取.js文件,但对于 css,我使用文件中的部分,它总是加载样式文件(我是对的吗?)。qx.util.DynamicScriptLoaderexternalResourcesManifest.json
包含 css 文件的动态可能性,例如在类的构造函数中,可以qx.bom.Stylesheet.includeFile像这样使用:
qx.bom.Stylesheet.includeFile("https://myserver.com/my.css");
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我成功地为包/框架构建了完全动态的包装器,其中所有外部资源仅在包装器类实例化时与qx.util.DynamicScriptLoader.
如果 css 文件位于您的项目资源中,则必须调用qx.util.ResourceManager.getInstance().toUri()资源名称并将其输入到qx.bom.Stylesheet.includeFile.
假设您的项目中有一个 css 文件,resource/myframework/my.css您必须首先@asset在包装类中创建如下提示:
/*
* @asset(myframework/my.css)
*/
Run Code Online (Sandbox Code Playgroud)
然后,例如在您调用的构造函数中:
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
Run Code Online (Sandbox Code Playgroud)
为了避免多次加载 css 文件,我CSS_INCLUDED在包装类中添加了一个静态类成员,初始化为 false,然后在调用后设置为 true,qx.bom.Stylesheet.includeFile这会产生以下代码:
if(my.wrapper.CSS_INCLUDED === false) {
qx.bom.Stylesheet.includeFile(qx.util.ResourceManager.getInstance().toUri(
"resource/myframework/my.css"
));
my.wrapper.CSS_INCLUDED = true;
}
Run Code Online (Sandbox Code Playgroud)
这样后续实例化就不会再次加载 css 文件。