91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Angular CLI進行Build(構建)和Serve詳解

發布時間:2020-09-13 23:54:57 來源:腳本之家 閱讀:185 作者:草根專欄 欄目:web開發

第一篇文章是: "使用angular cli生成angular5項目" :https://www.jb51.net/article/136621.htm

第二篇文章是: "使用angular cli從藍本生成代碼" :https://www.jb51.net/article/137031.htm

第三篇文章是: "使用Angular CLI生成路由" :https://www.jb51.net/article/137033.htm

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里面.

首先修改上一個例子中的代碼:

使用Angular CLI進行Build(構建)和Serve詳解

執行ng build:

使用Angular CLI進行Build(構建)和Serve詳解

使用Angular CLI進行Build(構建)和Serve詳解

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

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

使用Angular CLI進行Build(構建)和Serve詳解

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

打開main.bundle.js可以看到我寫的代碼:

使用Angular CLI進行Build(構建)和Serve詳解

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

使用Angular CLI進行Build(構建)和Serve詳解

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

因為ng build是開發時的build, 所以沒有做任何優化, 文件挺大的.

這時看一下文件目錄, 并沒有dist目錄:

使用Angular CLI進行Build(構建)和Serve詳解

那么這些文件是怎么被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

結果會生成這個圖形:

使用Angular CLI進行Build(構建)和Serve詳解

再看看vendor.bundle的情況:

.\node_modules\.bin\source-map-explorer dist\vendor.bundle.js

使用Angular CLI進行Build(構建)和Serve詳解

這里面東西就比較多了.

Build Targets和Environment.

Environment是指采用哪一個環境文件:

使用Angular CLI進行Build(構建)和Serve詳解

而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

使用Angular CLI進行Build(構建)和Serve詳解

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

執行aot會去掉一些程序執行不需要的代碼, 例如angular的compiler這時就不在build輸出的文件里了(可以使用source-map-explorer查看).

試試生產環境:

ng build --prod

使用Angular CLI進行Build(構建)和Serve詳解

可以看到所有的文件都非常小了, 并且沒有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

使用Angular CLI進行Build(構建)和Serve詳解

通過文件大小可以看出確實是prod build的.

ng eject.

為項目生成webpack配置和腳本.

執行該命令試試:

使用Angular CLI進行Build(構建)和Serve詳解

看看有哪些變化:

.angular-cli.json:

使用Angular CLI進行Build(構建)和Serve詳解

package.json:

使用Angular CLI進行Build(構建)和Serve詳解

命令腳本都變了

使用Angular CLI進行Build(構建)和Serve詳解

還多出來一個webpack.config.js文件:

使用Angular CLI進行Build(構建)和Serve詳解

為什么要這么做呢?

可以對項目更深入的配置....

這時運行程序就是 npm start了.

我還是把reject恢復回去吧, 使用git來恢復吧.

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

使用Angular CLI進行Build(構建)和Serve詳解

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌兰察布市| 随州市| 新和县| 桂林市| 手机| 宁明县| 萍乡市| 沂南县| 南丹县| 泗阳县| 德昌县| 柳林县| 虹口区| 莎车县| 启东市| 衡山县| 白水县| 武川县| 新乐市| 和林格尔县| 安陆市| 卢氏县| 东明县| 古田县| 潜山县| 睢宁县| 玉田县| 贵德县| 通山县| 西青区| 旬阳县| 来凤县| 松原市| 丽江市| 莆田市| 突泉县| 高要市| 沁水县| 太康县| 长武县| 合肥市|