ng-翻译-0-Bootstrapping
在这一节的教程中,你将熟悉最重要的ng Phonecat App最重要的源代码文件。你也讲学习如何开启angluar-seed的服务,如何在浏览器中运行应用。
在你继续向下进行前,确保你已经按照Environment Setup这节所描述的建立了自己的开发环境,并按照了必要的相关依赖。
在angular-phonecat目录下,运行如下命令:
git checkout -f step-0
这将你的工作空间重置到应用教学的step0下。
在以后的学习中,你都要重复这一步,但要改变这个step的序号。这将使你在工作空间下做过的操作都会丢失。
如果还没有安装依赖,执行如下命令:
npm install
打开一个独立的命令窗口,执行npm start命令启动这个网页服务,将会在浏览器中看到运行的应用。现在,打开浏览器,链接http://localhost:8000/index.html。
注意如果你在切换分支step0前已经运行了主分支的应用,此时,你将在浏览器上看到的是主分支的应用。你需要点击刷新重新加载页面。(这句不是很理解,仅仅刷新页面就行吗,不需要切换个分支后,重新启动服务吗?)
你现在可以看到这个网页了,虽然不是很令人兴奋,但还是OK的。
基于下面的HTML代码,这个页面会显示'Nothing here yet'。下面的代码包含了我们需要处理的必要ng元素。
app/index.html:
<!doctype html>
<html lang="en" ng-app>
<head>
<meta charset="utf-8">
<title>My HTML File</title>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" />
<script src="bower_components/angular/angular.js"></script>
</head>
<body>
<p>Nothing here {{'yet' + '!'}}</p>
</body>
</html>
这些代码是干什么的?
ng-app属性:
<html ng-app>
这个ng-app属性代表着ng-app的指令(angularjs用短横线命名方式定义内部指令,用小驼峰命名方式实现对应的指令);用这个指令标识的html元素,angularjs会把它当做应用为根元素;
这样就由开发者来决定应用是控制整个html还是html中的一部分。
关于ng-app的更多信息,查看API参考文档。
angularjs的脚本标签:
<script src="bower_components/angular/angular.js"></script>
这段代码会下载angular脚本,脚本中注册了回调,当浏览器将整个html元素加载结束后即会执行回调。回调执行时ng会寻找ngApp指令,如果找到了ngApp指令,ng将引导ngAPP定义的DOM为ng应用的根元素。
更多的关于引导ng应用的信息,可以参考开发指引中的Bootstrap一节。
用表达式和双大括号进行绑定:
Nothing here {{'yet' + '!'}}
这行代码演示了ng模板能力的两个核心特点:
- 用大括号代表绑定:{{ }}
- 在绑定中使用简单的表达式:'yet' + '!'
这个绑定告诉ng去计算表达式,并将结果插入到绑定的DOM地方。在接下来的步骤中,而不是仅一次,无论什么时候这个表达式发生变化,这个绑定都会引起有效持续的更新。
angularjs表达式在当前模型范围内是被angularjs处理的类似js代码的片段,而不是作用在全局范围内(window)。
正如所想,一旦这个模板被angular处理,这个html页面即会包含如下内容:
Nothing here yet!
引导ng应用
使用ngApp指令自动引导ng指令是非常简单的和适用于多数情况,复杂情况下,例如当使用脚本加载时,你可以使用命令或者手动方式引导这个应用。
当引用解析时主要进行三件事:
- 用于依赖注入的注册器被创建
- 注册器创建了root scropt作为整个模型的容器
- ng从ngApp根元素开始编译DOM元素,处理碰到的任何指令和绑定。
一旦一个应用被引导,它将能响应可能改变模型的浏览器事件(例如鼠标点击,键盘按键或者http响应)。一旦ng发现这样的事件,ng将会检测它是否引起了模型改变,一旦改变被发现,ng将通过更新绑定在视图中呈现出来。
下面的应用结构是非常简单的,这个模板包含一个指令和绑定,且模型是空的,这样响应变化会很快。
在我的工作目录下都是些什么文件?
大多数的文件都来自于angular-seed工程,这个工程典型用于引导新的ng项目。这个项目预先配置好安装ng框架(通过bower工具在app/bower_components/目录下)和用于开发测试web应用的工具(npm)。
为了学习,我们修改了目录如下:
- 删除了app例子
- 删除无用的依赖
- 增加了手机图片在app/img/phones/
- 增加了手机数据文件(JSON)在app/phones/
- 增加了一个依赖关于Bootstrap在bower.json文件中