需要history.js插件

时间:2017-02-23 16:51:46

标签: javascript jquery requirejs history.js

这是我对Require.js的第一次尝试,我正在试图弄清楚如何使用jQuery插件,特别是应该管理我的SPA的history.js。下面的代码位于main.js中,脚本运行但我无法想象如何实际使用History.pushState(),State.getState()和其他插件方法。我一直在控制台中收到"getState is not a function"错误消息。

(function() {
    requirejs.config(
    {
        baseUrl: 'js',
        paths: {
            'jquery': 'vendor/jquery-1.11.2.min',
            'history': 'history.js'
        },
        shim: {
            'history': {
                deps: ["jquery"],
                exports: 'History'
            }
        },
        map: {
          '*': { 'jquery': 'jquery-private' },
          'jquery-private': { 'jquery': 'jquery' }
        }
    }
   );   

   define(["jquery"], function($) {
        $(function() {

            require(['history'], function( History ){
                var 
                History = window.History,
                State = History.getState();
            });

        });
    });

})();

jquery-private包含以下代码:

define(['jquery'], function (jq) {
    return jq.noConflict( true );
});

这就是我所拥有的一切,因为我只想弄清楚并设置文件。我对exports: History中的require(['history])和函数参数有疑问,但它可能完全不同。

顺便说一下,我在以前的项目中使用了历史记录,所以我觉得我理解如何使用它,以防你可能想知道。 :)

编辑:我正在使用history.js文件的压缩/未压缩版本。添加路径并没有改变一件事。无论有没有,我都可以在需要时看到脚本在浏览器中加载。我仍然得到History.getState()不是函数错误。

感谢。

1 个答案:

答案 0 :(得分:0)

您正在使用代码访问历史记录但未定义路径

           require(['history'], function( History ){

你需要像jquery一样添加历史js文件的路径。

    paths: {
        'jquery': 'vendor/jquery-1.11.2.min',
        'history' : '<path to js file>' 
    },

尝试将历史记录与jquery一起添加为依赖项

define(["jquery","history"], function($,History) {

    var 
    History = window.History,
    State = History.getState();

})();