使用Angular CLI生成 Angular 5项目教程详解


Posted in Javascript onMarch 18, 2018

如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文.

Angular CLI 官网:https://github.com/angular/angular-cli

安装angular cli:

npm install -g @angular/cli

不过首先要确保您安装了比较新版本的nodejs.

今天主要通过以下几个方面介绍Angular CLI:

  • 生成项目
  • 参数介绍
  • 配置和自定义CLI
  • 检查和修复代码
  • 生成新项目:
ng new my-app

这个命令会生成一个新的项目叫做my-app并把该项目的文件放在my-app这个文件夹下.

项目生成完的时候别忘了cd进入到my-app目录.

另一个选项是使用--dry-run参数:

ng new my-app --dry-run

使用这个参数呢, 不会真的生成项目, 而是会打印出来如果创建该项目的话哪些文件将会生成.

使用Angular CLI生成 Angular 5项目教程详解

另外一个常用的参数是--skip-install:

ng new my-app --skip-install

这个命令作用是, 生成完项目文件之后不执行npm install这个动作.

不过以后还是需要手动执行npm install的.

使用--help参数可以查看帮助:

ng new --help

使用Angular CLI生成 Angular 5项目教程详解

下面我要生成一个项目, 先不执行npm install:

使用Angular CLI生成 Angular 5项目教程详解

这个速度非常快, 然后使用我最喜欢的IDE VSCode将其打开:

code .

看看整个的项目结构, 以及package.json:

使用Angular CLI生成 Angular 5项目教程详解

scripts下面是一些预定义的项目命令:

start 是运行项目的意思, 执行npm start即可, 或者直接执行ng serve也可以.

npm build / ng build 是执行构建.......

不一一介绍了.

然后看下dependencies:

我们使用的是angular 5.2.0, 前面的^符号表示, 我们使用的版本号是大于等于5.2.0的但是肯定会小于6.

最下面是devDependencies, 里面都是开发时用的工具库, 可以看到angular cli就在里面.

接下来看看angular-cli.json这个文件:

angular-cli.json:

它是angular cli针对该项目的配置文件.

使用Angular CLI生成 Angular 5项目教程详解

里面的prefix比较有趣, 它是所有生成的components和directives的默认前缀.

可以查看一下app.component.ts:

使用Angular CLI生成 Angular 5项目教程详解

它的前缀就是app.

如果想更改默认前缀的话, 就可以修改angular-cli.json文件里面的prefix属性值了, 如果改成sales, 那么以后生成的components和directives的前缀就是sales. 但是对已经生成的components/directives就不起作用了.

那么如何保证生成的项目的components/directives前缀是您想要的呢?

就是使用ng new的另一个参数 --prefix:

ng new sales-app --prefix sales

使用Angular CLI生成 Angular 5项目教程详解

这时里面生成的component的selector就是:

使用Angular CLI生成 Angular 5项目教程详解

angular-cli.json文件里面的prefix:

使用Angular CLI生成 Angular 5项目教程详解

在生成的项目里可以看到, 同时还生成了spec文件. 如果我不想让我的项目生成spec文件呢?

ng new也有这个参数--skip-tests:

ng new my-app2 --skip-tests

使用Angular CLI生成 Angular 5项目教程详解

可以看到, 并没有生成任何spec文件.

ng new的参数一共有这些:

使用Angular CLI生成 Angular 5项目教程详解

有几个介绍过的, 其他的例如:

--skip-git: 生成项目的时候就不会把它初始化为git repository, 默认是初始化为git repository的.

--directory: 可以设定生成的目录, 默认是使用的项目名称.

--style: 可以设定样式的类型, 默认是css, 例如可以改成scss.

也可以通过--inline-style把样式的写法设为行内样式, 这个默认是false的.

下面我来生成一个使用scss样式的项目:

使用Angular CLI生成 Angular 5项目教程详解

可以看到生成的是styles.scss, app.component.scss文件, angular cli不仅会生成scss文件, 而且也会编译它们.

查看angular-cli.json, 可以在文件的下方看到采用的是scss样式文件:

使用Angular CLI生成 Angular 5项目教程详解

这样, 以后生成的component的默认样式文件就是scss了.

最后我想介绍一下这个参数, --routing:

使用Angular CLI生成 Angular 5项目教程详解

