2015-10-31 11 views
19

Po przeczytaniu setek linii o browserify vs webpack i kilku z nich zdecydowałem się przejść do webpacka. Głównym powodem jest to, ponieważ podobał mi się pomysł łączenia wszystkiego w plik js.Webpack z kanciastymi 1.x i ES5

Mam już działający projekt kątowy i chcę go zreorganizować na potrzeby pakietu internetowego. Problem? Mój projekt używa kątowego 1.4.7, ng-animate i zwykłego javascript (ES5), a wszystkie samouczki i podręczniki dotyczą ES6. Nie chcę tak bardzo modyfikować mojego projektu. Jaka jest droga? Chciałbym podać przykład każdego modułu kątowego: fabryka, dyrektywa, kontroler i tak dalej. Wielkie dzięki

+1

Mam to samo pytanie! Aktualnie pracuję w projekcie kątowym 1.x ES5 i nie mam uprawnień do refaktoryzacji go do es6 –

Odpowiedz

3

Zwykle mam plik feature.module.js, który ma moją definicję modułu i wymaga wszystkich dyrektyw/usług zawartych w module. Ma również zewnętrzne zaległości.

/* module.js */ 
 
angular.module('my.module',['dependancy1', 'dependancy2']); 
 

 
//External libraries 
 
require('./dependancy1.module.js'); 
 
require('./dependancy2.module.js'); 
 

 
//Internal components 
 
require('./thing.directive'); 
 
require('./thing.service'; 
 

 
 
/* service.js */ 
 
angular.module('my.module') 
 
    .directive('yourDir', function myDir(){...}); 
 
              
 
             

+0

To wydaje się być bardzo dobrą odpowiedzią, ale mam wrażenie, że brakuje w niej pewnych szczegółów, np. Jak wygląda plik service.js związane z modułem.js, czy to wymaga innego? który z nich potrzebujesz w głównej aplikacji? Czy możesz dodać te szczegóły? – Danielo515

1

staram się to zrobić:

app.js:

require('/any/angular/deps'); 
var subModule = require('/some/sub/module'); 

var app = angular.module('myApp', []); 

// pass the app module in sub modules to allow them to define their own config 
subModule.configure(app); 

/subModule/module.js:

var someSubDirective = require('./subDir/directive'); 

export function configure(app) { 

    someSubDirective.configure(app); 

} 

/subModule/subDir/directive.js:

export function configure(app) { 
    app.directive('myDir', myDir); 
} 

function myDir() { 

} 

Mój pomysł to niech wszystkie moduły podrzędne obsługiwać własną konfigurację, tak deklarując config lub constant, factories lub providers. Pozwólmy, by to się zaczęło bańką do app.js. Oznacza to, że naprawdę łatwo jest usunąć folder ze swojej struktury, ponieważ jest to usunięcie jednego wiersza z jego modułu nadrzędnego.

Dzięki temu ścieżki do plików są dużo krótsze i łatwiejsze w obsłudze.

+0

Jest to jedna edycja linii do usunięcia, ale musisz zadbać o wiele zależności kaskadowych. Wydaje mi się, że webpacki zamykają każdy moduł w zamknięciu, ale nie podoba mi się pomysł użycia 'app = angular.module (...' Ponadto uważam, że nie jest to uciążliwe, ponieważ wymagania są na górze, a konfiguracja wywołuje Nie obwiniam twojego rozwiązania, uważam, że jest całkiem niezły, ale myślę, że łatwo jest przegapić niektóre wymagania lub konfiguracje i uzyskać trochę headhache'a – Danielo515

2

Mam teraz do czynienia z tym samym problemem. I znalazłem coś, co działa (praca w toku, ale przynajmniej widzę postęp). Moje kroki:

  1. Install yeoman
  2. Uruchom this angular-webpack generator. Wybierz „ES5” pytany (druga opcja jest „ES2015”, które myślę, że jest taki sam, że „ES6”)
  3. Zacznij zmieniająca automatycznie wygenerowany boilerplate z Kątowymi kodu

Tak, trzeba jeszcze aby dowiedzieć się więcej o łyku i sassie, ale przynajmniej możesz uruchomić prostą aplikację AngularJS przy użyciu starej składni ES5 i zacząć ją modyfikować.

Prawdopodobnie bloguję na ten temat. Tak więc zaktualizuję tę odpowiedź.

+0

Czy ten blog wciąż jest w trakcie tworzenia? –

+0

Niezupełnie. na to. – jorgeas80