杰瑞科技汇

AngularJS菜鸟教程,如何快速入门?

AngularJS 菜鸟入门教程:从零开始构建你的第一个应用

你好,未来的 AngularJS 大神!这份教程将带你一步步了解 AngularJS 的核心概念,并亲手搭建一个简单的待办事项应用。

什么是 AngularJS?

想象一下你在盖房子:

  • 传统方式(原生 JavaScript/jQuery):你需要一块砖一块砖地砌(document.getElementById),一根钢筋一根钢筋地绑(addEventListener),你清楚地知道每一块砖的位置,但房子一复杂,你就会迷失在各种细节中,代码会变得一团糟。
  • AngularJS 方式:你先拿到一份建筑蓝图(AngularJS 的指令和数据绑定),然后告诉工人:“我要一个客厅,它的大小由 livingRoomSize 这个变量决定”,工人会自动根据蓝图把客厅盖好,如果以后你想改变客厅大小,只需要改一下 livingRoomSize 的值,工人会自动帮你把墙重新砌好。

AngularJS 是一个由 Google 维护的前端 JavaScript 框架,它的核心思想是通过 数据绑定 依赖注入 来扩展 HTML 的功能,让你可以用更声明式、更结构化的方式来构建动态的 Web 应用。

AngularJS 让你从 “操作 DOM” 的繁琐工作中解放出来,专注于 “管理数据”


为什么学习 AngularJS?(虽然它有点“老”)

你可能会问:“现在不是有 Angular、React、Vue 更新的框架吗?为什么还要学 AngularJS?”

  1. 理解历史,看懂现在:AngularJS 是现代前端框架的奠基者之一,它的很多核心思想(如数据绑定、依赖注入、指令)在 Angular 中得到了继承和发扬,学好 AngularJS,能让你更容易理解后续框架的设计哲学。
  2. 维护旧项目:在现实世界中,你可能还是会遇到一些基于 AngularJS 开发的老项目,学会它能让你有饭吃。
  3. 概念清晰:AngularJS 的概念相对纯粹,没有像现代 Angular 那样引入复杂的模块化、装饰器等概念,非常适合初学者理解前端框架的核心思想。

准备工作

在开始之前,你只需要两样东西:

  1. 一个文本编辑器:VS Code、Sublime Text、HBuilderX 等,随便哪个都行。
  2. 一个现代浏览器:Chrome、Firefox、Edge,用来查看你的网页效果。

核心概念详解(菜鸟友好版)

在写代码之前,我们先来认识一下 AngularJS 的几个“家庭成员”,它们就像一个乐队,各自有各自的乐器,但只有在一起演奏时,才能创造出美妙的音乐。

模块

  • 是什么?:模块是你的应用程序的容器,它就像一个盒子,你把所有的控制器、服务、指令等“零件”都放进去。
  • 为什么?:避免全局变量污染,让代码更有组织性。
  • 怎么用?:用 angular.module() 来创建或获取一个模块。
// 'myTodoApp' 是模块的名称
// [] 表示这个模块没有依赖其他模块
var app = angular.module('myTodoApp', []);

控制器

  • 是什么?:控制器是模块的“大脑”,它负责初始化页面的数据($scope)和处理用户交互(比如点击按钮)。
  • 为什么?:把数据和逻辑从 HTML 视图中分离出来。
  • 怎么用?:用 app.controller() 来定义一个控制器。
// 'mainController' 是控制器的名字
// $scope 是 AngularJS 的一个“神奇”对象,是连接控制器和视图的桥梁
app.controller('mainController', function($scope) {
  // 在这里定义视图(HTML)可以访问到的数据
  $scope.message = "Hello, AngularJS World!";
  // 在这里定义视图可以调用的函数
  $scope.sayHello = function() {
    $scope.message = "You clicked the button!";
  };
});

作用域

  • 是什么?:这是最关键也最容易被初学者混淆的概念,你可以把它理解为一个“数据域”“家庭共享区”
    • 每个 ng-controller 都会创建一个自己的 $scope
    • 控制器里定义的所有变量和函数,都会被“存”在这个 $scope 里。
    • HTML 视图只能访问到它所属的控制器对应的 $scope 里的数据。
  • 为什么?:它实现了数据隔离,并建立了 “MVC”(Model-View-Controller)架构中的 “V” (View) 和 “C” (Controller) 的连接。

数据绑定

这是 AngularJS 最酷的功能!它有两种形式:

  • 插值表达式

    • 作用:在 HTML 中显示 JavaScript 变量的值。
    • 示例<h1>{{ message }}</h1> 会显示控制器中 $scope.message 的值。
  • 指令 ng-model

    • 作用:将 HTML 元素的值(比如输入框)和 $scope 中的变量进行双向绑定
    • 双向意味着:你修改输入框的值,$scope 里的变量会自动更新;反之,$scope 里的变量被代码修改,输入框的值也会自动更新。
    • 示例<input type="text" ng-model="userName">$scope.userName 就会实时等于输入框里的内容。

指令

  • 是什么?:指令是 AngularJS 对 HTML 的扩展,它们都是以 ng- 开头的特殊属性。
  • 为什么?:让 HTML 自身拥有了“智能”和“行为”,而不是干巴巴的标签。
  • 常用指令
    • ng-app告诉 AngularJS:“嘿,从这里开始,你来管理我下面的所有内容!”,它是整个应用的根指令,通常放在 <html><body> 标签上。
    • ng-controller指定这个 HTML 区域由哪个控制器来管理
    • ng-model绑定数据到变量
    • ng-repeat循环渲染一个列表,就像一个“复印机”,把括号里的 HTML 模板复制多遍。
    • ng-click绑定一个点击事件,当用户点击元素时,执行控制器中定义的对应函数。

