首先,Angular2 与 Angular1.x 版本没有多大关系,甚至可以说是两个完全不一样的框架,故 Angular 指的是 Angular2 及以上的版本。而 Angular 与 TypeScript 的完美结合,对于一个 .NET 开发者来说,实在是找不到不用它的理由了,更多的优势来不及说了,快上车吧。

使用 angular-cli 初始化项目

Angular CLI 是一个用于构建 Angular 项目的命令行界面工具,它可以创建项目、添加文件以及执行一大堆开发任务,比如测试、打包和发布。

设置开发环境

在开始工作之前,我们必须设置好开发环境。

如果你的机器上还没有 Node.js®和npm,请先安装它们。

请先在终端/控制台窗口中运行命令 node -vnpm -v, 来验证一下你正在运行 node 6.9.x 和 npm 3.x.x 以上的版本。 更老的版本可能会出现错误,最新的版本则没问题。

安装 angular-cli

  1. npm install -g @angular/cli@latest

查看 cli 命令

  1. ng help

生成项目模版

  1. ng new zero-admin-web --style=scss
  2. cd zero-admin-web
  3. ng server --运行

生成模版时常用的一些参数:

  • --style=scss 指定使用scss,默认使用css
  • --routing=false 是否生成一个路由模块
  • --inline-style=false 是否使用内联样式
  • --inline-template=false 是否使用内联模版

启动开发服务器

进入项目目录,并启动开发服务器

  1. cd zero-admin-web
  2. ng serve --open

默认端口是4200,在浏览器中打开 http://localhost:4200 ,便能看到页面成功加载,并显示 “Welcome to app!”。

并且 ng serve 命令会启动文件的监控,当你修改这些文件时将自动重新编译,并刷新浏览器。而 --open 参数则表示是否自动打开浏览器。

生成发布包

  1. ng build --prod

build 用来生成压缩,优化后的JS,用来部署到生产环境,默认放成在 dist 文件夹下, --prod 用来指定发布环境。

angular-cli常用指令

可以使用ng generate 或者简写形式 ng g 命令来生成Angular组件:

  1. ng generate component my-component1 #生成一个名称为my-component1的组件

使用 ng generate 命令时,会相对于 src/app/ 目录来生成组件,可以在生成的时候指定多级目录。

当然,也支持生成指令,管道,服务,类,接口,模块等,如下所示:

脚手架 用法
Component ng g component my-new-component
Directive ng g directive my-new-directive
Pipe ng g pipe my-new-pipe
Service ng g service my-new-service
Class ng g class my-new-class
Guard ng g guard my-new-guard
Interface ng g interface my-new-interface
Enum ng g enum my-new-enum
Module ng g module my-module

项目结构

先看看项目模版里的文件结构,以及他们都是做什么的:

  1. ┌── e2e
  2. ├── app.e2e-spec.ts
  3. ├── app.po.ts
  4. └── tsconfig.e2e.json
  5. ├── src
  6. ├── app
  7. ├── app.component.css
  8. ├── app.component.html
  9. ├── app.component.spec.ts
  10. ├── app.component.ts
  11. └── app.module.ts
  12. ├── assets
  13. └── .gitkeep
  14. ├── environments
  15. ├── environment.prod.ts
  16. └── environment.ts
  17. ├── favicon.ico
  18. ├── index.html
  19. ├── main.ts
  20. ├── polyfills.ts
  21. ├── styles.css
  22. ├── test.ts
  23. ├── tsconfig.app.json
  24. ├── tsconfig.spec.json
  25. └── typings.d.ts
  26. ├── .angular-cli.json
  27. ├── .editorconfig
  28. ├── .gitignore
  29. ├── karma.conf.js
  30. ├── package.json
  31. ├── protractor.conf.js
  32. ├── README.md
  33. ├── tsconfig.json
  34. └── tslint.json

e2e/

e2e/ 目录中的是端到端(End-to-End)测试代码。 它们不在 src/ 下,是因为端到端测试实际上和应用是相互独立的,它只适用于测试我们的应用,这也是为什么它会拥有自己的 tsconfig.e2e.json 文件的原因。

src/

我们的应用代码位于 src 文件夹中。 所有的 Angular组件、模板、样式、图片以及应用所需的任何东西都在这个目录下, 这个目录之外的文件都是为构建应用提供支持用的。

package.json

这是项目的基本定义文件,所有的基于nodejs的项目都会有一个package.json文件,里面会定义项目名称、版本、依赖的库,以及脚本。

.angular-cli.json

Angular CLI 的配置文件。 在这个文件中,可以设置一系列默认值,还可以配置项目编译时要包含哪些文件等。

karma.conf.js

Karma 的单元测试配置,当运行 ng test 时会用到它。

protractor.conf.js

给*Protractor** 使用的端到端测试配置文件,当运行 ng e2e 的时候会用到它。

tsconfig.json

