Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串内容而不是文件加载Dojo类_Dojo_Classloader_Require - Fatal编程技术网

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

从字符串内容而不是文件加载Dojo类,dojo,classloader,require,Dojo,Classloader,Require,对于非常特殊的情况,我希望将从远程加载的Dojo类(即源)存储在localStorage中,以便在脱机情况下访问它们(我们谈论的是混合移动应用程序)。我运行了所有程序,但是dojo.eval不允许我从这样的字符串创建类 var data = 'define(["dojo/_base/kernel",...'; // class definition as string dojo.eval(data); 你知道如何做到这一点吗?如果你需要让你的应用程序离线运行,请将资源(css、图像、js)存储

对于非常特殊的情况,我希望将从远程加载的Dojo类(即源)存储在localStorage中,以便在脱机情况下访问它们(我们谈论的是混合移动应用程序)。我运行了所有程序,但是dojo.eval不允许我从这样的字符串创建类

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

你知道如何做到这一点吗?

如果你需要让你的应用程序离线运行,请将资源(css、图像、js)存储在。清单文件如下所示

{
  "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"
}

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

我终于完成了我要完成的任务。但是,我没有找到使用localStorage和从字符串加载类的方法。 诀窍是使用XHR从远程加载Dojo类源文件,使用Cordova文件API存储它,获取存储文件的URL并在require()中使用此URL。
执行我想要的操作,并让我完全控制缓存文件。

谢谢。是的,标准的离线处理对于标准情况来说是很好的(尽管我从来没有让它在混合应用程序中正常工作)。但是我事先不知道JS文件。在运行时,我根据远程加载的动态配置文件加载这些自定义创建的文件一次。我想存储它们,以便为性能原因或脱机情况做好准备。唯一缺少的链接是类加载器define和declare,它在eval中运行时似乎不起作用。它不声明Dojo类。为此,您需要
declare()
。我不明白你为什么需要评估模块定义。为什么不在需要时调用
define(…)
require()
?除了定义一个模块,您还试图通过计算这个字符串来实现什么?您是否试图通过在运行时加载模块来获得性能?如果是这样,就不需要eval了
require()
应该可以做到这一点。如果要确保运行时加载的模块来自本地存储,请将它们添加到清单中。