如何在AngularJS框架中执行一个路由

如何在AngularJS框架中执行一个路由

在这篇文章中,我们将学习如何在AngularJS中执行路由,同时通过代码实例理解其实现。

AngularJS中的路由有助于开发单页应用这是一个只加载单个页面的Web应用,每次点击鼠标都会更新该页面的一部分,而不是整个页面。这样做的结果是,页面加载速度更快,确保了高性能和高效率的应用。随着用户与网络应用的互动,页面被动态地更新。用户可以浏览不同的页面,而无需重新加载页面。由于路由是在同一个HTML页面上完成的,用户会觉得他们没有离开过这个页面。在AngularJS中,路由允许在ngRoute模块和$routeProvider的帮助下,为网络应用中的不同内容创建不同的URLs

ng-route模块用于路由到单页应用中的不同页面,而不需要重新加载页面。当URL被指定时,路由引擎会捕获URL并根据定义的路由规则渲染视图。

routeProvider可以用来配置路由,并定义当用户点击一个特定的链接时将会显示什么页面。它接受when()方法,用于向route服务指定新的路由定义,或otherwise()方法,用于设置路由定义,以便在没有路由定义匹配时改变路由。

步骤:

  • 添加对angular-route.js的引用。这一步是必须的,因为这个JavaScript文件有路由所需的所有主要模块。

语法:

<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-route.js”></script>
  • 创建一个应用模块并指定ngRoute为依赖模块,这样就可以在应用中使用路由功能。

语法:

var app = angular.module("myApp",['ngRoute']);
  • 使用config()方法配置routeProvider来提供应用程序中的路由。使用routeProvider.when(path, route)方法来配置路由规则。第一个参数是请求的URL,第二个参数是包含控制器和模板等属性的对象。使用otherwise()方法,如果用户请求的URL与配置的规则不同,则重定向到基本URL。

语法:

app.config(function (routeProvider) {routeProvider
    .when("/", {
      templateUrl: "home.html",
    })
    .when("/tutorials", {
      templateUrl: "tutorials.html",
      controller: "tutorialsController",
    })
    .when("/courses", {
      templateUrl: "courses.html",
      controller: "coursesController",
    })
    .when("/projectideas", {
      templateUrl: "projectideas.html",
      controller: "projectideasController",
    })
    .otherwise({ redirectTo: "/" });
});
  • 在HTML页面中定义指向路线的链接。

语法:

<a href="#/tutorials">Tutorials</a>
  • 在HTML页面的一个div标签内包含ng-view指令,以显示所选路线的内容。

例子 ,在这个例子中,有4个页面需要路由,即:

  • Home page
  • Tutorials page
  • Courses page
  • 项目创意页面

当用户使用导航栏浏览这些页面时,我们将确保页面不会重新加载。相反,所选页面的内容会显示在同一页面上。

example1.html:

这是应用程序的主页面。在脚本标签中,已经添加了对angular-route.min.js的引用。这个文件有HTML元素,如标题 “GeeksforGeeks “和导航条。在导航条中,已经指定了路线的链接。它还有一个div标签,其中指定了ng-view指令,以便当用户选择一个页面时,可以显示该特定页面的内容。在script标签中,还添加了对javascript.js文件的引用。

<!DOCTYPE html>
<html ng-app="myApp">
 
<head>
    <title>Routing in AngularJS</title>
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js">
    </script>
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-route.min.js">
    </script>
    <style>
        a {
            font-size: 25px;
            color: black;
            text-decoration: none;
            padding-right: 20px;
            padding-left: 20px;
        }
         
        nav {
            background-color: #d0dbd4;
        }
         
        h1 {
            color: #39ad64;
        }
    </style>
</head>
 
<body>
    <nav>
        <a id="active1" href="#/">Home</a>
        <a id="active2" href="#/tutorials">Tutorials</a>
        <a id="active3" href="#/courses">Courses</a>
        <a id="active4" href="#/projectideas">Project Ideas</a>
    </nav>
    <h1>GeeksforGeeks</h1>
    <div ng-view></div>
    <script type="text/javascript" src="javascript.js"></script>
</body>
</html>

javascript.js:

