AngularJS 教程简介

AngularJS 是一个由 Google 提供的开源前端框架,旨在简化单页面应用(SPA)开发。它使用 JavaScript 来构建动态网页,并提供了大量功能,例如数据绑定、依赖注入、模板语法等,使开发者可以更容易地创建复杂的 Web 应用。

AngularJSAngular 的早期版本,现已被 Angular 2+ 替代。尽管如此,很多项目和教程仍然使用 AngularJS,因此了解它仍然是有用的。

AngularJS 关键特性

  1. 数据绑定 (Data Binding): AngularJS 提供了双向数据绑定,自动同步模型和视图的变化。也就是说,当模型(JavaScript 变量)发生变化时,视图(HTML)会自动更新,反之亦然。
  2. 指令 (Directives): AngularJS 使用指令来扩展 HTML 的功能,例如 ng-model, ng-repeat 等。
  3. 依赖注入 (Dependency Injection): AngularJS 提供了内置的依赖注入系统,可以自动处理服务和控制器的依赖关系,使代码更具可维护性。
  4. 模块化 (Modularization): AngularJS 提供了模块化机制,可以将应用程序分解为多个模块,每个模块处理应用程序的一部分。
  5. 单页面应用 (SPA): AngularJS 支持单页面应用开发,可以在不重新加载整个页面的情况下更新应用程序的内容,提高用户体验。

AngularJS 示例

1. 安装和引入 AngularJS

在开发 AngularJS 应用之前,首先需要将 AngularJS 引入你的项目中。你可以通过以下方式在 HTML 文件中引入 AngularJS:

<!-- 引入 AngularJS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>

2. 创建 AngularJS 模块和控制器

在 AngularJS 中,应用由模块(module)构成,每个模块包含一个或多个控制器(controller)。每个控制器管理一个应用范围内的数据和行为。

HTML 文件(index.html)

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AngularJS 示例</title>
</head>
<body>

    <div ng-controller="myController">
        <h1>{{ message }}</h1>
        <button ng-click="changeMessage()">点击改变消息</button>
    </div>

    <!-- 引入 AngularJS -->
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>

    <script>
        // 创建 AngularJS 应用模块
        var app = angular.module('myApp', []);

        // 创建控制器
        app.controller('myController', function($scope) {
            // 定义初始消息
            $scope.message = "Hello, AngularJS!";

            // 改变消息的函数
            $scope.changeMessage = function() {
                $scope.message = "消息已改变!";
            };
        });
    </script>

</body>
</html>

解释:

  1. ng-app:这是 AngularJS 的根元素,表示整个应用的作用范围。
  2. ng-controller:这个指令用于指定控制器,告诉 AngularJS 哪个控制器管理当前视图。
  3. {{ message }}:双花括号用于绑定模型数据。AngularJS 会将 message 模型的数据插入到视图中。
  4. ng-click:这是 AngularJS 提供的指令,用来绑定点击事件。当用户点击按钮时,调用 changeMessage 函数。

3. 数据绑定

AngularJS 允许我们轻松地绑定模型(数据)到视图。在上面的例子中,{{ message }} 实现了数据绑定。当你点击按钮时,$scope.message 的值发生变化,AngularJS 自动更新视图。

4. 指令 (Directives)

AngularJS 使用指令来扩展 HTML 的功能。以下是一些常用指令:

  • ng-repeat:用于遍历数组或对象。
  • ng-model:用于双向数据绑定。
  • ng-ifng-show:条件渲染元素。
  • ng-click:绑定点击事件。

使用 ng-repeat 示例:

<div ng-controller="myController">
    <ul>
        <li ng-repeat="item in items">{{ item }}</li>
    </ul>
</div>

<script>
    var app = angular.module('myApp', []);

    app.controller('myController', function($scope) {
        // 定义一个数组
        $scope.items = ['Apple', 'Banana', 'Orange', 'Grapes'];
    });
</script>

5. 依赖注入 (Dependency Injection)

AngularJS 提供了内置的依赖注入系统,它允许你将服务和控制器之间的依赖关系传递给函数,而无需手动管理这些依赖。

app.controller('myController', function($scope, $http) {
    // $http 是 AngularJS 提供的一个服务,用于发起 HTTP 请求
    $http.get('https://jsonplaceholder.typicode.com/posts')
        .then(function(response) {
            $scope.posts = response.data;
        });
});

在这个例子中,AngularJS 自动将 $scope$http 服务注入到控制器中。

6. 路由 (ngRoute)

AngularJS 还提供了路由功能,允许你根据 URL 切换不同的视图。你可以使用 ngRoute 模块来处理路由。

<!-- 引入 ngRoute -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular-route.min.js"></script>

<!-- 配置路由 -->
<script>
    var app = angular.module('myApp', ['ngRoute']);

    app.config(function($routeProvider) {
        $routeProvider
            .when('/home', {
                templateUrl: 'home.html',
                controller: 'HomeController'
            })
            .when('/about', {
                templateUrl: 'about.html',
                controller: 'AboutController'
            })
            .otherwise({
                redirectTo: '/home'
            });
    });
</script>

总结

  • AngularJS 是一个非常强大的前端框架,可以帮助你创建高效的单页面应用。
  • 通过 数据绑定指令依赖注入路由 等特性,AngularJS 能显著提高前端开发的效率。
  • 尽管 AngularJS 在 2016 年推出了 Angular 2+(全新重构),但是 AngularJS 仍然被许多现有的项目使用。了解 AngularJS 对学习 Angular 的基础也非常有帮助。

如果你正在学习现代的 Angular(即 Angular 2+ 版本),它的核心概念和工作原理与 AngularJS 类似,但 Angular 2+ 在架构上进行了大量改进,支持更高效的组件化开发。