2017-02-23 10 views
0

これは初めてのRequire.jsの試みで、jQueryプラグインの使用方法、特にhistory.jsを使用してSPAを管理する方法を理解しようとしています。以下のコードはmain.jsにあり、スクリプトは実行されますが、実際にHistory.pushState()、State.getState()などのプラグインメソッドを実際に使用する方法を理解することはできません。 "getState is not a function"エラーメッセージがコンソールに表示され続けます。require history.js plugin

(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のプライベートには、このコードが含まれています

私は私だけのものを把握しようとしているとして、これまでに得たとの文書を設定したすべてのものだ
define(['jquery'], function (jq) { 
    return jq.noConflict(true); 
}); 

。私はexports: Historyと機能パラームについて疑問を持っていますが、それはrequire(['history])ですが、完全に別のものかもしれません。

ところで、私は以前のプロジェクトで履歴を使用していましたので、あなたが疑問に思っているかもしれないので、使用方法を理解しているように感じます。 :)

編集:history.jsファイルの圧縮/非圧縮バージョンを使用しています。パスを追加しても何も変わりませんでした。それがあってもなくても、必要に応じてブラウザに読み込まれたスクリプトを見ることができます。私はまだHistory.getState()関数エラーではありません取得します。

ありがとうございました。

+0

私はあなたが 'history'のための' paths'の設定を持っていない驚いているようにjQueryと一緒に歴史を追加

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

してみてください。どのファイルを複数のファイルに配布していますか?私は[ここ](https://github.com/browserstate/history.js/tree/master/scripts)を見ると、たくさんのサブディレクトリを見ることができます。また、 'History.getState()'を呼び出す直前に 'window.History'を調べるとどうなりますか? – Louis

+0

私は圧縮されたhistory.jsファイルを使用しています。私は元の投稿をその情報で編集しました。私がHistory.getState()を呼び出す前に検査すればHistory関数が得られます。 [link](https://i.imgsafe.org/3f009d92d4.jpg) – skrunic

答えて

0

あなたはコードで歴史にアクセスしているが、パスは、jQueryのような歴史のjsファイルのパスを追加する必要が

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

が定義されていません。依存

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

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

})(); 
+0

あなたの返信ありがとうございますが、ファイルがブラウザに読み込まれていることをWebインスペクタで確認できるので問題はないようです。それでも、History.getState()は関数エラーではありません。 :/私は元の投稿をそのオプションと無関係に編集しました。 – skrunic