使用RequireJS多页面和页面模板

时间:2013-09-17 19:40:39

标签: javascript optimization requirejs

我从requireJS开始,需要一些帮助来继续实施。

我的网站是按照默认值构建的:

    header.html (always the same, containing the requiredjs script tag) 
$pageMain (always variable - $pageAbout, $pageContact...)
footer.html (always the same)

我需要在我的网站的不同页面中加载特定的js文件,但我只有一个标题包含用于设置所需文件的标记。

<script data-main="js/main" src="js/lib/require.js"></script>


当我的页面是$ pageAbout时,我需要加载$ pageAbout.js而不是$ pageMain.js 我仍然无法做到这一点。

检查https://github.com/requirejs/example-multipage#我理解它是如何工作的,但在我的情况下,我不应该这样做,因为我在header.html中只指定了一次脚本标记

有什么建议吗? 我不知道我的问题是否清楚。请让我知道以便更好地解释。

1 个答案:

答案 0 :(得分:1)

这里有各种解决方案,具体取决于您可以轻松编辑的内容。

  • 您可以根据当前页面更改标题中的脚本标记。我从你的描述中假设这是不可能的。

  • 如果您必须始终加载相同的js/main脚本,则可以将其用作不同页面特定模块之间的切换:

    // js/main.js
    define(function() {
        var pageId = getPageId();
        require('js/' + pageId);
    }); 
    

    这取决于能够在头加载时获取页面ID - 可以通过在加载头之前设置的JS变量,也可以通过解析URL或通过其他方式来获取。

  • 您只需从标题中删除脚本标记,然后将其包含在页面的变量正文中即可。脚本标记可以出现在文档中的任何位置。

  • 您可以从标题脚本标记中删除data-main属性(以便标题只加载RequireJS库),然后在页面主体中添加脚本标记以加载特定于页面的模块:

    <script> require('js/pageAbout'); </script>
    

任何这些都应该有用 - 最后两个可能是最简单的。 RequireJS文档是非常规范的,但是有很多工作实现的路径 - 您不必按照推荐的方式进行操作。