如果想手动为项目配置路由的话, 还是需要一些步骤的, 所以可以使用这个参数直接生成带路由配置的项目.

看一下项目路由文件:

使用Angular CLI生成 Angular 5项目教程详解

再查看一下app.module:

使用Angular CLI生成 Angular 5项目教程详解

可以看到import了AppRoutingModule.

综上, ng new 的这些参数可以在生成项目的时候作为命令的参数联合使用, 其中有一些参数也可以在项目生成以后通过修改angular-cli.json文件来做修改.

比较推荐的做法是:

在生成项目的时候使用: --routing, --prefix, --style, --dry-run参数. 首先通过--dry-run参数, 确保会生成哪些文件是否正确, 确认后把--dry-run参数去掉, 生成文件.

下面我生成一个项目, 并且执行npm install:

使用Angular CLI生成 Angular 5项目教程详解

命令执行完, 可以看到如下的项目结构;

使用Angular CLI生成 Angular 5项目教程详解

里面有node_modules目录了, 也就是所有的包都安装好了, 接下来我可以运行该项目了:

ng serve -o

其中的-o(--open)参数表示运行项目的时候打开默认浏览器.

使用Angular CLI生成 Angular 5项目教程详解

查看浏览器http://localhost:4200:

使用Angular CLI生成 Angular 5项目教程详解

ng serve的优点是, 当代码文件有变化的时候会自动重新构建并且刷新浏览器, 您可以试一下.

另外一种配置CLI的方法 ng set.

前面我介绍了使用ng new参数和修改angular-cli.json文件的方式来配置cli, 下面我介绍下通过ng set <属性> <值> 来配置cli.

就拿当前这个项目来说, 它的默认样式文件类型是scss:

使用Angular CLI生成 Angular 5项目教程详解

如果我在该项目目录执行:

ng set defaults.styleExt css

那么该项目的设置就会改变:

使用Angular CLI生成 Angular 5项目教程详解

如果使用参数 -g(--global), 那就会进行一个全局的配置, 这个配置会保存在一个文件里(如果还没有任何去安居配置的情况下这个文件并不存在), 这个文件应该在users/xxx目录下, mac的话应该在home目录下.

它不会影响到已经存在的项目. 但是如果新生成的项目不指定ng new的参数情况下, 默认就会采用全局的配置:

使用Angular CLI生成 Angular 5项目教程详解

Lint:

使用命令ng lint.

首先可以查看一下帮助:

ng lint --help

使用Angular CLI生成 Angular 5项目教程详解

--fix: 尝试修复lint出现的错误.

--format: lint的输出格式.

首先我针对上面的my-app6执行ng lint:

使用Angular CLI生成 Angular 5项目教程详解

没有问题.

然后我故意弄出来几处错误/不规范的写法:

使用Angular CLI生成 Angular 5项目教程详解

然后再执行ng lint:

使用Angular CLI生成 Angular 5项目教程详解

可以看到这些错误都被详细的列了出来.

把格式化的参数加进去:

使用Angular CLI生成 Angular 5项目教程详解

可以看到现在lint结果的显示更直观了一些.

下面执行ng lint --fix:

使用Angular CLI生成 Angular 5项目教程详解

执行后lint的错误减少到了一个, 看下代码:

使用Angular CLI生成 Angular 5项目教程详解

以上所述是小编给大家介绍的使用Angular CLI生成 Angular 5项目教程详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
JS中Iframe之间传值的方法
Mar 11 Javascript
JavaScript中的this关键字使用详解
Aug 14 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 Javascript
angularjs结合html5实现拖拽功能
Jun 25 Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 Javascript
基于javascript处理nginx请求过程详解
Jul 07 Javascript
如何使用JavaScript策略模式校验表单
Apr 29 Javascript
分析javascript原型及原型链
Mar 18 #Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 #jQuery
jQuery中each方法的使用详解
Mar 18 #jQuery
JavaScript中字符串的常用操作方法及特殊字符
Mar 18 #Javascript
js中DOM事件绑定分析
Mar 18 #Javascript
js中如何完美的解析数据
Mar 18 #Javascript
解决使用vue.js路由后失效的问题
Mar 17 #Javascript
You might like
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
python3获取当前文件的上一级目录实例
2018/04/26 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
企业开业庆典答谢词
2015/01/20 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS