Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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
Javascript 使用RequireJS多页和页面模板_Javascript_Optimization_Requirejs - Fatal编程技术网

Javascript 使用RequireJS多页和页面模板

Javascript 使用RequireJS多页和页面模板,javascript,optimization,requirejs,Javascript,Optimization,Requirejs,我从requireJS开始,需要一些帮助来继续它的实现 我的网站是按照默认设置创建的: header.html (always the same, containing the requiredjs script tag) $pageMain (always variable - $pageAbout, $pageContact...) footer.html (always the same) header.html(始终相同,包含requiredjs脚本标记

我从requireJS开始,需要一些帮助来继续它的实现

我的网站是按照默认设置创建的:

header.html (always the same, containing the requiredjs script tag)
$pageMain (always variable - $pageAbout, $pageContact...)
footer.html (always the same)
header.html(始终相同,包含requiredjs脚本标记)
$pageMain(始终为变量-$pageAbout,$pageContact…)
footer.html(始终相同)
我需要在我的站点的不同页面中加载特定的js文件,但我只有一个标题,其中包含设置所需文件的标记


当我的页面为$pageAbout时,我需要加载$pageAbout.js而不是$pageMain.js 我还是做不到

检查脚本我理解它是如何工作的,但在我的例子中,我不能这样做,因为我在header.html中只指定了一次脚本标记

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

根据您可以轻松编辑的内容,这里有各种解决方案

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

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

    // js/main.js
    define(function() {
        var pageId = getPageId();
        require('js/' + pageId);
    }); 
    
    这取决于在加载标头时能够获取页面id—可以通过在加载标头之前设置的JS变量,也可以通过解析URL,或者通过其他方式

  • 您可以简单地从页眉中删除脚本标记,并将其包含在页面的变量体中。脚本标记可以出现在文档中的任何位置

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

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

其中任何一个都应该有效——最后两个可能是最简单的。RequireJS文档是非常规范的,但是有很多方法可以实现一个有效的实现——您不必按照推荐的方法来实现它。

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

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

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

    // js/main.js
    define(function() {
        var pageId = getPageId();
        require('js/' + pageId);
    }); 
    
    这取决于在加载标头时能够获取页面id—可以通过在加载标头之前设置的JS变量,也可以通过解析URL,或者通过其他方式

  • 您可以简单地从页眉中删除脚本标记,并将其包含在页面的变量体中。脚本标记可以出现在文档中的任何位置

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

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

其中任何一个都应该有效——最后两个可能是最简单的。RequireJS文档非常规范,但是有很多方法可以实现,您不必按照推荐的方式来实现。

感谢您的快速回答nrabinowitz!使用切换页面ID的方法的解决方案看起来很棒。我会尝试一下,明天我会再次发布反馈!谢谢你的快速回答,纳拉比诺维茨!使用切换页面ID的方法的解决方案看起来很棒。我会尝试一下,明天我会再次发布反馈!