Niedawno przeszedł wykonywania konfigurowania RequrieJS z automatyczną optymalizacją budować w aplikacji ASP.NET MVC.Istnieje wiele przydatnych artykułów na blogu, takich jak Simon's, które stanowią świetne odniesienie. Z perspektywy ASP.NET jednym z najbardziej użytecznych w konfiguracji optymalizatora RequireJS dla wielostronicowych aplikacji ASP.NET był Making RequireJS play nice with ASP.NET MVC.
Korzystając z doskonałych informacji, przygotowałem własną wersję: ASP.NET MVC RequireJS example on GitHub. Znaczna część tego, co jest zawarte, jest podobna do przykładów już tam zawartych, jednak aby poradzić sobie z kwestią widoków cząstkowych, a zależności zależą od wielu stron, podjąłem nieco inne podejście.
_Layout.cshtml
Najbardziej zauważalną różnicą od istniejących przykładów jest stworzenie zwyczaju RequireViewPage że naraża metody przekazywania danych konfiguracyjnych do RequrieJS jak strona odniesienia specyficzne wymagają zależności.
Więc _Layout.cshtml będzie wyglądać podobnie jak to, czego można spodziewać się z:
<head>
...
@RenderModuleConfig()
<script type="text/javascript" src="@Url.Script("vendor/require.js")" data-main="main"></script>
</head>
<body>
...
Wyświetleń & partials
Aby podłączyć się widoki (iw moim przypadku widoku nokaut modelach) an additional script fragment został dodany do spodzie _Layout.cshtml następująco
...
@RenderSection("scripts", required: false)
<script type="text/javascript">require(['main'], function() { require(['lib/knockout/knockout.require']); });</script>
</body>
będzie to Ensu w przypadku każdej zależności widoku moduł główny został załadowany (zakładając, że zależności dla głównej zostały zdefiniowane w main.js
, a następnie pozwala na uzależnienie specyficznych zależności od połączenia za pomocą atrybutów danych.
<div data-require="@MainModule"> ... </div>
<div data-require="@Module("address")"> ... </div>
<div data-require="view\home\index\model"> ... </div>
Dla pełnego wyjaśnieniu projektowaniu i wyborów, patrz README on GitHub
Dzięki za bardzo dobrze napisana odpowiedź. Mam lepsze zrozumienie, jak korzystać z RequireJS teraz. –
powyższa metoda działa doskonale na stronach, ale gdy strona ładowana przez ajax wywołuje div, moduły nie ładują .. jakiejkolwiek pomocy? –
To podejście nie wydaje się być całkowicie niezawodne, ponieważ kod w tagach skryptu wbudowanego może być wykonany przed kodem w pliku main.js, co prowadzi do sporadycznych awarii. Zobacz [tę odpowiedź] (http://stackoverflow.com/a/14345709) na powiązane pytanie. –