Requirejs using shim

前端 未结 2 1387
礼貌的吻别
礼貌的吻别 2020-12-20 15:35

Using shim by requirejs2, there is a way to tell to requires that a module is already loaded?

Example:



        
相关标签:
2条回答
  • 2020-12-20 15:49

    Well, if underscore is already loaded and available, you do not need the shim at all. Backbone will happily load. If not, it's probably because underscore is not actually loaded.

    It sounds however wrong to be only partially using require.js, you might as well AMD-load them all. To do that you will need to change your shim like this:

    shim: {
        backbone: {
            deps: ["underscore", "jquery"],
            exports: "Backbone"
        },
    
        underscore: {
            exports: "_"
        }
    }
    

    and of course update your paths.

    0 讨论(0)
  • 2020-12-20 16:06

    I am not sure if you were able to find the best approach yet for your use case. If you really - for some reason - need to add your other scripts without using RequireJS as in your code example @js999, then you would need to check if the global variable (jQuery, _) of those scripts exist and then define them as modules. From your code example it would look something like this:

    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="undescrore.js"></script>
    <script type="text/javascript" src="require.js'"></script>
    <script type="text/javascript">
        // check for jQuery 
        if (window.jQuery) {
            define('jquery', [], function () {
                return window.jQuery;
            });
        }
    
        // check for underscore
        if (window._) {
            define('underscore', [], function () {
                return window._;
            });
        }
    
        require.config({
            paths: {
                // remove the file extension (.js)          
                "backbone": '/vendor/js/backbone-min'
            },
            shim: {
                'backbone': {
                    deps: ['underscore', 'jquery']
                }
            }
        });
    </script>
    
    0 讨论(0)
提交回复
热议问题