Month: May 2016
AngularJS – Problem z cachowaniem templatów *.html
Problem nie rozwiązany, ale czasem wraca więc go opiszę.
Opis problemu
Pracuję na Visual Studio 2015. Mam angularową dyrektywę (directive), która posiada kod JS oraz plik powiedzmy “/app/directive.html”. Dyrektywa ta jest używana na moim głównym widoku (Index.cshtml, dla głównego kontrollera)
* uruchamiam aplikację i idę do adresu ‘/’ to widzę aktualne dane
* podmieniam coś w pliku “/app/directive.html”
* odświeżam ‘/’, nie widzę zmian w dyrektywie 😦
* wchodzę przeglądarką na adres “/app/directive.html”, widzę nową wersję
* odświeżam ‘/’, widzę zmiany w dyrektywie
NOTE: pisząć odświeżam myślę o twardym reload, Ctrl+R
A gdy problem nie występuję
Jest też sytuacja gdy od razu po zmianach pliku “/app/directive.html”, widzę zmiany po odświeżeniu ‘/’. Nie wiem jeszcze jak nie wiem dlaczego.
Możliwe rozwiązanie
Ma to “jakiś” związek z cachowanie plików html przez przeglądarkę i jeszcze dodatkowo przez silnik angulara. Nie reprodukuje mi się teraz problem ale następnym razem spróbuję skorzystać z ng-template https://docs.angularjs.org/api/ng/directive/script. i wrzucać moje derektywy w pliki *.cshtml. Nie testowane jeszcze – może nawet tak się nie da.
Lepsze możliwe rozwiązanie
Użyję tego: https://www.npmjs.com/package/gulp-angular-templatecache
Implementowanie CQRS
http://weblogs.asp.net/shijuvarghese/cqrs-commands-command-handlers-and-command-dispatcher
– jak w praktyce zrobic prosty Dispatcher, Command, CommandHanler.
– jedynie powienienem nazwać CommandDispatcher zamiast CommandBus.
http://stackoverflow.com/questions/8184490/confusion-about-message-bus-command-dispatcher-patterns
– slajdy z prezentacji, które wiele mi dały, akurat też było w kontekście Ninject’a
– i już wiem gdzie dać logowanie błędów.
z prezentacji: https://www.youtube.com/watch?v=itQOsr9pmsg
Nazewnictwo plural czy singular
UserList, a nie UsersList
DesignRepository zamiast DesignsRepository
Przykład nazw kontrollerów w Angularze:
UserCtrl,
UserListCtrl,
ewentualnie NewUserCtrl
JSFiddle na problemy z JavaScriptem, Angularem, TypeScriptem
https://jsfiddle.net (i także wiele podobnych tooli/serwisów) jest edytorem w przeglądarce który pozwala odpalić nasz kod napisany w JavaScripcie. Takich tooli jest o wiele więcej dla różnych języków itp, ja skupie się na tym jednym i go opiszę, może są nawet lepsze alternatywy – nie wiem, widzę jednak, że jest najbardziej popularny na StackOverflow.
Składa się z 3 okienek gdzie wpisujemy nasz kod (html, JavaScript, css) oraz czwartego (output) w którym się uruchomi nasz kod:
Obecnie pozwala wybrać z kilku języków: JavaScript, CoffeeScript, JavaScript 1.7, Babel, TypeScript. Do tego kilkadziesiąt frameworków JS, z tego te bardziej popularne w kilku wersjach, np Angular jest w 4, a jQuery w ok. 20. To jest tylko takie ułatwienie, a nie ograniczenie. Dowolną bibliotekę można też dociągnąć tak jak includujemy każdy nowy scrypt w markupie html.
Debugowanie
Przyda się gdy coś “nie działa”
Najpierw samemu trzeba wyczerpać możliwości, bo często problem leży gdzieś u nas i widząć czysty kod, który działa w JSFiddle mamy pewność że to podejście działa tylko u nas czegoś jeszcze brakuje (gryzą sie zależności, czegoś brakuje, itp, itd). Jeśli już uruchomiliśmy w JSFiddle i nie działa tak jak powinno to wtedy mamy gotowy materiał na pytanie na StackOverflow. Nie możemy oczekiwać że obcy ludzie będą nam pomagać jeśli najpierw sami sobie nie pomogliśmy. Jeśli wrzucimy linka z kodem do uruchomienia na JSFiddle to każdy może na własne oczy zobaczyć co jest grane. I na przykład odpowiedzieć nam poprawioną wersją kodu.
Historia zmian
Nasz kod możemy wersjonować lub forkować, nawet bez zalogowania się.
Jaki jest dobry Folder dla trzymania Enum’ów?
Shared
Chyba, że naturalnie wynika coś lepszego, czyli np mamy folder Orders gdzie są wszyskie encje i tam też jest enum OrderyState. Jeśli jednak nasze klasy (encje, modele, dto, …) siedzą w folderach Models, Dto itp to może Shared dla enumów będzie dobrą opcją.