【问题标题】:require history.js plugin需要 history.js 插件
【发布时间】:2017-02-23 16:51:46
【问题描述】:

这是我对 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: Historyrequire(['history]) 中的函数参数有一些疑问,但它可能完全是另外一回事。

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

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

谢谢。

【问题讨论】:

  • 我很惊讶您没有为history 设置paths。您正在加载他们分发的多个文件中的哪一个?当我查看here 时,我看到一大堆子目录和一堆文件。另外,如果你在调用History.getState() 之前检查window.History,你会得到什么?
  • 我正在使用(未)压缩的 history.js 文件。我用这些信息编辑了原始帖子。如果我在调用 History.getState() 之前检查它,我会得到一个 History 函数。 link

标签: javascript jquery requirejs history.js


【解决方案1】:

您正在访问代码中的历史记录,但路径未定义

           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();

})();

【讨论】:

  • 感谢您的回复,但似乎没关系,因为我可以通过网络检查器看到文件已加载到浏览器中。仍然得到 History.getState() 不是函数错误。 :/ 不管怎样,我都用这个选项编辑了原始帖子。
猜你喜欢
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多