MEAN.JS - การสร้างหน้าเดียวด้วย Angular

ใน MEAN stack Angular เรียกว่าเฟรมเวิร์ก JavaScript ที่สองซึ่งอนุญาตให้สร้างแอ็พพลิเคชันหน้าเดียวด้วยวิธี Model View Controller (MVC)

AngularJS เป็น Front-end Framework ใช้สิ่งต่อไปนี้ -

  • ใช้ Bower เพื่อติดตั้งไฟล์และไลบรารี

  • ใช้ตัวควบคุมและบริการสำหรับโครงสร้างแอปพลิเคชันเชิงมุม

  • สร้างหน้า HTML ที่แตกต่างกัน

  • ใช้โมดูลngRouteเพื่อจัดการการกำหนดเส้นทางและบริการสำหรับแอปพลิเคชัน AngularJS

  • ใช้ Bootstrap เพื่อทำให้แอปพลิเคชันน่าสนใจ

การตั้งค่าแอปพลิเคชันเชิงมุมของเรา

ให้เราสร้างแอปพลิเคชันง่ายๆที่มีแบ็กเอนด์ Node.js และส่วนหน้า AngularJS สำหรับแอปพลิเคชัน Angular ของเราเราต้องการ -

  • สองหน้าที่แตกต่างกัน (บ้านนักเรียน)

  • ตัวควบคุมเชิงมุมที่แตกต่างกันสำหรับแต่ละตัว

  • ไม่มีการรีเฟรชหน้าเมื่อสลับหน้า

Bower และการดึงส่วนประกอบ

เราต้องการไฟล์บางอย่างสำหรับแอปพลิเคชันของเราเช่น bootstrap และ angular เราจะบอกให้ bower ดึงส่วนประกอบเหล่านั้นมาให้เรา

ขั้นแรกให้ติดตั้ง bower บนเครื่องของคุณโดยเรียกใช้คำสั่งด้านล่างบนเทอร์มินัลคำสั่งของคุณ -

npm install -g bower

สิ่งนี้จะติดตั้ง bower และทำให้สามารถเข้าถึงได้ทั่วโลกในระบบของคุณ ตอนนี้วางไฟล์. bowerrc และ bower.json ไว้ใต้โฟลเดอร์รูทของคุณ ในกรณีของเราก็คือmean-demo. เนื้อหาของทั้งสองไฟล์มีดังต่อไปนี้ -

.bowerrc - สิ่งนี้จะบอก Bower ว่าจะวางไฟล์ของเราไว้ที่ไหน -

{
   "directory": "public/libs"
}

bower.json - คล้ายกับ package.json และจะบอก Bower ว่าต้องการแพ็คเกจใด

{
   "name": "angular",
   "version": "1.0.0",
   "dependencies": {
      "bootstrap": "latest",
      "angular": "latest",
      "angular-route": "latest"
   }
}

จากนั้นติดตั้งส่วนประกอบ Bower โดยใช้คำสั่งด้านล่าง ท่านสามารถเข้าดูดึงซุ้มในไฟล์ทั้งหมดภายใต้รัฐ / libs

$ bower install

โครงสร้างไดเร็กทอรีของเราจะเป็นดังนี้ -

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

ตัวควบคุมเชิงมุม

คอนโทรลเลอร์ของเรา (public / js / controllers / MainCtrl.js) มีดังต่อไปนี้ -

angular.module('MainCtrl', []).controller('MainController', function($scope) {
   $scope.tagline = 'Welcome to tutorials point angular app!';
});

Controller public / js / controllers / StudentCtrl.js มีดังนี้ -

angular.module('StudentCtrl', []).controller('StudentController', function($scope) {
   $scope.tagline = 'Welcome to Student section!';
});

เส้นทางเชิงมุม

ไฟล์เส้นทางของเรา (public / js / appRoutes.js) มีดังนี้ -

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);
}]);

ตอนนี้เรามีคอนโทรลเลอร์และเส้นทางแล้วเราจะรวมมันทั้งหมดและฉีดโมดูลเหล่านี้ลงในpublic / js / app.jsหลักของเราดังนี้

angular.module('sampleApp', ['ngRoute', 'appRoutes', 'MainCtrl', 'StudentCtrl']);

ดูข้อมูล

Angular ใช้ไฟล์เทมเพลตซึ่งสามารถแทรกลงใน <div ng-view> </div> ในไฟล์ index.html คำสั่ง ng-view จะสร้างตัวยึดตำแหน่งซึ่งสามารถวางมุมมองที่เกี่ยวข้อง (มุมมอง HTML หรือ ng-template) ตามการกำหนดค่า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับมุมมองเชิงมุมโปรดไปที่ลิงค์นี้

เมื่อคุณพร้อมสำหรับการกำหนดเส้นทางแล้วให้สร้างไฟล์เทมเพลตขนาดเล็กและฉีดลงในไฟล์index.html index.htmlไฟล์ต่อไปนี้จะมีโค้ด -

<!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>

กำลังเรียกใช้แอปพลิเคชัน

การดำเนินการ

คุณสามารถดาวน์โหลดซอร์สโค้ดสำหรับแอปพลิเคชันนี้ได้ในลิงค์นี้ ดาวน์โหลดไฟล์ zip แยกมันออกจากระบบของคุณ เปิดเทอร์มินัลและเรียกใช้คำสั่งด้านล่างเพื่อติดตั้งการพึ่งพาโมดูล npm

$ cd mean-demo
$ npm install

ถัดไปเรียกใช้คำสั่งด้านล่าง -

$ node start

คุณจะได้รับการยืนยันตามที่แสดงในภาพด้านล่าง -

ตอนนี้ไปที่เบราว์เซอร์และพิมพ์ http://localhost:3000. คุณจะได้รับหน้าดังที่แสดงในภาพด้านล่าง -

คลิกที่ลิงค์นักเรียนคุณจะเห็นหน้าจอด้านล่าง -

ส่วนหน้าเชิงมุมของเราจะใช้ไฟล์เทมเพลตและฉีดเข้าไปใน <div ng-view> </div> ในไฟล์index.htmlของเรา ซึ่งจะทำได้โดยไม่ต้องรีเฟรชหน้า