摘要:开始项目前,你需要先安装和,然后执行安装。一用命令行新建一个项目执行上面的命令就会自动新建一个项目,并启动了项目。
作者:心叶
时间:2018-04-22 09:13
Angular CLI是一个命令行界面工具,它可以创建项目、添加文件以及执行一大堆开发任务,比如测试、打包和发布,这里的快速开始就是基于这个命令。
开始项目前,你需要先安装node和npm,然后执行npm install -g @angular/cli安装Angular CLI。
一:用命令行新建一个项目ng new newApp --skip-install cd newApp cnpm install ng serve --open
执行上面的命令就会自动新建一个Angualr项目,并启动了项目。
其中--skip-install表示node包先不安装,我们接着使用cnpm install安装会快多了。
二:目录结构现在来看看ng命令帮助我们生成了什么,也就是项目的目录结构,里面都是干什么的,先有个大致了解,你可以不知道全部,不过先记住下面几个个人感觉重要的:
1.src:应用代码存放的地方;
2.src/app:你的代码主要存放的地方,这样说也许不合适,不过你开发的时候,大部分时间都是在修改这里的代码;
3.src/assets:图片等存放的地方,构建时会复制到发布包里;
4.src/main.js:你基本不会修改它,它是程序的主入口;
5.src/styles.css:特别用的样式写在对应的地方,后面会说,对于公共的样式就会写在这里;
6.karma.conf.js:给Karma的单元测试配置,当运行ng test时会用到它。
三:自定义组件import { Component } from "@angular/core"; @Component({ selector: "my-comp", template: "
上面就已经定义好了一个非常简单的组件,不过在使用前,你还需要在模块中定义,此时就是src/app/app.module.ts中注册:
import { NgModule } from "@angular/core"; import { MyComponent } from "./my.component"; @NgModule({ declarations: [ MyComponent ] }) ......
现在已经注册好了,你就可以使用了,上面的例子的使用方法很简单,就是自定义了一个标签my-comp,和普通的div的用法一模一样。
需要注意的是,为了方便查看,在注册的例子中我去掉了无关的代码,实际情况还好有包括启动,别的组件,服务等的注册,你可以看看命令行自动生成的别的指令,这里主要还是说明更重要的东西,下同。
类似AngularJS,Angular的selector除了上面的自定义标签,还有别的:
1.selector: "element-name"//自定义标签选择器;
2.selector: ".class"//样式选择器;
3.selector: "[attribute]"//属性选择器;
4.selector: "[attribute=value]"//属性值选择器;
5.selector: ":not(sub_selector)"//取反选择器;
6.selector: "selector1, selector2"//多种选择器。
四:自定义服务和组件一样,我们先来定义一个服务。
import { Injectable } from "@angular/core"; export class DataFormat { id: number; info: string; } @Injectable() export class MyServ { getData(): DataFormat[] { return [ { id: 1, info: "Angular" }, { id: 2, info: "React" }, { id: 3, info: "Vue" } ]; } }
接着来注册它,服务和组件在注册上有点不同,我们现在先注册在主组件上面吧,默认就是在arc/app/app.component.ts文件中注册:
import { Component } from "@angular/core"; import { MyServ } from "./my.service"; @Component({ providers: [MyServ] })
服务的使用也很简单,我们这里用构造函数来演示一下:
import { MyServ } from "./my.service"; ...... export class MyComponent { dataList: any[]; constructor(private demoService: MyServ) { this.dataList = this.demoService.getData(); } }
还记得自定义组件的代码吗?我们就在其中演示了服务的用法,上面只给出了修改的部分代码。
五:路由的使用我们这里给出路由的一个简单用法,具体的细节和上面的类似,会多带带再去讨论,这篇文章的目的就是快速入门使用。
为了方便演示,我们默认已经定义好了二个组件:MyComponent和My2Component。
首先需要确定index.html页面的head标签中定义好了
我们先在src/app/app.module.ts中注册路由:
...... import { RouterModule } from "@angular/router"; @NgModule({ declarations: [MyComponent,My2Component], imports: [ RouterModule.forRoot([ {path: "my",component: MyComponent}, {path: "my2",component: My2Component} ]) ] ...... }) ......
使用就很简单了:
toMycomp toMy2comp
点击toMycomp或者toMy2comp就会跳转对应的路由设置的组件了。
六:HTTP由于@angular/http库中的HttpModule保存着http相关的服务,需要先引入进来(这里是在src/app/app.module.ts中引入):
import { HttpModule } from "@angular/http"; @NgModule({ imports: [HttpModule] }) ......
现在,http就是一个服务,下面简单演示一种用法:
...... import { Http } from "@angular/http"; ...... constructor(private http: Http) { http.get("assets/XXX.json").forEach(function (data) { console.log(data["_body"]); }); } ......
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/94492.html
摘要:正文架构概览正文架构概览接触大概一个月吧,期间写了个项目,趁现在稍微有点时间,来回顾梳理一下。里的模块,并不等同于项目中的模块概念。当然,这只是我目前阶段的理解。声明 本系列文章内容梳理自以下来源: Angular 官方中文版教程 官方的教程,其实已经很详细且易懂,这里再次梳理的目的在于复习和巩固相关知识点,刚开始接触学习 Angular 的还是建议以官网为主。 因为这系列文章,更多的会...
摘要:首先,我们需要在入口页面的中配置根路径然后创建一个路由模块路由配置在主模块中导入配置好的路由模块而在页面中需要一个容器去承载上面代码中的定义了用户点击后的路由跳转,定义该路由激活时的样式类。 刚实习的时候用过AngularJS,那时候真的是连原生JavaScript都不会写,依样画葫芦做了几个管理后台。然后突然换项目了,AngularJS就不写了,感觉前前后后接触了一年多的Angula...
摘要:它包含多个属性,这些属性值叫做元数据。会根据元数据渲染组件,并执行组件逻辑。元数据会告诉图和将这个类处理成一个组件。元数据这段代码表示这个组件可以通过这个标签来调用。 那些年初识Angular 由于工作需要初识了Angular,由于个人在学习一门新语言的时候喜欢买一本相关的书籍自己钻研,还记得自己的第一本Angular书籍是关于Angular2的学习,自此正式踏入Angular的学习。...
摘要:业界动态发布版本,同时发布了版本以及首个稳定版本的。程序人生如何用人类的方式进行二关于如何在中进行良好的沟通,避免陷入一些潜在的陷阱。技术周刊由小组出品,汇聚一周好文章,周刊原文。 业界动态 Angular 5.1 & More Now Available Angular发布5.1版本,同时发布了Angular CLI 1.6版本以及首个稳定版本的Angular Material。CL...
阅读 932·2021-11-24 09:39
阅读 2663·2021-09-26 09:55
阅读 10932·2021-08-23 09:47
阅读 3525·2019-08-30 15:52
阅读 831·2019-08-29 13:49
阅读 973·2019-08-23 18:00
阅读 825·2019-08-23 16:42
阅读 1591·2019-08-23 14:28