MEAN.JS - Construcción de una sola página con Angular
En la pila MEAN, Angular se conoce como el segundo marco de JavaScript, que permite crear aplicaciones de una sola página en una forma limpia de Model View Controller (MVC).
AngularJS como marco front-end utiliza las siguientes cosas:
Utiliza Bower para instalar archivos y bibliotecas
Utiliza controladores y servicios para la estructura de la aplicación angular
Crea diferentes páginas HTML
Utiliza el módulo ngRoute para manejar el enrutamiento y los servicios para la aplicación AngularJS
Utiliza Bootstrap para hacer atractiva una aplicación
Configuración de nuestra aplicación angular
Construyamos una aplicación simple que tenga un backend Node.js y un frontend AngularJS. Para nuestra aplicación Angular, queremos:
Dos páginas diferentes (Inicio, Estudiante)
Un controlador angular diferente para cada
No se actualiza la página al cambiar de página
Bower y extracción de componentes
Necesitaremos ciertos archivos para nuestra aplicación como bootstrap y angular. Le diremos a Bower que nos traiga esos componentes.
Primero, instale bower en su máquina ejecutando el siguiente comando en su terminal de comandos:
npm install -g bower
Esto instalará bower y lo hará accesible globalmente en su sistema. Ahora coloque los archivos .bowerrc y bower.json en su carpeta raíz. En nuestro caso esmean-demo. El contenido de ambos archivos es el siguiente:
.bowerrc - Esto le dirá a Bower dónde colocar nuestros archivos:
{
"directory": "public/libs"
}
bower.json - Es similar a package.json y le indicará a Bower qué paquetes son necesarios.
{
"name": "angular",
"version": "1.0.0",
"dependencies": {
"bootstrap": "latest",
"angular": "latest",
"angular-route": "latest"
}
}
A continuación, instale los componentes de Bower utilizando el siguiente comando. Puede ver que bower extrae todos los archivos en public / libs .
$ bower install
Nuestra estructura de directorio sería la siguiente:
mean-demo
-app
-config
-node_modules
-public
-js
--controllers
-MainCtrl.js
-StudentCtrl.js
--app.js
--appRoutes.js
-libs
-views
--home.html
--student.html
-index.html
-bower.json
-package.json
-server.js
Controladores angulares
Nuestro controlador (public / js / controllers / MainCtrl.js) es el siguiente:
angular.module('MainCtrl', []).controller('MainController', function($scope) {
$scope.tagline = 'Welcome to tutorials point angular app!';
});
Controller public / js / controllers / StudentCtrl.js es el siguiente:
angular.module('StudentCtrl', []).controller('StudentController', function($scope) {
$scope.tagline = 'Welcome to Student section!';
});
Rutas angulares
Nuestro archivo de rutas (public / js / appRoutes.js) es el siguiente:
angular.module('appRoutes', []).config(['$routeProvider',
'$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
// home page
.when('/', {
templateUrl: 'views/home.html',
controller: 'MainController'
})
// students page that will use the StudentController
.when('/students', {
templateUrl: 'views/student.html',
controller: 'StudentController'
});
$locationProvider.html5Mode(true);
}]);
Ahora que tenemos nuestros controladores y rutas, los combinaremos todos e inyectaremos estos módulos en nuestro público principal / js / app.js de la siguiente manera:
angular.module('sampleApp', ['ngRoute', 'appRoutes', 'MainCtrl', 'StudentCtrl']);
Ver archivo
Angular usa el archivo de plantilla, que se puede inyectar en <div ng-view> </div> en el archivo index.html. La directiva ng-view crea un marcador de posición, donde se puede colocar una vista correspondiente (vista HTML o ng-template) según la configuración. Para obtener más información sobre vistas angulares, visite este enlace .
Cuando esté listo con el enrutamiento, cree archivos de plantilla más pequeños e inyéctelos en el archivo index.html . El archivo index.html tendrá el siguiente fragmento de código:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
<title>Tutorialspoint Node and Angular</title>
<!-- CSS -->
<link rel="stylesheet" href="libs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css"> <!-- custom styles -->
<!-- JS -->
<script src="libs/angular/angular.min.js"></script>
<script src="libs/angular-route/angular-route.min.js"></script>
<!-- ANGULAR CUSTOM -->
<script src="js/controllers/MainCtrl.js"></script>
<script src="js/controllers/StudentCtrl.js"></script>
<script src="js/appRoutes.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="sampleApp" ng-controller="MainController">
<div class="container">
<!-- HEADER -->
<nav class="navbar navbar-inverse">
<div class="navbar-header">
<a class="navbar-brand" href="/">Tutorial</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/students">Students</a></li>
</ul>
</nav>
<!-- ANGULAR DYNAMIC CONTENT -->
<div ng-view></div>
</div>
</body>
</html>
Aplicación en ejecución
Ejecución
Puede descargar el código fuente de esta aplicación en este enlace . Descargue el archivo zip; extraerlo en su sistema. Abra la terminal y ejecute el siguiente comando para instalar las dependencias del módulo npm.
$ cd mean-demo
$ npm install
A continuación, ejecute el siguiente comando:
$ node start
Obtendrá una confirmación como se muestra en la imagen a continuación:
Ahora, vaya al navegador y escriba http://localhost:3000. Obtendrá la página como se muestra en la imagen a continuación:
Haga clic en el enlace Estudiantes , verá la siguiente pantalla:
Nuestra interfaz angular usará el archivo de plantilla y lo inyectará en <div ng-view> </div> en nuestro archivo index.html . Lo hará sin actualizar la página.