AngularJS详解及示例代码,新手如何快速上手?
- 主机动态
- 2025-10-28
- 4908
AngularJS是由Google开发的一款前端JavaScript框架,自2010年发布以来,凭借其双向数据绑定、依赖载入和模块化设计等特性,成为构建单页应用(SPA)的重要工具,尽管如今React、Vue等框架更为流行,但AngularJS的核心思想仍对前端开发产生深远影响,本文将详解AngularJS的核心概念、主要特性、工作原理,并通过示例代码展示其实际应用。
AngularJS的核心概念
AngularJS的核心在于通过扩展HTML的能力,实现动态数据绑定和组件化开发,其关键概念包括:
模块(Module)
模块是AngularJS应用的基本构建块,用于组织控制器、服务、指令等代码,通过angular.module()方法可以定义或获取模块:
var myApp = angular.module('myApp', []);
控制器(Controller)
控制器用于处理业务逻辑,通过$scope对象与视图进行数据交互:
myApp.controller('MainController', function($scope) { $scope.message = 'Hello, AngularJS!'; });
作用域(Scope)
作用域是连接控制器和视图的桥梁,它是一个包含模型数据的对象,AngularJS支持嵌套作用域,形成层级结构。
指令(Directive)
指令是AngularJS的精髓,用于扩展HTML标签的功能,内置指令如ng-model(数据绑定)、ng-repeat(循环渲染)等,也可以自定义指令:

主要特性详解
双向数据绑定
AngularJS通过ng-model实现视图和模型的双向同步,当视图中的数据发生变化时,模型数据会自动更新,反之亦然。
示例代码:
<div ng-app="myApp" ng-controller="MainController"> <input type="text" ng-model="name"> <p>{{name}}</p> </div>
在上述代码中,输入框的内容会实时显示在<p>标签中。
依赖载入(DI)
依赖载入是AngularJS的核心设计模式,它通过$injector服务自动管理组件之间的依赖关系,开发者无需手动创建依赖对象。
示例代码:

$http服务通过依赖载入自动传入控制器。
模块化与路由
通过ngRoute模块,可以实现单页应用的页面导航:
示例代码:
angular.module('myApp', ['ngRoute']) .config(function($routeProvider) { $routeProvider .when('/home', { templateUrl: 'home.html', controller: 'HomeController' }) .otherwise({redirectTo: '/home'}); });
表单验证
AngularJS提供了内置的表单验证功能,通过$valid、$invalid等状态类可以轻松实现前端校验。

示例代码:
<form name="myForm" ng-submit="submitForm()"> <input type="email" name="email" ng-model="user.email" required> <span ng-show="myForm.email.$invalid">请输入有效邮箱</span> <button type="submit" ng-disabled="myForm.$invalid">提交</button> </form>
AngularJS的工作原理
AngularJS应用启动时,会经历以下步骤:
- 加载与编译:浏览器解析HTML文件,遇到ng-app指令时,自动初始化AngularJS应用。
- 依赖载入:通过$injector服务解析并载入依赖对象。
- 数据绑定:通过$watch和$digest循环监听数据变化,更新视图。
- 生命周期管理:控制器、指令等组件遵循特定的生命周期钩子(如$onInit、$onDestroy)。
完整示例:待办事项应用
以下是一个简单的待办事项应用,综合运用了AngularJS的核心功能:
HTML代码:
<div ng-app="todoApp" ng-controller="TodoController"> <h2>待办事项</h2> <form ng-submit="addTodo()"> <input type="text" ng-model="newTodo" placeholder="添加新任务" required> <button type="submit">添加</button> </form> <ul> <li ng-repeat="todo in todos"> {{todo.text}} <button ng-click="removeTodo($index)">删除</button> </li> </ul> <p>剩余任务:{{remaining()}} / {{todos.length}}</p> </div>
JavaScript代码:
angular.module('todoApp', []) .controller('TodoController', function($scope) { $scope.todos = [ {text: '学习AngularJS'}, {text: '构建项目'} ]; $scope.newTodo = ''; $scope.addTodo = function() { if ($scope.newTodo) { $scope.todos.push({text: $scope.newTodo}); $scope.newTodo = ''; } }; $scope.removeTodo = function(index) { $scope.todos.splice(index, 1); }; $scope.remaining = function() { return $scope.todos.filter(function(todo) { return !todo.done; }).length; }; });
AngularJS的优缺点
优点:
- 开发效率高,双向数据绑定减少手动DOM操作。
- 依赖载入系统便于单元测试。
- 丰富的内置指令和社区生态。
缺点:
- 性能问题:对于大型应用,$digest循环可能导致性能瓶颈。
- 学习曲线:需要理解作用域、依赖载入等概念。
- 已停止维护:AngularJS 1.x版本已不再更新,新项目推荐使用Angular 2+。
AngularJS作为现代前端框架的先驱,其设计理念和架构模式对行业产生了重要影响,尽管在新项目中逐渐被取代,但理解AngularJS的原理对于掌握前端开发仍具有重要意义,通过模块化、依赖载入和双向数据绑定等特性,开发者可以快速构建功能丰富的单页应用,对于初学者而言,AngularJS是学习前端框架思想的优秀起点。