Angular CLI如何实现Build

php中世界最好的语言
풀어 주다: 2018-06-14 10:31:17
원래의
1497명이 탐색했습니다.

这次给大家带来Angular CLI如何实现Build,Angular CLI实现Build的注意事项有哪些,下面就是实战案例,一起来看一下。

Build.

Build主要会做以下动作:

  1. 编译项目文件并输出到某个目录

  2. Build targets决定了输出的结果

  3. bundling 打包

  4. 生产环境的build还会进行uglify和tree-shaking(把没用的代码去掉)

ng build.

可以先看帮助:

ng build --help
로그인 후 복사

针对开发环境, 就是用命令 ng build.

默认情况下, 它的输出目录在.angular-cli.json文件里ourDir属性配置的, 默认是/dist目录.

build之后会看见dist里面有这些文件:

  1. inline.bundle.js 这是webpack的运行时.

  2. main.bundle.js 就是程序代码.

  3. pollyfills.bundle.js 就是浏览器的Pollyfills.

  4. styles.bundle.js 样式

  5. vendor.bundle.js 是angular和第三方库

可以使用source-map-explorer来分析依赖, 并且查看哪些模块和类在bundle里面.

首先修改上一个例子中的代码:

执行ng build:

可以看到生成了这些文件.

把dist里面的index.html格式化一下看看:

可以看到它引用了生成的5个js文件.

打开main.bundle.js可以看到我写的代码:

下面运行程序: ng serve -o:

可以看到在ng serve的时候, 加载了上述的文件.

因为ng build是开发时的build, 所以没有做任何优化, 文件挺大的.

这时看一下文件目录, 并没有dist目录:

那么这些文件是怎么被serve的呢?

这是因为, 这时候webpack是在内存中进行的serve.

下面使用source-map-explorer进行分析, 首先安装它:

npm install --save-dev source-map-explorer
로그인 후 복사

然后执行 ng build, 再执行:

.\node_modules\.bin\source-map-explorer dist\main.bundle.js
로그인 후 복사

结果会生成这个图形:

再看看vendor.bundle的情况:

.\node_modules\.bin\source-map-explorer dist\vendor.bundle.js
로그인 후 복사

这里面东西就比较多了.

Build Targets和Environment.

Environment是指采用哪一个环境文件:

而Targets则是用来决定项目文件是如何被优化的.

看一下开发和生产build的对比.


ng build

ng build --prod

Environment

environment.ts

environment..prod.ts

缓存

只缓存css里引用的图片

所有build的文件

source maps

生成 

不生成

如何处理css

全局css输出到js文件

生成的是css文件

uglify

Tree-Shaking

不去掉无用代码

去掉无用代码

AOT

Bundling打包

--build-optimizer

是(和AOT以及Angular5)

--named-chunks

--output-hashing

media

所有

下面命令都是针对开发时的build, 它们的作用是一样的:

ng build
ng build --dev
ng build --dev -e=dev
ng build --target=development --environment=dev
로그인 후 복사

下面则是生产build:

ng build --prod
ng build --prod -e=prod
ng build --target=production --environment=prod
로그인 후 복사

其它常用的参数还有:

  1. --sourcemap -sm 生成source map

  2. --aot Ahead of Time编译

  3. --watch -w Watch并rebuild

  4. --environment -e Build环境

  5. --target -t Build target

  6. --dev 表示dev env和target

  7. --prod 表示prod env和target

Production Build.

先使用--aot:

ng build --aot
로그인 후 복사

使用aot之后可以看到 vendor.bundle的大小降了很多, 只有1.5m左右了.

执行aot会去掉一些程序执行不需要的代码, 例如angular的compiler这时就不在build输出的文件里了(可以使用source-map-explorer查看).

试试生产环境:

ng build --prod
로그인 후 복사

可以看到所有的文件都非常小了, 并且没有vendor了(因为prod下--build-optimizer起作用所以vendor没有了, 但可以使用--vendor-chunk true给弄出来).

Serve.

ng serve. 已经一直在用了, 下面看看它常用的参数:

  1. --open -o 打开默认浏览器

  2. --port -p 端口

  3. --live-reload -lr 发生变化时重新加载网页(默认开启的)

  4. --ssl 使用https

  5. --proxy-config -pc 代理配置

  6. --prod 在内存中serve 生产模式build的文件

试试 --prod:

ng serve --prod
로그인 후 복사

通过文件大小可以看出确实是prod build的.

ng eject.

为项目生成webpack配置和脚本.

执行该命令试试:

看看有哪些变化:

.angular-cli.json:

package.json:

命令脚本都变了

还多出来一个webpack.config.js文件:

为什么要这么做呢?

可以对项目更深入的配置....

这时运行程序就是 npm start了.

我还是把reject恢复回去吧, 使用git来恢复吧.

如果需要Serve 其他js/css/assets文件:

放在.angular-cli.json就行, 例如jquery就应该放在scripts里面.

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

H5触摸事件中如何判断用户滑动方向

css的新属性display:box使用方法

위 내용은 Angular CLI如何实现Build의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!