从字符串内容而不是文件加载Dojo类

时间:2013-10-10 12:04:09

标签: dojo classloader require

对于一个非常特殊的情况,我想存储我在localStorage中从远程加载的Dojo类(即源代码),以便在离线情况下访问它们(我们正在谈论混合移动应用程序)。我把所有东西都运行了,但是dojo.eval不会让我从像这样的字符串创建类

var data = 'define(["dojo/_base/kernel",...'; // class definition as string
dojo.eval(data);

知道怎么做到这一点吗?

2 个答案:

答案 0 :(得分:0)

如果您需要让您的应用离线运行,请将资源(css,images,js)存储在app manifest中。清单文件如下所示。

{
  "name": "My App",
  "description": "My elevator pitch goes here",
  "launch_path": "/",
  "icons": {
    "128": "/img/icon-128.png"
  },
  "developer": {
    "name": "Your name or organization",
    "url": "http://your-homepage-here.org"
  },
  "default_locale": "en"
}

您的应用可能需要数百个模块,因此为了清单的性能和可管理性,您需要创建一个Dojo build,这会将js文件的数量减少到一个或几个,具体取决于您创建的方式构建。

答案 1 :(得分:0)

我终于完成了我想要完成的任务。但是,我发现无法使用localStorage并从字符串加载类。 诀窍是使用XHR从远程加载Dojo类源文件,使用Cordova文件API存储它,获取存储文件的URL并在require()中使用此URL。 做我想要的并让我完全控制缓存的文件。