【一起学AngularJS】第一章、入门教程说明

该AngularJS中文教程由目前(2016/3/3)最新的官网英文翻译而来,因为AngularJS中文站的教程似乎有点断片,而且英文官方文档里对应的代码存在一些版本兼容问题,容易给读者造成很大困惑,所以决定自己翻译一遍(我会尽量尝试以比较轻松愉快的表达手法完成),其中可能会有一点个人的理解部分(会以注释标注),离考雅思已经过3个年头,表示英语退化迅速,解释不当的地方还请理解 :) Here we start.

PhoneCat 入门Web应用示例

通过这个入门教程来介绍AngularJS是一个非常不错的选择, 它将向你演示如何创建一个AngularJS Web应用。马上我们要做的这个web app用来展示安卓手机,你可以过滤掉其他的手机,只留下你喜欢的,并且可以查看任意手机的详情。


PhoneCat页面

这个教程将让你明白AngularJS在无需本地扩展和插件的情况下是如何让浏览器变得更加机智的,它会让你学到:

  • 如何使用“客户端数据库绑定”来创建可以实时响应用户操作的数据展示视图。
  • Angular是如何让页面视图能够与模型数据保持一致的,并且无需操作DOM元素。
  • 如何使用Karma 和 Protractor来更简单、更好的测试你的网络应用。
  • 如何使用依赖注入(dependency injection)和服务(services)来更简单的完成一般的网络任务,比如获取数据。

当你完成了这个教程的学习之后,你将学会以下这些:

  • 创建一个适用于所有流行浏览器的动态网络应用。【注释:能用得到JS的网络应用,目前* 来说就网站和H5手机APP吧,动态网络应用,我觉得可以直接理解成网站(虽然广义上还包括WS等,但这里我觉得就是网站)】
  • 使用“数据绑定”来绑定数据模型和页面视图(views)。
  • 使用Karma来创建和运行单元测试。
  • 使用Protractor来创建和运行端到端的测试。
  • 把应用逻辑部分从模版(template)里隔离开来,放到控制器(Controllers)中。【注释:在AngularJS范畴里,模版就是指HTML页面了,因为一定意义上它规范了数据的展示模版】
  • 使用Angular服务(services)来从服务器获取数据。【注释:以前我们一般用ajax】
  • 使用ngAnimate来完成网站动画。
  • 每个部分结束还有AngularJS进阶的学习资料。

这个教程将教会我们使用AngularJS搭建简单网站的整个过程,包括编写和运行单元测试和端到端测试。每一个部分结束会有一些小实验,它们将让你更好的学习AngularJS和将要搭建的这个网站。
或许你只需要花几个小时走马观花,又或许你愿意花一天时间好好的研究研究,没关系,都可以。如果你要简单过下的话,看直接看 **Getting Started **。

准备开始

接下来我们搭建开发环境。如果只是想读一读教程,并不打算运行它,可以直接进入教程的第一部分:第二章、入门引导。

调试代码

你可以一边看教程,一边开开心心的在自己的电脑上自由的调试代码。这是我们推荐的学习方式,因为这样可以让你手把手的进行AngularJS编程实践。
教程所使用的代码都使用Git版本管理系统来进行管理。不过你不用担心,你不需要知道太多关于Git的知识,只需要按照教程敲打几条命令而已。

安装GIT

git clone ... : 复制一份代码并且放到本地目录种。
git checkout ... : 牵出某个分支或者某个版本的代码,以便于你修改

载网站源代码(就是PhoneCat网站)

从远程的PhoneCat仓库(放在Github上)克隆代码到本地(首先创建一个文件夹,然后右击文件夹选择GitBash可以打开Git命令框):

git clone --depth=14 https://github.com/angular/angular-phonecat.git

这个命令将在你新建的文件夹下创建一个angular-phonecat目录。--depth=14代表只迁出最近14次提交。
进入项目目录:

cd angular-phonecat

接下来教程里出现的其他命令,都应该在该目录下输入。

安装 Node.js

如果你想使用预先配置好的网站服务器和相关的测试工具,得需要下载Node.js。点 Node.js v0.10.27+下载。
下载完安装后,我们简单验证下Node.js的版本。

node --version

在Debian分布式系统中,node.js有一个叫node的模块和系统自身有一个命名冲突。这种情况下,建议安装 nodejs-legacy apt安装包,并且把 node 重命名成 nodejs.

apt-get install nodejs-legacy npm
nodejs --version
npm --version

注:如果你需要在您的计算机上安装多个版本的Node.js,可以考虑装一个 Node Version Manager (nvm)

安装好Node.js后,你就可以使用以下命令下载其他的依赖工具了:

npm install

