2013-09-06 16 views
9

Używam requirejs. Moja treść main.js jest podobna do następującej.Konfiguracja Requirejs w innym pliku

requirejs.config({ 
    async: true, 
    parseOnLoad: true, 
    packages: [], 
    paths: { 
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min' 
    } 
}); 

require(["login"], function (loginService) { 

    loginService.login('validUser'); 

}); 

Teraz moje elementy konfiguracyjne są niewielkie. Ale później dodam pakiety, ścieżki i inne, więc linie będą się zwiększać.

  1. chcę oddzielne require.config jako inny plik i go używać?
  2. Jeśli opóźnienia załadowania jquery, błąd występuje? Moje inne pliki javascript używają tego.

Odpowiedz

1
  1. można umieścić config w oddzielnym pliku JS, że nie jest to problem. Upewnij się, że plik jest załadowany przed wywołaniem require() w twoim głównym kodzie.

  2. Jeśli używasz jQuery dla innych skryptów, które nie są ładowane poprzez requireJS, dostaniesz błędy jeśli się ładować szybciej niż jQuery. Co musisz zrobić, to przekształcić wszystkie pliki statyczne w moduły requireJS i załadować je wszystkie przez requireJS. Korzystając z funkcji define() w każdym z modułów, można ustawić zależności, więc wszystkie moduły będą czekać na załadowanie jQuery przed wykonaniem własnego kodu.

+3

Możesz także użyć podkładek regulujących (http://requirejs.org/docs/api.html#config-shim), aby uniknąć konieczności zawijania definicji wokół nie-AMD JS. –

+0

Paul - to jest bardzo poprawne i może być używane dla wtyczek jQuery i podobnych - więcej informacji można znaleźć na stronie http://requirejs.org/docs/api.html#config-shim –

13

Tak można zobowiązać swój config zanim wymaga niczego innego, jak ten Przykład

konfiguracji:

require.config({ 
    baseUrl: '/Public/js', 
    paths: { 
     jquery: '../../Scripts/jquery-1.10.2.min', 
     jqueryui: '../../Scripts/jquery-ui-1.10.2.min', 
    }, 
    shim: { 
     jqueryui: { 
      deps: ['jquery'] 
     }, 
    } 
    waitSeconds: 3 
}); 

, a następnie załadować go:

require(['/Public/js/config.js'], function() { 
    require(['home/index'], function() {     
    }); 
}); 

Wystarczy pamiętać, że można odwołać się config.js przez ścieżki w pierwszym require-oświadczenie ponieważ require.js nie można rozwiązać przez baseURL ponieważ nie został załadowany. Kiedy dojdziesz do wewnętrznej instrukcji require() - jej ładowanie i możesz odwoływać się do zależności względem baseUrl.

Powiązane problemy