閱讀171 返回首頁    go 阿裏雲 go 技術社區[雲棲]


FIS3的簡單使用

FIS3 是什麼?能做什麼?

FIS3 是麵向前端的工程構建工具。解決前端工程中性能優化、資源加載(異步、同步、按需、預加載、依賴管理、合並、內嵌)、模塊化開發、自動化工具、開發規範、代碼部署等問題。

1、安裝:

FIS3是基於node和npm的構建工具,需要安裝node,沒安裝node的請自行安裝。

這裏是參考FIS官網簡單說說windows如何安裝和使用,

打開cmd輸入命令:npm install -g fis3

注:如果npm等待時間過長建議使用淘寶鏡像cnpm,等同於npm.

輸入以上命令等待安裝完成之後再輸入:fis3 -v

如果看到如下圖說明安裝成功:

2、使用:

fis3不像grunt、gulp使用時候很多插件還要配置,因為fis3很多已經內置,隻需要配置下一個必須文件:fis-conf.js即可。

下麵介紹幾個常用的配置例子,(例子下載),例子目錄:app是項目的開發環境,build是空文件夾,是生產環境(即fis-conf.js配置之後,輸入一鍵配置)

A:文件指紋,文件指紋,唯一標識一個文件。在開啟強緩存的情況下,如果文件的 URL 不發生變化,無法刷新瀏覽器緩存。一般都需要通過一些手段來強刷緩存,一種方式是添加時間戳,每次上線更新文件,給這個資源文件的 URL 添加上時間戳。

而 FIS3 選擇的是添加 MD5 戳,直接修改文件的 URL,而不是在其後添加 query。如下

B:CssSprite圖片合並,

壓縮了靜態資源,我們還可以對圖片進行合並,來減少請求數量。

FIS3 提供了比較簡易、使用方便的圖片合並工具。通過配置即可調用此工具並對資源進行合並。

FIS3 構建會對 CSS 中,路徑帶 ?__sprite 的圖片進行合並。為了節省編譯的時間,分配到 useSprite: true 的 CSS 文件才會被處理配置如下。

C:資源壓縮,為了減少資源網絡傳輸的大小,通過壓縮器對 js、css、圖片進行壓縮是一直以來前端工程優化的選擇。在 FIS3 中這個過程非常簡單,通過給文件配置壓縮器即可。配置如下

最後這個完整的fis-conf.js的配置如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//1、文件指紋,而 FIS3 選擇的是添加 MD5 戳,
// 直接修改文件的 URL,而不是在其後添加 query。
fis.match('*.{js,css,png}', {
    useHash: true
});
 
 
//2、CssSprite圖片合並
//FIS3 提供了比較簡易、使用方便的圖片合並工具。
// 通過配置即可調用此工具並對資源進行合並。
// 啟用 fis-spriter-csssprites 插件
fis.match('::package', {
    spriter: fis.plugin('csssprites')
})
// 對 CSS 進行圖片合並
fis.match('*.css', {
    // 給匹配到的文件分配屬性 `useSprite`
    useSprite: true
});
 
//3、壓縮資源
//為了減少資源網絡傳輸的大小,
// 通過壓縮器對 js、css、圖片進行壓縮是一直以來前端工程優化的選擇。
// 在 FIS3 中這個過程非常簡單,通過給文件配置壓縮器即可。
// 清除其他配置,隻保留如下配置
fis.match('*.js', {
    // fis-optimizer-uglify-js 插件進行壓縮,已內置
    optimizer: fis.plugin('uglify-js')
});
 
fis.match('*.css', {
    // fis-optimizer-clean-css 插件進行壓縮,已內置
    optimizer: fis.plugin('clean-css')
});
 
fis.match('*.png', {
    // fis-optimizer-png-compressor 插件進行壓縮,已內置
    optimizer: fis.plugin('png-compressor')
});

  配置好之後命令行進入app目錄下,輸入如下命令(即整體創建到app父級目錄下的build目錄下,即生產環境下):

fis3 release -d ../build

此時再看看build目錄下的文件如下圖:

仔細看有md5戳,文件都是壓縮後的,自動生成雪碧圖(此例子是模仿fis3官網的一個例子,如有誤請指出~)。

最後更新:2017-11-05 11:35:18

  上一篇:go  Gulp如何編譯sass
  下一篇:go  什麼是WebPack,為什麼要使用它?