Szablon Hot Towel
Autor: Mads Kristensen
Szablon Hot Towel MVC został napisany przez Johna Papa
Wybierz wersję do pobrania:
Szablon Hot Towel MVC dla programu Visual Studio 2012
Szablon HOT Towel MVC dla Visual Studio 2013
Gorący ręcznik: Bo nie chcesz iść do SPA bez jednego!
Chcesz zbudować SPA, ale nie może zdecydować, gdzie zacząć? Użyj gorącego ręcznika i w sekundach będziesz mieć SPA i wszystkie narzędzia, które trzeba na nim zbudować!
Hot Ręcznik tworzy doskonały punkt wyjścia do tworzenia aplikacji jednostronicowej (SPA) z ASP.NET. Poza polem zapewnia modułową strukturę kodu, nawigację widoków, powiązanie danych, zaawansowane zarządzanie danymi i proste, ale eleganckie style. Hot Ręcznik zapewnia wszystko, czego potrzebujesz, aby zbudować SPA, więc możesz skupić się na aplikacji, a nie hydrauliku.
Dowiedz się więcej o tworzeniu SPA z filmów Johna Papa, samouczków i kursów Pluralsight.
Struktura aplikacji
Hot Towel SPA udostępnia folder Aplikacji zawierający pliki JavaScript i HTML definiujące aplikację.
Wewnątrz folderu Aplikacja:
- durandal
- services
- viewmodels
- widoki
Folder App zawiera kolekcję modułów. Te moduły hermetyzują funkcje i deklarują zależności od innych modułów. Folder views zawiera kod HTML aplikacji, a folder viewmodels zawiera logikę prezentacji dla widoków (typowy wzorzec MVVM). Folder usług jest idealny do obsługi wszystkich typowych usług, których aplikacja może potrzebować, takich jak pobieranie danych HTTP lub interakcja z magazynem lokalnym. Często zdarza się, że wiele modelów widoków używa ponownie kodu z modułów usługi.
ASP.NET struktura aplikacji po stronie serwera MVC
Hot Ręcznik opiera się na znanej i potężnej strukturze MVC ASP.NET.
- App_Start
- Zawartość
- Kontrolery
- Modele
- Skrypty
- Widoki
Polecane biblioteki
- ASP.NET MVC
- ASP.NET Web API
- ASP.NET Optymalizacja sieci Web — łączenie i minimalizowanie
- Breeze.js — zaawansowane zarządzanie danymi
- Durandal.js — nawigacja i wyświetlanie kompozycji
- Knockout.js — powiązania danych
- Require.js — modułowość z procesorem AMD i optymalizacją
- Toastr.js — wyskakujące komunikaty
- Twitter Bootstrap — niezawodny styl CSS
Instalowanie za pośrednictwem szablonu Spa Hot Towel programu Visual Studio 2012
Gorący ręcznik można zainstalować jako szablon programu Visual Studio 2012. Wystarczy kliknąć File
| New Project
i wybrać pozycję ASP.NET MVC 4 Web Application
. Następnie wybierz szablon "Aplikacja jednostronicowa gorącego ręcznika" i uruchom polecenie!
Instalowanie za pośrednictwem pakietu NuGet
Hot Towel to również pakiet NuGet, który rozszerza istniejący pusty projekt MVC ASP.NET. Wystarczy zainstalować przy użyciu narzędzia Nuget, a następnie uruchomić!
Install-Package HotTowel
Jak budować na gorący ręcznik?
Po prostu zacznij dodawać kod!
- Dodaj własny kod po stronie serwera, najlepiej Entity Framework i WebAPI (który naprawdę świeci Breeze.js)
- Dodawanie widoków do
App/views
folderu - Dodawanie modelu viewmodels do
App/viewmodels
folderu - Dodawanie powiązań danych HTML i Knockout do nowych widoków
- Aktualizowanie tras nawigacji w programie
shell.js
Przewodnik po kodzie HTML/JavaScript
Views/HotTowel/index.cshtml
index.cshtml to trasa początkowa i widok aplikacji MVC. Zawiera on wszystkie standardowe tagi meta, linki css i odwołania do języka JavaScript, których można oczekiwać. Treść zawiera pojedynczy element <div>
, który jest miejscem, w którym zostanie umieszczona cała zawartość (twoje widoki) podczas ich żądania. Używa @Scripts.Render
Require.js do uruchomienia punktu wejścia dla kodu aplikacji, który znajduje się w main.js
pliku. Zostanie wyświetlony ekran powitalny, który pokazuje, jak utworzyć ekran powitalny podczas ładowania aplikacji.
<body>
<div id="applicationHost">
@Html.Partial("_splash")
</div>
@Scripts.Render("~/scripts/vendor")
<script type="text/javascript" src="~/App/durandal/amd/require.js"
data-main="@Url.Content("~/App/main")"></script>
</body>
Aplikacja/main.js
Plik main.js
zawiera kod, który zostanie uruchomiony zaraz po załadowaniu aplikacji. Jest to miejsce, w którym chcesz zdefiniować trasy nawigacji, skonfigurować widoki uruchamiania i wykonać dowolną konfigurację/uruchamianie aplikacji, takie jak tworzenie danych aplikacji.
Plik main.js
definiuje kilka modułów durandal, aby ułatwić rozpoczęcie uruchamiania aplikacji. Instrukcja define ułatwia rozwiązywanie zależności modułów, dzięki czemu są one dostępne dla funkcji. Najpierw włączono komunikaty debugowania, które wysyłają komunikaty o zdarzeniach wykonywanych przez aplikację w oknie konsoli. Kod app.start informuje platformę durandal o uruchomieniu aplikacji. Konwencje są ustawione tak, aby durandal wiedział wszystkie widoki i modele widoków znajdują się odpowiednio w tych samych nazwach folderów. app.setRoot
Na koniec kopie ładuje shell
przy użyciu wstępnie zdefiniowanej entrance
animacji.
define(['durandal/app',
'durandal/viewLocator',
'durandal/system',
'durandal/plugins/router'],
function (app, viewLocator, system, router) {
// Enable debug message to show in the console
system.debug(true);
app.start().then(function () {
router.useConvention();
viewLocator.useConvention();
//Show the app by setting the root view model for our application.
app.setRoot('viewmodels/shell', 'entrance');
});
});
Widoki
Widoki znajdują się w folderze App/views
.
shell.html
Element shell.html
zawiera układ główny kodu HTML. Wszystkie inne widoki będą komponowane gdzieś po stronie widoku shell
. Hot Ręcznik zapewnia shell
trzy takie regiony: nagłówek, obszar zawartości i stopkę. Każdy z tych regionów jest ładowany z zawartością w postaci innych widoków po żądaniu.
Powiązania compose
nagłówka i stopki są zakodowane w gorącym ręczniku, aby wskazać nav
odpowiednio widoki i footer
. Powiązanie tworzenia sekcji #content
jest powiązane z aktywnym elementem modułu router
. Innymi słowy, po kliknięciu linku nawigacji odpowiedni widok zostanie załadowany w tym obszarze.
<div>
<header>
<!--ko compose: {view: 'nav'} --><!--/ko-->
</header>
<section id="content" class="main container-fluid">
<!--ko compose: {model: router.activeItem,
afterCompose: router.afterCompose,
transition: 'entrance'} -->
<!--/ko-->
</section>
<footer>
<!--ko compose: {view: 'footer'} --><!--/ko-->
</footer>
</div>
nav.html
Zawiera nav.html
linki nawigacyjne dla SPA. Jest to miejsce, w którym można umieścić strukturę menu, na przykład. Często są to dane powiązane (przy użyciu aplikacji Knockout) do modułu router
w celu wyświetlenia nawigacji zdefiniowanej w elemecie shell.js
. Knockout wyszukuje atrybuty powiązania danych i wiąże je shell
z modelem widoku, aby wyświetlić trasy nawigacji i pokazać pasek postępu (przy użyciu narzędzia Twitter Bootstrap), jeśli router
moduł znajduje się w środku nawigowania z jednego widoku do innego (zobacz router.isNavigating
).
<nav class="navbar navbar-fixed-top">
<div class="navbar-inner">
<a class="brand" href="/">
<span class="title">Hot Towel SPA</span>
</a>
<div class="btn-group" data-bind="foreach: router.visibleRoutes">
<a data-bind="css: { active: isActive }, attr: { href: hash }, text: name"
class="btn btn-info" href="#"></a>
</div>
<div class="loader pull-right" data-bind="css: { active: router.isNavigating }">
<div class="progress progress-striped active page-progress-bar">
<div class="bar" style="width: 100px;"></div>
</div>
</div>
</div>
</nav>
home.html i details.html
Te widoki zawierają kod HTML dla widoków niestandardowych. home
Po kliknięciu home
linku nav
w menu widoku widok widok zostanie umieszczony w obszarze shell
zawartości widoku. Te widoki można rozszerzyć lub zastąpić własnymi widokami niestandardowymi.
footer.html
Zawiera footer.html
kod HTML wyświetlany w stopce w dolnej części shell
widoku.
ViewModels
Modele widoku znajdują się w folderze App/viewmodels
.
shell.js
Model shell
widoku zawiera właściwości i funkcje powiązane z shell
widokiem. Często w tym miejscu znajdują się powiązania nawigacji menu (zobacz logikę router.mapNav
).
define(['durandal/system', 'durandal/plugins/router', 'services/logger'],
function (system, router, logger) {
var shell = {
activate: activate,
router: router
};
return shell;
function activate() {
return boot();
}
function boot() {
router.mapNav('home');
router.mapNav('details');
log('Hot Towel SPA Loaded!', null, true);
return router.activate('home');
}
function log(msg, data, showToast) {
logger.log(msg, data, system.getModuleId(shell), showToast);
}
});
home.js i details.js
Te modele widoków zawierają właściwości i funkcje powiązane z home
widokiem. Zawiera również logikę prezentacji dla widoku i jest klejem między danymi a widokiem.
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
title: 'Home View'
};
return vm;
function activate() {
logger.log('Home View Activated', null, 'home', true);
return true;
}
});
Usługi
Usługi znajdują się w folderze App/services. W idealnym przypadku można umieścić przyszłe usługi, takie jak moduł usługi danych, odpowiedzialny za pobieranie i delegowanie danych zdalnych.
logger.js
Hot Towel udostępnia logger
moduł w folderze usług. Moduł logger
jest idealny do rejestrowania komunikatów w konsoli programu i użytkownika w wyskakujących wyskakujących okienkach.