TypeScript 编译器的配置,IDE会借助它来为我们提供更好的代码提示,语法检查等。

tslint.json

TSLintCodelyzer 用的配置信息,当运行 ng lint 时会用到。 Lint功能可以帮我们保持代码风格的统一。

Angular Material

Material Design,中文名:材料设计语言,是由Google推出的全新的设计语言,谷歌表示,这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。

据谷歌介绍,Material Design基于“真实的触感,灵感源自对纸和墨水的研究,” 能够让用户 “理解那些用于替代真实世界的可视线索”,“而又不违背力学原理”。另外,光线、表面和移动的基本原理是表现对象如何移动、交互和相互关联地存在于空间中的关键。逼真的光影效果可以显示区块间的接缝、划分空间、以及标识移动的部件。更多详细的介绍可以看 Material 的官网 https://material.io

而 Angular Material 则是由 Angular 团队完全基于 Material 规范,完美实现的一套 Angular2+ UI框架。

安装配置步骤

第一步:安装

使用 npm 安装 Angular Materil 和 Angular CDK

  1. npm install --save @angular/material @angular/cdk

注: CDK是(Component Dev Kit)的缩写,Angular 的组件开发包,用于分离组件开发与 Material 的耦合(目前大多还耦合在一起),以方便使用其它风格的设计来开发组件。

第二步:动画

有一些 Angular Material 组件依赖于 Angular 动画模块,以便能进行一些高级的 transitions。如果你希望使用这些动画,则需要安装 @angular/animations 模块。

  1. npm install --save @angular/animations

导入动画模块

  1. import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
  2. @NgModule({
  3. ...
  4. imports: [BrowserAnimationsModule],
  5. ...
  6. })
  7. export class AppModule { }

第三步:导入

导入你想要使用的 Angular Material 模块

  1. import {MdButtonModule, MdCheckboxModule} from '@angular/material';
  2. @NgModule({
  3. ...
  4. imports: [MdButtonModule, MdCheckboxModule],
  5. ...
  6. })
  7. export class AppModule { }

第四步:主题

定制一个主题,所有的组件都将遵循于这个主题。Angular Material 内置了几种主题,我们可以在 style.css 文件中导入:

  1. @import "~@angular/material/prebuilt-themes/indigo-pink.css";

更多主题的介绍以及如何自定义主题,则可以参考 theming guide

第五步:手势

有些组件,如(md-slide-toggel, md-slider, mdTooltip)等依赖于 HammerJS 而支持手续操作。所以,如果你需要在你的项目中实现手势操作,则需要装 HammerJS 加载进来。

使用 npm 安装:

  1. npm install --save hammerjs

导入到根模块中:

  1. import 'hammerjs';

第六步:图标

如果你想通过 md-icon 组件来使用经典的 Material Design Icons 图标字体,则需要把 material-icons 的字体样式加载进来。

添加 material-icons.css

  1. @font-face {
  2. font-family: 'Material Icons';
  3. font-style: normal;
  4. font-weight: 400;
  5. src: local('Material Icons'),
  6. local('MaterialIcons-Regular'),
  7. url(../fonts/MaterialIcons-Regular.woff2) format('woff2'), /* Super Modern Browsers */
  8. url(../fonts/MaterialIcons-Regular.woff) format('woff'), /* Super Modern Browsers */
  9. url(../fonts/MaterialIcons-Regular.ttf) format('truetype'), /* Safari, Android, iOS */
  10. url(../fonts/MaterialIcons-Regular.svg) format('svg'); /* Legacy iOS */
  11. }
  12. .material-icons {
  13. font-family: 'Material Icons';
  14. font-weight: normal;
  15. font-style: normal;
  16. font-size: 24px; /* Preferred icon size */
  17. display: inline-block;
  18. line-height: 1;
  19. text-transform: none;
  20. letter-spacing: normal;
  21. word-wrap: normal;
  22. white-space: nowrap;
  23. direction: ltr;
  24. /* Support for all WebKit browsers. */
  25. -webkit-font-smoothing: antialiased;
  26. /* Support for Safari and Chrome. */
  27. text-rendering: optimizeLegibility;
  28. /* Support for Firefox. */
  29. -moz-osx-font-smoothing: grayscale;
  30. /* Support for IE. */
  31. font-feature-settings: 'liga';
  32. }
  33. /* Rules for sizing the icon. */
  34. .material-icons.md-18 { font-size: 18px; }
  35. .material-icons.md-24 { font-size: 24px; }
  36. .material-icons.md-36 { font-size: 36px; }
  37. .material-icons.md-48 { font-size: 48px; }
  38. /* Rules for using icons as black on a light background. */
  39. .material-icons.md-dark { color: rgba(0, 0, 0, 0.54); }
  40. .material-icons.md-dark.md-inactive { color: rgba(0, 0, 0, 0.26); }
  41. /* Rules for using icons as white on a dark background. */
  42. .material-icons.md-light { color: rgba(255, 255, 255, 1); }
  43. .material-icons.md-light.md-inactive { color: rgba(255, 255, 255, 0.3); }