这个javascript文件包含名为 “myApp “的模块,该模块是在ngRoute模块被指定为依赖模块的地方创建的。使用config()方法,$routeProvider模块已被配置,应用程序中的路由已被提供。对于每个路由,它的URL和控制器被指定。

<script>
  var app = angular.module("myApp", ["ngRoute"]);
  app.config(function (routeProvider) {
    routeProvider
      .when("/", {
        templateUrl: "home.html",
      })
      .when("/tutorials", {
        templateUrl: "tutorials.html",
        controller: "tutorialsController",
      })
      .when("/courses", {
        templateUrl: "courses.html",
        controller: "coursesController",
      })
      .when("/projectideas", {
        templateUrl: "projectideas.html",
        controller: "projectideasController",
      })
      .otherwise({ redirectTo: "/" });
  });
  app.controller("tutorialsController", function (scope) {
    scope.tutorials = [
      "Practice DS and Algo.",
      "Algorithms",
      "Data Structure",
      "Software Designs",
      "CS Subjects",
    ];
  });
  app.controller("coursesController", function (scope) {
    scope.courses =
    ["Live Courses",
     "Self-Paced Courses",
     "School Courses"];
  });
  app.controller("projectideasController", function (scope) {
    scope.c = [
      "Program for face detection",
      "Program for coin detection",
      "Program to blur an image",
      "Program to create a single colored blank image",
    ];
    scope.java = [
      "A Group chat Application",
      "Generating Password and OTP in Java",
      "Creative Programming in Processing",
    ];
    scope.python = [
      "Make a Notpad using Tkinter",
      "Color Game using Tkinter in Python",
      "Message Encode-Decode using Tkinter",
      "Twitter sentiment analysis using Python",
    ];
 
    scope.projectideas = [
      { course: "C++", projects:scope.c },
      { course: "Java", projects: scope.java },
      { course: "Python", projects:scope.python },
    ];
  });
</script>

home.html:该页用于显示主页上的不同选项。

<style>
#active1 {
    background-color: #39ad64;
}
</style>
<h1>Write</h1>
 
<p>Write articles and get featured</p>
 
<h1>Practice</h1>
 
<p>Learn and code with the best industry experts</p>
 
<h1>Premium</h1>
 
<p>Get access to ad-free content, doubt assistance and more</p>

tutorials.html: ng-repeat指令被用来创建一个可用的教程列表。在这里,教程的名称取自JavaScript数组 “tutorials”。这个数组已经在javascript.js文件的tutorialsController中定义。

<style type="text/css">
    #active2 {
        background-color: #39ad64;
    }
</style>
<h2>Tutorials</h2>
<ul ng-repeat="x in tutorials">
    <li>{{x}}</li>
</ul>

courses.html:这个页面与教程页面类似。这里,ng-repeat指令被用来创建一个课程列表。课程的名称来自于javascript.js文件中定义的 coursesController中名为 “courses “的JavaScript数组。

<style type="text/css">
    #active3 {
        background-color: #39ad64;
    }
</style>
<h2>Courses</h2>
<ul ng-repeat="x in courses">
    <li>{{x}}</li>
</ul>

projectideas.html:在这个文件中,我们使用了ng-repeat指令来制作项目想法的列表。项目的名称取自javascript.js文件中projectideasController定义的数组。

<style type="text/css">
    #active4 {
        background-color: #39ad64;
    }
</style>
<h2>Project Ideas</h2>
<ul ng-repeat="x in projectideas">
    <li>{{x.course}}</li>
    <ul ng-repeat="y in x.projects">
        <li>{{y}}</li>
    </ul>
</ul>

注意:要运行这些文件,请以相同的文件名保存这些文件,如前所述,并在实时服务器或本地服务器上运行主文件即example1.html。

输出:

如何在AngularJS框架中执行一个路由?

AngularJS中的路由

解释:用户可以使用导航条浏览不同的页面。正如我们在输出中看到的,页面没有重新加载,相反,所有的页面,即,主页、教程、课程和项目想法,都在同一个HTML页面上显示。导航栏和标题没有变化。不同网页的内容被显示在 <div>在example1.html文件中使用了ng-view指令的标签。这就是一个单页应用程序的工作方式。

注意:当用户加载页面时,由于$routeProvider函数中的 “否则 “选项,它会加载主页。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程