AngularJS入门教程(零):引导程序


Posted in Javascript onDecember 06, 2014

我们现在开始准备编写AngularJS应用——phonecat。这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用。

进入angular-phonecat目录,运行如下命令:

git checkout -f step-0

该命令将重置phonecat项目的工作目录,建议您在每一学习步骤运行此命令,将命令中的数字改成您学习步骤对应的数字,该命令将清除您在工作目录内做的任何更改。

运行以下命令:

node scripts/web-server.js

来启动服务器,启动后命令行终端将会提示Http Server running at http://localhost:8000,请不要关闭该终端,关闭该终端即关闭了服务器。在浏览器中输入http://localhost:8000/app/index.html来访问我们的phonecat应用。

现在,在浏览器中您应该已经看到了我们的初始应用,很简单,但说明我们的项目已经可以运行了。

应用中显示的“Nothing here yet!”是由如下HTML代码构建而成,代码中包含了AngularJS的关键元素,正是我们需要学习的。

app/index.html

<!doctype html>

<html lang="en" ng-app>

<head>

    <meta charset="utf-8">

    <title>My HTML File</title>

    <link rel="stylesheet" href="css/app.css">

    <link rel="stylesheet" href="css/bootstrap.css">

    <script src="lib/angular/angular.js"></script>

</head>

<body>

<p>Nothing here {{'yet' + '!'}}</p>

</body>

</html>

代码在做什么呢?

ng-app指令:

<html lang="en" ng-app>

ng-app指令标记了AngularJS脚本的作用域,在<html>中添加ng-app属性即说明整个<html>都是AngularJS脚本作用域。开发者也可以在局部使用ng-app指令,如<div ng-app>,则AngularJS脚本仅在该<div>中运行。

AngularJS脚本标签:

<script src="lib/angular/angular.js"></script>

这行代码载入angular.js脚本,当浏览器将整个HTML页面载入完毕后将会执行该angular.js脚本,angular.js脚本运行后将会寻找含有ng-app指令的HTML标签,该标签即定义了AngularJS应用的作用域。

双大括号绑定的表达式:

<p>Nothing here {{'yet' + '!'}}</p>

这行代码演示了AngularJS模板的核心功能——绑定,这个绑定由双大括号{{}}和表达式'yet' + '!'组成。

这个绑定告诉AngularJS需要运算其中的表达式并将结果插入DOM中,接下来的步骤我们将看到,DOM可以随着表达式运算结果的改变而实时更新。

AngularJS表达式Angular expression是一种类似于JavaScript的代码片段,AngularJS表达式仅在AngularJS的作用域中运行,而不是在整个DOM中运行。

引导AngularJS应用

通过ngApp指令来自动引导AngularJS应用是一种简洁的方式,适合大多数情况。在高级开发中,例如使用脚本装载应用,您也可以使用bootstrap手动引导AngularJS应用。

AngularJS应用引导过程有3个重要点:

1.注入器(injector)将用于创建此应用程序的依赖注入(dependency injection);
2.注入器将会创建根作用域作为我们应用模型的范围;
3.AngularJS将会链接根作用域中的DOM,从用ngApp标记的HTML标签开始,逐步处理DOM中指令和绑定。

一旦AngularJS应用引导完毕,它将继续侦听浏览器的HTML触发事件,如鼠标点击事件、按键事件、HTTP传入响应等改变DOM模型的事件。这类事件一旦发生,AngularJS将会自动检测变化,并作出相应的处理及更新。

上面这个应用的结构非常简单。该模板包仅含一个指令和一个静态绑定,其中的模型也是空的。下一步我们尝试稍复杂的应用!

我工作目录中这些文件是干什么的?

上面的应用来自于AngularJS种子项目,我们通常可以使用AngularJS种子项目来创建新项目。种子项目包括最新的AngularJS代码库、测试库、脚本和一个简单的应用程序示例,它包含了开发一个典型的web应用程序所需的基本配置。

对于本教程,我们对AngularJS种子项目进行了下列更改:
1.删除示例应用程序;
2.添加手机图像到app/img/phones/;
3.添加手机数据文件(JSON)到app/phones/;
4.添加Twitter Bootstrap文件到app/css/ 和app/img/。

练习

试试把关于数学运算的新表达式添加到index.html:

<p>1 + 2 = {{ 1 + 2 }}</p>

总结

现在让我们转到步骤1,将一些内容添加到web应用程序。

Javascript 相关文章推荐
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
Apr 14 Javascript
Bootstrap CSS组件之大屏幕展播
Dec 17 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
Dec 11 Javascript
常用的9个JavaScript图表库详解
Dec 19 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 #Javascript
AngularJS入门教程之Hello World!
Dec 06 #Javascript
JavaScript中的Web worker多线程API研究
Dec 06 #Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 #Javascript
JavaScript实现twitter puddles算法实例
Dec 06 #Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 #Javascript
angularjs中的e2e测试实例
Dec 06 #Javascript
You might like
php获得文件扩展名三法
2006/11/25 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
7个JS基础知识总结
2014/03/05 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
python显示生日是星期几的方法
2015/05/27 Python
Python时间获取及转换知识汇总
2017/01/11 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
哪些是python中web开发框架
2020/06/17 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
运动会入场口号
2014/06/07 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
安全教育培训制度
2015/08/06 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL