Require.js保持无限重装

时间:2016-03-19 23:36:15

标签: javascript requirejs

我想通过r.js -o app.build.js

缩小我的requirejs项目

完成后,结果会破坏我的网站。

作为附加的剪辑,您可以看到页面一直在重新加载,控制台显示一次又一次重新加载缩小的模块

https://www.youtube.com/watch?v=CQvWQ28nG1c&feature=youtu.be

有什么想法吗?

        <script type="text/javascript" src="http://mysite/js/require.js" 
         data-main="http://mysite/js/dist/app.out.js" defer async="true">
         </script>

越野车页面在这里

http://www.foolpin.com/review/%E9%BB%83%E5%AE%89

app.build.js

    {
        name: "app.main.js",
        mainConfigFile: 'app.main.js',
        out: "dist/app.out.js",
        optimize: "uglify2",
        preserveLicenseComments: false,
        generateSourceMaps: false,
        optimizeAllPluginResources: false,
        findNestedDependencies: false,
        wrap: true,
        wrapShim: true,
        include: ["./require.js"],

    }

app.main.js

    requirejs.config({
        paths: {
            require: './require',
            jquery: './vendor/js/jquery-2.1.1.min',
            underscore: './vendor/js/underscore-min',
            backbone: './vendor/js/backbone-min',
            hbs: './vendor/js/hbs/hbs',
            handlebars: './vendor/js/handlebars-v4.0.5',
        },
        hbs: { // optional
            helpers: true,            // default: true
            templateExtension: 'hbs', // default: 'hbs'
            partialsUrl: ''           // default: ''
        },

        shim: {
            handlebars: {
                exports: 'Handlebars'
            },
            backbone: {
                deps: [
                    'underscore',
                    'jquery'
                ],
                exports: 'Backbone'
            },
            underscore: {
                exports: '_'
            }
        },

    });

    requirejs(["app_config", "app"],function(cfg, App, noop_ahoy){
        return App.initialize();
    });

更新

我有多个文件,某些文件本身具有无穷无尽的功能

这会是问题吗?

https://gist.github.com/poc7667/555a754a105a88cde13d

    define([
        ...
        "jquery"
    ],function(

1 个答案:

答案 0 :(得分:1)

这个问题是由一些可能容易犯错的事情引起的。使用RequireJS时,始终使用您提供的代码或类似内容加载包:

<script type="text/javascript" src="http://mysite/js/require.js" 
         data-main="http://mysite/js/dist/app.out.js" defer async="true">
         </script>

关键是你只有src="path/to/require.jsdata-main="path/to/bundle.js"。这很重要。

您的错误是在捆绑包中包含RequireJS,并将脚本标记更改为

<script type="text/javascript" src="http://mysite/js/bundle.js" 
         data-main="http://mysite/js/bundle.js" defer async="true">
         </script>

通过Matrix中的一些小故障,这会导致一遍又一遍地递归加载同一个脚本,因为bundle.js中的某个地方需要require,并且它再次获取bundle.js并且一切都变得疯狂。这是我唯一能想到的。现在你的页面似乎不再使用捆绑的脚本,所以我无法验证这一点。

解决方案是在捆绑包中包含RequireJS本身。它就在文档中。