然后在 index.html 中引用 material-icons.css

  1. <!-- Icons -->
  2. <link href="assets/css/material-icons.css" rel="stylesheet">

字体文件下载地址为:material-design-icons

不过更加推荐的是直接使用 Google 提供的 CDN 服务(现在国内访问速度非常快),只需要在 index.html 中添加如下引用即可:

  1. <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

总结

本文简单描述了如何使用 angular-cli 初始化项目和 material2 UI框架的配置,比起 webpack 那一大堆配置,angular-cli 则要简洁的多,而 angular-cli 生成的那么多文件,对于新手来说,可能有些还是不太理解,这个在后续会慢慢介绍,不要着急,前期不应过于执着细节,而是要先愉快的跑起来。而下一章则会介绍一下Angular项目的持续集成。

Angular 小试牛刀[1]:Getting Started的更多相关文章

  1. Angular 小试牛刀[2]:CI(travie+firebase)

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建 ...

  2. Angular杂谈系列1-如何在Angular2中使用jQuery及其插件

    jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信很多人并不能直接远离jQuery去做前端,因为它太好用了,我们以前做的东西大 ...

  3. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  4. TypeScript: Angular 2 的秘密武器(译)

    本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...

  5. angular实现统一的消息服务

    后台API返回的消息怎么显示更优雅,怎么处理才更简洁?看看这个效果怎么样? 自定义指令和服务实现 自定义指令和服务实现消息自动显示在页面的顶部,3秒之后消失 1. 显示消息 这种显示消息的方式是不是有 ...

  6. div实现自适应高度的textarea,实现angular双向绑定

    相信不少同学模拟过腾讯的QQ做一个聊天应用,至少我是其中一个. 过程中我遇到的一个问题就是QQ输入框,自适应高度,最高高度为3row. 如果你也像我一样打算使用textarea,那么很抱歉,你一开始就 ...

  7. Angular企业级开发-AngularJS1.x学习路径

    博客目录 有链接的表明已经完成了,其他的正在建设中. 1.AngularJS简介 2.搭建Angular开发环境 3.Angular MVC实现 4.[Angular项目目录结构] 5.[SPA介绍] ...

  8. Angular企业级开发(4)-ngResource和REST介绍

    一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ...

  9. Angular企业级开发(3)-Angular MVC实现

    1.MVC介绍 Model-View-Controller 在20世纪80年代为程序语言Smalltalk发明的一种软件架构.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并 ...

随机推荐

  1. 【原创】源码角度分析Android的消息机制系列(六)——Handler的工作原理

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 先看Handler的定义: /** * A Handler allows you to send and process {@link Mes ...

  2. Linux系统介绍

    类似Windows, Linux也是一个操作系统,Linux是一套开放源代码程序,并可以自由传播的类Unix操作系统软件,多用户,多任务并且支持多线程和多CPU的操作系统. Linux系统主要被应用于 ...

  3. 怎样禁止手机app 中页面有时候会把数字当做电话号码,从而自动进行打电话功能

    想要禁止这种功能,只需要给头不加一个meta标签就可以了, <meta name="format-detection" content="telephone=no& ...

  4. 使用 electron 做个播放器

    使用 electron 做个播放器 本文同步更新在:https://github.com/whxaxes/blog/issues/8 前言 虽然 electron 已经出来好长时间了,但是最近才玩了一 ...

  5. 关于WIN7 内存占用很大的 问题svchost.exe

    svchost.exe 是用来启动系统服务的,所以某个 svchost.exe 占用内存过大,可能就是它启动的那个服务占用内存过大,所以只要停止并禁用那个服务就行了. 一般来说占用内存最大的服务是 S ...

  6. 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒

    下面程序使用了两种方法计算两个时间相差 天,小时,分钟,秒 package jodotest; import java.text.ParseException; import java.text.Si ...

  7. Servlet转发到JSP页面的路径问题

    一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...

  8. memcache 细究(一)

    memcached是高性能的分布式的内存缓存服务器.由国外社区网站LIVEJOURNAL的开发团队开发. 使用目的: 通过缓存数据库查询结果,减少数据库的访问次数,以提高动态web应用的速度.提高可扩 ...

  9. iOS是最安全的?苹果iOS恶意软件数量增速首次超过Android

    之前小编还说Android系统似乎已经成为世界各地病毒作者的首选目标,但是近日一份安全研究报告让小编啪啪打脸. Skycure的移动安全报告显示,近三个季度内,在iOS上运行的恶意软件增加了2倍多,而 ...

  10. css3 变换 transform(2D)

    一.transform变换 可做拉伸.压缩.旋转.偏移的效果.需加各个浏览器前缀. 二.transform-origin 为transform属性值的基点,默认值为元素的中心位置,即以元素左上角为坐标 ...