这个命令会读取angular-phonecat目录下的 package.json 文件,并且下载以下的工具到 node_modules 目录:

  • Bower : 客户端代码包管理器
  • Http-server : 简单本地静态网站服务器
  • Karma : 单元测试工具
  • Protractor : 端到端(E2E)测试工具

运行 npm install 还会自动的使用 Bower 工具下载AngularJS框架代码到 app/bower-components 目录下。

注:angular-phonecat项目将通过npm脚本来安装和运行上述的这些工具。这意味着你不需要为了学习这个教程在你的电脑上全局的安装这些工具(注解:意思就是绿色版的,放在文件夹下就行了,不需要全局安装)。下面的 **安装帮助工具 **章节中会提供更多的信息。

该项目预先配置了一些帮助脚本,它们可以帮助你完成开发中需要的一些常见任务:

  • npm start : 启动一个本地的web服务器
  • npm test : 启动Karma单元测试器
  • npm run protractor : 启动Protractor运行 E2E测试
  • npm rum update-webdriver : 安装Protractor需要的一些驱动

安装帮助工具(可选)

上文提到过的Bower、Http-server、Karma、Protractor模块本身自己也都是可执行文件,它们都可以被直接安装在你的计算机中,以便你任意打开一个控制台窗口都可以通过敲击命令来运行它们。当然了,你没必要为了本次教程而这么做。但是如果你想直接从任意控制台窗口来运行它们,你可以通过 sudo npm install -g ... 这样的命令形势来安装它们到你的计算机中。
比如,通过以下命令可以安装 Bower 命令行

sudo npm install -g bower

注:如果在Windows下,去掉sudo

然后你就可以直接运行bower了。

bower install

运行网站服务器

尽管AngularJS是纯粹的客户端代码,你可以直接从本地文件夹内,通过浏览器打开文件运行,但是我们推荐你使用HTTP网站服务器来运行它。尤其是现在很多流行的浏览器出于安全考虑,并不允许JavaScript进行网络请求。
我们已经为angular-phonecat项目配置了一个简单的静态网站服务器用于开发过程中的网站调试。通过以下命令启动网站服务器:

npm start

这将运行一个监听在8000端口的本地服务器。然后你可以使用以下网站访问网站了:
http://localhost:8000/app/index.html

注:如果你想修改IP地址和端口号,打开package.json文件中的start脚本,使用 -a 设置网络地址,用-p设置端口)

运行单元测试

我们一般使用单元测试保证JS代码能正确运行。单元测试的目标在于测试应用的某一部分单独的隔离开的代码的功能。本项目的单元测试代码在 test/unit 目录中。
在该项目中,我们使用Karma测试框架进行单元测试。通过以下命令运行Karma:

npm test

Karma运行后将从 test/karma.conf.js 读取配置。这些配置将指导Karma完成:

  • 打开Chrome浏览器并且链接到Karma
  • 在浏览器中执行所有的单元测试
  • 在终端(Linux-core )或者控制台(Windows) 中显示单元测试的结果。
  • 监视整个项目的JS文件,并且在这些文件发生改动时自动的重新进行单元测试。

让它一直运行在后台是很好的习惯,因为它会实时的反馈告诉你,你的JS代码是否通过的单元测试。

运行端到端(E2E)测试

E2E测试主要用于保证整个网站整体能够运行正确。本项目中的E2E测试将用来测试客户端应用,尤其要保证页面能够正确展示和交互。它将通过模拟用户真实交互来实现这个测试。
E2E测试的代码都放在 test/e2e 目录中。
在该项目中,我们将使用Protractor来运行E2E测试。由于Protractor需要好几个驱动来和浏览器交互,你需要通过以下命令安装:

npm run update-webdriver

注:上述命令只需要运行一次

你需要安装JAVA来确保Protractor能正确调用Selenium单机版。通过在终端或者控制台中输入 java -version 来确认你是否安装了JAVA, 如果没有安装,要先安全JAVA并且配置好环境变量。
由于Protractor只能与一个运行的网站应用交互,所以我们先要启动我们的网站服务器:

npm start

然后重新打开一个终端或者控制台窗口,通过以下命令启动E2E测试:

npm run protractor

Protractor将去读取 test/protractor-conf.js 配置,这些配置将指导Protractor完成以下任务:

  • 打开一个Chrome窗口并且连接到网站应用。
  • 在浏览器中执行所有的端到端测试。
  • 在终端/控制台中显示测试结果。
  • 关闭浏览器并且退出。

当你改动的HTML代码并且想整体测试以下时,做一下E2E测试是很好的选择。当你PUSH自己的改动代码前,先做好E2E测试也是很常见并且值得鼓励的。
到此为止,你已经配置好了本地开发环境。
下面开始正式进入教程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容