将durandal单页面应用程序捆绑到一个HTML页面

时间:2015-05-12 11:29:43

标签: javascript html requirejs single-page-application durandal

我有一个非常奇怪的要求,我需要在一个HTML页面中将所有内容与我的Durandal单页应用程序捆绑在一起。我可以用我的依赖关系来解决这个问题,因为我用一个名字来定义它们:

define("models.mapper", [], function() {

});

然而,似乎无法捆绑durandal东西,因为它定义了没有名字的模块:

define(['require', 'jquery'], function(require, $) {
    // ....
}

当你想让它与路径引用一起工作时,这很好,但是这似乎很难将它内联到HTML中。有关于此的任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

Require.JS要求您每个文件只有一个匿名定义,以便它可以使用相对于基本路径的文件路径+名称来为其命名。如果你想在你的页面上内置durandal源代码,那么你需要更新它们的定义行以给它们相应的名称(即define('durnadal / system',......)。 / p>

更简单的方法可能是在普通durandal项目的结构中构建源代码,然后使用RequireJS优化器(http://requirejs.org/docs/optimization.html)将它们构建为单个JS文件 - 如果您正确配置它缩小然后你可以将文件内容粘贴到页面上的脚本标签中,它仍然清晰可辨!

如果您真的想要,那么您可以继续开发单个HTML文件,但是您真的应该考虑将所有这些自动化为一个繁琐的工作流程并且它应该不会太难以且您将更容易管理码。请注意,您甚至可以使用durandal grunt任务来执行此操作,但我不确定它允许您提供哪些选项,但您绝对可以使用requirejs grunt任务并将其构建到您的工作流程中而不会缩小。通过一些模板化任务,您可以将输出注入最终的HTML页面。