Heim > Artikel > Web-Frontend > Programmierrichtlinien zum Erstellen von Single-Page-Anwendungen mit AngularJS_AngularJS
Übersicht
Single-Page-Apps werden heutzutage immer beliebter. Jede Website, die das Verhalten einer Single-Page-Anwendung emuliert, kann das Gefühl einer Mobil-/Tablet-Anwendung vermitteln. Angular kann uns dabei helfen, solche Anwendungen einfach zu erstellen
Einfache Anwendung
Wir werden eine einfache App erstellen, die die Seiten „Home“, „Über uns“ und „Kontakt“ umfasst. Obwohl Angular für die Erstellung komplexerer Anwendungen konzipiert ist, demonstriert dieses Tutorial viele der Konzepte, die wir in größeren Projekten benötigen.
Ziel
Obwohl die oben genannten Funktionen mit Javascript und Ajax erreicht werden können, kann Angular in unserer Anwendung die Handhabung für uns erleichtern.
Dokumentstruktur
HTML-Seite
Dieser Teil ist relativ einfach. Wir verwenden Bootstrap und Font Awesome. Öffnen Sie Ihre index.html-Datei und dann verwenden wir die Navigationsleiste, um ein einfaches Layout hinzuzufügen.
<!-- index.html --> <!DOCTYPE html> <html> <head> <!-- SCROLLS --> <!-- load bootstrap and fontawesome via CDN --> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" /> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" /> <!-- SPELLS --> <!-- load angular via CDN --> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> <script src="script.js"></script> </head> <body> <!-- HEADER AND NAVBAR --> <header> <nav class="navbar navbar-default"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="/">Angular Routing Example</a> </div> <ul class="nav navbar-nav navbar-right"> <li><a href="#"><i class="fa fa-home"></i> Home</a></li> <li><a href="#about"><i class="fa fa-shield"></i> About</a></li> <li><a href="#contact"><i class="fa fa-comment"></i> Contact</a></li> </ul> </div> </nav> </header> <!-- MAIN CONTENT AND INJECTED VIEWS --> <div id="main"> <!-- angular templating --> <!-- this is where content will be injected --> </div> <!-- FOOTER --> <footer class="text-center"> View the tutorial on <a href="http://scotch.io/tutorials/angular-routing-and-templating-tutorial">Scotch.io</a> </footer> </body> </html>In Seiten-Hyperlinks verwenden wir „#“. Wir möchten nicht, dass der Browser denkt, dass wir tatsächlich auf about.html und contact.html verlinken.
Winkelanwendung
Modelle und Controller
An diesem Punkt sind wir bereit, unsere Anwendung einzurichten. Lassen Sie uns zunächst das Winkelmodell und den Controller erstellen. Weitere Informationen zu Modellen und Controllern finden Sie in der Dokumentation.
Zuerst müssen wir unser Modell und unseren Controller in Javascript erstellen, wir fügen diesen Vorgang in script.js ein:
// script.js // create the module and name it scotchApp var scotchApp = angular.module('scotchApp', []); // create the controller and inject Angular's $scope scotchApp.controller('mainController', function($scope) { // create a message to display in our view $scope.message = 'Everyone come and see how good I look!'; });Als nächstes fügen wir Modelle und Controller zu unserer HTML-Seite hinzu, damit Angular weiß, wie wir unsere Anwendung booten. Um zu testen, ob die Funktionalität funktioniert, zeigen wir auch den Wert einer von uns erstellten Variablen namens $scope.message an.
<!-- index.html --> <!DOCTYPE html> <!-- define angular app --> <html ng-app="scotchApp"> <head> <!-- SCROLLS --> <!-- load bootstrap and fontawesome via CDN --> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" /> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" /> <!-- SPELLS --> <!-- load angular via CDN --> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular-route.js"></script> <script src="script.js"></script> </head> <!-- define angular controller --> <body ng-controller="mainController"> ... <!-- MAIN CONTENT AND INJECTED VIEWS --> <div id="main"> {{ message }} <!-- angular templating --> <!-- this is where content will be injected --> </div>In der Haupt-Div-Ebene können wir jetzt die von uns erstellte Nachricht sehen. Nachdem unsere Modelle und Controller nun eingerichtet sind und Angular ordnungsgemäß ausgeführt wird, werden wir damit beginnen, diese Ebene zum Anzeigen verschiedener Seiten zu verwenden.
ng-view ist eine Winkelanweisung, die verwendet wird, um die Vorlage der aktuellen Route (/home, /about oder /contact) einzuschließen. Sie ruft die Datei basierend auf der spezifischen Route ab und fügt sie in das Hauptlayout (Index) ein .html ).
Wir werden der Site in div#main ng-view-Code hinzufügen, um Angular mitzuteilen, wo die von uns gerenderte Seite platziert werden soll.
<!-- index.html --> ... <!-- MAIN CONTENT AND INJECTED VIEWS --> <div id="main"> <!-- angular templating --> <!-- this is where content will be injected --> <div ng-view></div> </div> ...
Da wir eine Single-Page-Anwendung erstellen und nicht möchten, dass die Seite aktualisiert wird, verwenden wir Angular-Routing-Funktionen.
Schauen wir uns unsere Angular-Dateien an und fügen sie unserer App hinzu. Wir werden $routeProvider in Angular verwenden, um unser Routing zu verwalten. Auf diese Weise verarbeitet Angular alle magischen Anforderungen, indem es eine neue Datei abruft und in unser Layout einfügt.
AngularJS 1.2 und RoutingNach Version 1.1.6 ist das ngRoute-Modell nicht mehr in Angular enthalten. Sie müssen das Modell verwenden, indem Sie es am Anfang des Dokuments deklarieren. Dieses Tutorial wurde für AngularJS1.2 aktualisiert:
// script.js // create the module and name it scotchApp // also include ngRoute for all our routing needs var scotchApp = angular.module('scotchApp', ['ngRoute']); // configure our routes scotchApp.config(function($routeProvider) { $routeProvider // route for the home page .when('/', { templateUrl : 'pages/home.html', controller : 'mainController' }) // route for the about page .when('/about', { templateUrl : 'pages/about.html', controller : 'aboutController' }) // route for the contact page .when('/contact', { templateUrl : 'pages/contact.html', controller : 'contactController' }); }); // create the controller and inject Angular's $scope scotchApp.controller('mainController', function($scope) { // create a message to display in our view $scope.message = 'Everyone come and see how good I look!'; }); scotchApp.controller('aboutController', function($scope) { $scope.message = 'Look! I am an about page.'; }); scotchApp.controller('contactController', function($scope) { $scope.message = 'Contact us! JK. This is just a demo.'; });Jetzt haben wir unsere Route über $routeProvider definiert. Durch die Konfiguration werden Sie feststellen, dass Sie bestimmte Routen, Vorlagendateien und sogar Controller verwenden können. Bei diesem Ansatz verwendet jeder Teil unserer Anwendung einen Angular-Controller und eine eigene Ansicht.
Um dieses Tutorial abzuschließen, müssen wir nur die Seiten definieren, die eingefügt werden. Wir werden auch dafür sorgen, dass auf jeder von ihnen Meldungen von dem ihnen zugeordneten Controller angezeigt werden.
Lokal ausführen: Angular Routing funktioniert nur in der Umgebung, die Sie dafür festgelegt haben. Sie müssen sicherstellen, dass Sie http://localhost oder eine andere Art von Umgebung verwenden. Andernfalls wird Angular sagen, dass domänenübergreifende Anforderungen HTTP unterstützen.
Animation für Angular-Anwendungen
Sobald Sie das gesamte Routing abgeschlossen haben, können Sie mit Ihrer Site spielen und Animationen hinzufügen. Dazu müssen Sie das von Angular bereitgestellte ngAnimate-Modul verwenden Animation zum animierten Wechseln der Ansichten
SEO in der Single-Page-App
Idealerweise könnte diese Technik in einer Anwendung verwendet werden, bei der der Benutzer angemeldet ist. Sie möchten sicherlich nicht, dass Seiten, die für einen bestimmten Benutzer privat sind, von Suchmaschinen indiziert werden. Beispielsweise möchten Sie nicht, dass Ihr Leserkonto, Ihre Facebook-Anmeldeseite oder Ihre Blog-CMS-Seite indiziert werden.
Wenn Sie SEO für Ihre App durchführen möchten, wie können Sie dann SEO für Apps/Websites effektiv gestalten, die JS zum Erstellen von Seiten verwenden? Suchmaschinen haben es schwer, diese Apps zu verarbeiten, da der Inhalt dynamisch vom Browser erstellt wird und für Crawler unsichtbar.
Machen Sie Ihre App SEO-freundlich
Die Techniken, die js Single-Page-Anwendungen SEO-freundlich machen, erfordern eine regelmäßige Wartung. Gemäß den offiziellen Google-Empfehlungen müssen Sie wie folgt HTML-Snapshots erstellen:
Weitere Informationen zu diesem Prozess finden Sie im AJAX Crawler von Google und in der Anleitung zum Erstellen von HTML-Snapshots.