动手实践:构建你的第一个 To-Do(待办)应用

理论讲完了,是时候敲代码了!我们的目标是创建一个可以添加、显示和删除待办事项的小应用。

步骤 1:创建项目文件

创建一个新文件夹,angularjs-todo,在里面创建三个文件:

  1. index.html (我们的视图)
  2. app.js (我们的模块和控制器)
  3. style.css (简单美化一下)

步骤 2:编写 index.html

打开 index.html,输入以下代码。请仔细阅读每一行旁边的注释,它们解释了 AngularJS 指令的作用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">AngularJS Todo App</title>
    <!-- 1. 引入 AngularJS 库 -->
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
    <!-- 2. 引入我们自己的 JS 文件 -->
    <script src="app.js"></script>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <!-- 3. 告诉 AngularJS 整个页面由它管理 -->
    <div ng-app="myTodoApp">
        <div class="container">
            <h1>我的待办事项</h1>
            <!-- 4. 指定这个区域由 mainController 管理 -->
            <div ng-controller="mainController">
                <!-- 5. 输入框,用 ng-model 将输入的值绑定到 newItem 变量 -->
                <input type="text" ng-model="newItem" placeholder="输入新任务...">
                <!-- 6. 按钮,点击时调用 addItem 函数 -->
                <button ng-click="addItem()">添加</button>
                <hr>
                <!-- 7. ul 列表,用 ng-repeat 循环渲染 todos 数组中的每一项 -->
                <!-- todo 是循环中每一项的临时变量,$index 是它的索引 -->
                <ul>
                    <li ng-repeat="todo in todos">
                        {{ todo.text }}
                        <button ng-click="removeItem($index)">删除</button>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</body>
</html>

步骤 3:编写 app.js

让我们为这个应用注入灵魂,打开 app.js,输入代码:

// 1. 创建并命名我们的应用模块
var app = angular.module('myTodoApp', []);
// 2. 创建控制器 mainController
app.controller('mainController', function($scope) {
    // 初始化一个空的待办事项数组
    $scope.todos = [];
    // 初始化一个空字符串,用于绑定输入框
    $scope.newItem = '';
    // 添加待办事项的函数
    $scope.addItem = function() {
        // 检查输入是否为空
        if ($scope.newItem !== '') {
            // 将新任务添加到 todos 数组中
            // { text: $scope.newItem } 创建了一个对象,可以方便地扩展
            $scope.todos.push({ text: $scope.newItem });
            // 清空输入框,以便输入下一个任务
            $scope.newItem = '';
        }
    };
    // 删除待办事项的函数
    // $index 是 ng-repeat 提供的,表示当前循环项的索引
    $scope.removeItem = function(index) {
        // 使用 splice 方法从数组中移除指定索引的元素
        $scope.todos.splice(index, 1);
    };
});

步骤 4:简单美化 style.css

打开 style.css,添加一些基本样式,让我们的应用看起来更舒服。

body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
}
.container {
    max-width: 600px;
    margin: 50px auto;
    padding: 20px;
    background: #fff;
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
h1 {
    text-align: center;
    color: #333;
}
input[type="text"] {
    width: 70%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 3px;
}
button {
    width: 25%;
    padding: 10px;
    border: none;
    background-color: #5cb85c;
    color: white;
    border-radius: 3px;
    cursor: pointer;
}
button:hover {
    background-color: #4cae4c;
}
ul {
    list-style-type: none;
    padding: 0;
}
li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    border-bottom: 1px solid #eee;
}
li button {
    width: 80px;
    background-color: #d9534f;
}
li button:hover {
    background-color: #c9302c;
}

步骤 5:运行你的应用!

直接用浏览器打开 index.html 文件,恭喜你,你已经成功创建了你的第一个 AngularJS 应用!

你可以尝试:

  • 在输入框里输入文字,然后点击“添加”。
  • 观察列表是否实时更新。
  • 点击列表旁边的“删除”按钮,看看项目是否被移除。

这就是 AngularJS 的数据绑定和指令的威力! 你几乎没有写任何操作 DOM 的代码,只是声明了数据和逻辑,AngularJS 就帮你完成了所有渲染。


总结与下一步

恭喜你,已经迈出了 AngularJS 学习的第一步!你已经掌握了:

  • 如何搭建 AngularJS 项目。
  • 模块控制器作用域 的基本概念。
  • 如何使用 指令 (ng-app, ng-controller, ng-model, ng-click, ng-repeat)。
  • 如何实现 数据绑定列表渲染

下一步可以学习什么?

  1. 过滤器:学习如何格式化显示数据,{{ 12345 | currency }} 显示为 $12,345
  2. 服务:学习如何创建可重用的业务逻辑模块,比如与服务器通信。
  3. 路由:学习如何创建多页面应用,实现页面切换而无需刷新。

AngularJS 是一个强大而优雅的框架,虽然它不再是主流,但它所蕴含的思想是前端开发的宝贵财富,继续探索吧!

分享:
扫描分享到社交APP
上一篇
下一篇