2011-07-07 13 views
8

Oddzielne części mojej witryny mają oddzielne zestawy plików Javascript, które - łącznie - razem ingerują w siebie. Aby przetestować wszystko za pomocą Jasmine, wydaje mi się, że potrzebuję sposobu na zdefiniowanie oddzielnych zestawów "aktywów" dla różnych pakietów. Czy jest to obecnie możliwe, a jeśli tak, to w jaki sposób?Jaśmin: zdefiniuj oddzielne zestawy plików źródłowych dla Railsów?

+0

Czy możesz wyjaśnić, jak się ze sobą nawzajem przeszkadzają? Jeśli ostrożnie umieścisz Javascript w przestrzeniach nazw i sprawdzisz, czy każdy moduł w przestrzeni nazw jest już zdefiniowany przed zdefiniowaniem, powinieneś być w stanie uniknąć konfliktu. Być może, jeśli podasz przykład konfliktu, możesz pokazać, jak przepakowywać rzeczy, aby uniknąć konfliktu. Railsy 3.1 aktywów oczekują (domyślnie, tak czy inaczej), że będziesz w stanie zdefiniować wszystkie javascript w jednym pliku application.js (tzn. Wszystkie twoje moduły zostaną zwinięte do jednego pliku). – mwolfetech

+1

Posiadałem zestaw plików JS do publicznej części mojej witryny i jeden do części administracyjnej. Oba miały kilka funkcji i zmiennych globalnych o tej samej nazwie, ponieważ ujawniły podobne zachowanie, ale nieco różniły się w obu częściach. To, co udało mi się zrobić, to: (1) uwzględnienie wspólnego zachowania we wspólnych plikach JS i (2) implementacja [klas i dziedziczenia] (http://ejohn.org/blog/simple-javascript-inheritance/) w celu zaopiekowania się warianty w zachowaniu. Zasadniczo wyczyściłem cały zestaw plików JS, aby wszystkie mogły współistnieć w tym samym czasie. Ale wciąż widzę wartość w testowaniu tylko podzbiorów plików. –

Odpowiedz

2

Możesz rozważyć, zgodnie z sugestią, podział języka javascript na różne przestrzenie nazw. Jednym świetnym sposobem na łatwe oddzielenie javascript na wiele plików jest użycie module pattern, który używa zamknięć i kilku innych właściwości javascript, aby natychmiast wykonać potrzebny kod i go zawrzeć.

+0

co, jeśli dwa pliki js definiują funkcje o tej samej nazwie? W aplikacji internetowej oba nie będą ładowane, ale jaśminem, zderzają się. – apneadiving

+1

Przeprosiny; Nie używałem wcześniej Jasmine, ale ogólnie powyższa procedura jest dobra do dzielenia plików javascript. Jeśli istnieją dwie funkcje o tej samej nazwie, prawdopodobnie powinny należeć do ich własnej przestrzeni nazw/klasy. – NT3RP

Powiązane problemy