使用Angular CLI从蓝本生成代码详解


Posted in Javascript onMarch 24, 2018

第一篇文章是: "使用angular cli生成angular5项目" :https://3water.com/article/136621.htm

这篇文章主要是讲生成 Components, Directive, Service, class, interface, enum等等.

ng generate <蓝本名> 命令.

该命令的格式是 ng generate <蓝本名> <参数>.

也可以使用--dry-run参数来列出要生成的文件, 而不是真的生成.

例如:

ng generate component person, 就会生成一个person.component.ts.

ng generate service sales-data 就会生成一个sales-data.service.ts.

ng generate class user-model 就会生成一个user-model.ts 里面是UserModel类.

Components.

ng generate xxx xxx的命令还是有点长, 这里angular cli内置了命令的别名, 例如:

ng generate component person 这个命令,

里面的generate 可以使用字母 g 代替,

里面的component 可以使用字母 c 代替.

所以这两个命令是相等的:

ng generate component person
ng g c person

可以到这里查看component相关的命令和别名:

https://github.com/angular/angular-cli/wiki/generate-component

可能常用的命令参数有:

  1. --flat  表示是否不需要创建文件夹
  2. --inline-template (-it) 模板是否应该放在ts文件里
  3. --inline-style (-is) 样式是否应该放在ts文件里.
  4. --spec 是否需要创建spec文件(测试文件)
  5. --view-encapsulation (-ve)  View Encapsulation策略 (简单理解为样式文件的作用范围策略).
  6. --change-detection (-cd) 变化检查策略.
  7. --prefix 设定这个component的前缀
  8. --dry-run (-d), 打印出生成的文件列表, 而不直接生成.

看下面两对作用相同的命令, 还是使用别名方便:

ng generate component person
ng generate component person --inline-template --inline-style

ng g c person
ng g c person -it -is

下面来试试这些命令:

建立项目: ng new my-app 等npm install结束后再进行操作.

建立好项目后, 进入该目录, 执行命令:

ng g c person -d

使用Angular CLI从蓝本生成代码详解

该命令将会生成上述4个文件, 并更新app.module.ts.

下面把-d参数去掉, 生成文件:

使用Angular CLI从蓝本生成代码详解

使用Angular CLI从蓝本生成代码详解

可以看到文件生成在项目里了. 并且更新了app.module.ts, 在里面做了component的声明.

再试试生成另外一个component, 使用一些参数 View Encapsulation 和 Change Detection Strategy:

ng g c student -ve Emulated -cd OnPush

使用Angular CLI从蓝本生成代码详解

可以看到参数起作用了.

通过源码管理页, 可以看到这两个命令对app.module进行了哪些更新:

使用Angular CLI从蓝本生成代码详解

分别对生成的两个component进行了声明.

然后我commit一下..

Directive.

ng g d filter-box -d

使用Angular CLI从蓝本生成代码详解

这是文件报告, 下面真正的生成:

ng g d filter-box

通过vscode的源码管理, 可以看到变化:

使用Angular CLI从蓝本生成代码详解

directive生成了两个文件和component一样, 也在app.module进行了声明.

看一下目录结构:

使用Angular CLI从蓝本生成代码详解

生成的directive的结构是没有目录, 也就是flat的.

如果不想生成flat样式的, 想让其拥有自己的文件夹, 那么就是用--flat参数:

ng g d filter-box2 --flat false

使用Angular CLI从蓝本生成代码详解

使用Angular CLI从蓝本生成代码详解

这样就有自己的文件夹了.

commit一下.

Service.

ng g s order-data -d

使用Angular CLI从蓝本生成代码详解

可以看到 这个命令会生成flat结构的service.

然后把-d去掉, 真实生成文件:

ng g s order-data

使用Angular CLI从蓝本生成代码详解

可以从源码管理看到, 只生成了两个文件, 并没有在app.module里面注册:

使用Angular CLI从蓝本生成代码详解

当然可以在这里写代码把刚才生成的service注册进去.

但是正确的做法是使用 -m 参数来指定需要注册的module:

ng g s order-data2 -m app

使用Angular CLI从蓝本生成代码详解

使用Angular CLI从蓝本生成代码详解

这次生成的order-data2 service就会在app.module.ts里面进行注册了.

然后再commit一下.

Model/Interface/Enum/Pipe.

model:

ng g cl models/user

这个命令会创建models文件夹, 然后在里面创建user这个model:

使用Angular CLI从蓝本生成代码详解

使用Angular CLI从蓝本生成代码详解

interface:

ng g i models/animal

enum:

ng g e models/gender

使用Angular CLI从蓝本生成代码详解

commit一下.

Pipe.

ng g p camel-case

使用Angular CLI从蓝本生成代码详解

除了生成两个文件之外, 这个命令默认也会更新app.module.

使用Angular CLI从蓝本生成代码详解

Module.

ng g m login

使用Angular CLI从蓝本生成代码详解

使用Angular CLI从蓝本生成代码详解

可以看到module默认是自带文件夹的.

然后我试试添加一个component, 目的是要在login module进行声明:

使用Angular CLI从蓝本生成代码详解

可以看到我要创建的welcome component默认是在app.module里面进行声明的, 这时候如果想要在login module进行声明, 就要使用 -m 参数:

使用Angular CLI从蓝本生成代码详解

去掉-d执行生成命令后:

使用Angular CLI从蓝本生成代码详解

可以看到welcome component这次实在login module进行的声明.

今天先写到这, 更多的参数还是要查看官方文档:https://github.com/angular/angular-cli

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
对象特征检测法判断浏览器对javascript对象的支持
Jul 25 Javascript
自己整理的一个javascript日期处理函数
Oct 16 Javascript
验证控件与Button的OnClientClick事件详细解析
Dec 04 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
vue中引入mxGraph的步骤详解
May 17 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
Jan 16 Javascript
JavaScript实现PC端横向轮播图
Feb 07 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 #Javascript
在vue中使用jointjs的方法
Mar 24 #Javascript
浅谈Vue下使用百度地图的简易方法
Mar 23 #Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 #jQuery
Webpack 之 babel-loader文件预处理器详解
Mar 23 #Javascript
Node.js实现注册邮箱激活功能的方法示例
Mar 23 #Javascript
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 #Javascript
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python脚本替换指定行实现步骤
2017/07/11 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python 复平面绘图实例
2019/11/21 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
python操作yaml说明
2020/04/08 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
保险专业自荐信范文
2014/02/20 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
学子宴致辞大全
2015/07/27 职场文书
关于五一放假的通知
2015/08/18 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
解决MySQL报“too many connections“错误
2022/04/19 MySQL