百度親民前端構建工具fis3

<h1>什么是fis3?</h1>

<p style='color:blue'>FIS3 是面向前端的工程構建工具。解決前端工程中性能優化、資源加載(異步、同步、按需、預加載、依賴管理、合并、內嵌)、模塊化開發、自動化工具、開發規范、代碼部署等問題.</p>
<h1>安裝:</h1>
<code style='font-size=14px'>npm install -g fis3</code>
<p style='color:red'>當出現以下圖形則表示安裝成功</p>
<pre>
$ fis3 -v

[INFO] Currently running fis3 (/Users/Your/Dev/fis3/dev/fis3)
v3.0.0
/\\\\\\\\ /\\\\\\ /\\\\\
/\/////////// /////\/// /\/////////\
/\\ /\\ //\\ ///
/\\\\\\ /\\ ////\
/\/////// /\\ ////\
/\\ /\\ ////\
/\\ /\\ /\\ //\
/\\ /\\\\\\ ///\\\\\/
/// /////////// ///////////
</pre>
<p style='margin:0'>安裝完畢,在介紹之前我來說說我為什么使用fis。fis出的比較早,是國內百度出的,但前端工具這一塊很多都是國外流行傳近國內的,所以知道fis的人還是比較少的。我自己英語不好,嫌查文檔不方便,就偷了個懶,選擇fis作為我的開發工具(因為文檔都是中文的~~)。還好fis經過慢慢的改進,到了fis3已經很強大了。</p>
<p style='margin:0'>
fis有很多功能,但是早期對于我來說fis的熱更新對我來說幫助非常大,快速靈活的搭建本地服務,讓我的開發效率大大提高。如果你是剛剛接觸前端這門職業并且沒有或者還沒有找到一個合適的開發工具,不妨試試fis3,或許這就是你想要的。</p>

<h1>先起個服務</h1>
<blockquote>在實際開發項目的時候,前端除了寫靜態頁面,還有和后臺的交互也是肯定少不了,所以這個時候我們就需要在本地起一個服務來保證數據的正確獲取和發送。</blockquote>
fis起服務非常的簡單和方便,首先進入項目頁面:


fis1.png

按住shift鍵同時右鍵點擊目錄空白處,選擇“在此處打開命令窗口”:


fis2.PNG

此時就彈出在當前目錄路徑下的命令窗口:
fis3.png

輸入<code style='font-size=14px'>fis3 release</code>回車

fis4.png

完成后再輸入<code style='font-size=14px'>fis3 server start</code>回車

fis5.png

如果服務啟動成功會自動打開瀏覽器,訪問 http://127.0.0.1:8080,這就是我們發布在本地的項目;如果項目根目錄下有index.html,會自動打開index頁面。
我們也可以手動輸入http://127.0.0.1:8080(本地訪問)或者http://192.168.0.106:8080(外網訪問,就是命令窗口服務啟動成功后下面的那個網址);
<h2>熱更新</h2>
本地服務是起起來了,但是我們開發項目的時候每次改動后想在瀏覽器看到效果,就要重復<code style='font-size=14px'>fis3 release</code>+回車,這顯然不是我們想要的。
所以我們的在release的時候給他加上參數:
<code style='font-size=14px'>fis3 release -wL</code>
這樣fis就會對本地文件進行監聽,一旦本地文件有變化,就會在瀏覽器實時的更新出來~(是不是很棒,效率可是大大的提高哦)
<h1>構建</h1>
<blockquote>fis的本地服務啟動了,其實就算入了門,可以應付日常的開發了,但是對于整個項目來說,fis還有更強大的功能。</blockquote>
fis之所以叫構建工具是它可以像搭積木一樣把零散的資源與代碼構建成一個完整的項目的能力。
而這些能力是通過fis-conf.js來實現的。在fis-conf.js中定義處理項目資源的規則。FIS3 定義了一種類似 CSS 的配置方式固化了構建流程,讓工程構建變得簡單。
like this:
<code style='font-size=14px'>
fis.match('.js', {
useHash: false
});
fis.match('
.css', {
useHash: false
});
fis.match('.png', {
useHash: false
});
</code>
<h3>文件指紋</h3>
文件指紋,唯一標識一個文件。在開啟強緩存的情況下,如果文件的 URL 不發生變化,無法刷新瀏覽器緩存。一般都需要通過一些手段來強刷緩存,一種方式是添加時間戳,每次上線更新文件,給這個資源文件的 URL 添加上時間戳
<pre>
</pre>
而 FIS3 選擇的是添加 MD5 戳,直接修改文件的 URL,而不是在其后添加 query。
對 js、css、png 圖片引用 URL 添加 md5 戳,配置如下;
<pre>//清除其他配置,只剩下如下配置
fis.match('
.{js,css,png}', {
useHash: true
});</pre>

文件變化:


Paste_Image.png

<h3>資源合并</h3>
為了減少資源網絡傳輸的大小,通過壓縮器對 js、css、圖片進行壓縮是一直以來前端工程優化的選擇。在 FIS3 中這個過程非常簡單,通過給文件配置壓縮器即可。
<pre>// 清除其他配置,只保留如下配置
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')
});</pre>

<h3>CssSprite圖片合并</h3>
壓縮了靜態資源,我們還可以對圖片進行合并,來減少請求數量。
FIS3 提供了比較簡易、使用方便的圖片合并工具。通過配置即可調用此工具并對資源進行合并。
FIS3 構建會對 CSS 中,路徑帶 ?__sprite 的圖片進行合并。為了節省編譯的時間,分配到 useSprite: true 的 CSS 文件才會被處理。
<pre>li.list-1::before {
background-image: url('./img/list-1.png?__sprite');
}

li.list-2::before {
background-image: url('./img/list-2.png?__sprite');
}</pre>
<pre>// 啟用 fis-spriter-csssprites 插件
fis.match('::package', {
spriter: fis.plugin('csssprites')
})

// 對 CSS 進行圖片合并
fis.match('*.css', {
// 給匹配到的文件分配屬性 useSprite
useSprite: true
});</pre>

<h1>結束語</h1>
對于fis3我就介紹到這里了,如果想了解更多fis3其他的功能,請看:
<a >官方文檔</a>
最后補充一句,fis3開發常規項目是完全夠用了,對新手友好,文檔也詳細。但是如果想使用vue,react這種要使用專門的文件做開發的框架,webpack肯定是首選,但是webpack的學習成本太大對新手不友好,所以這里推薦UC團隊基于fis做的二次開發的構建工具<a >Scrat</a>可以作為過渡工具。

<h1>最最后求波關注么么噠ヾ(o???)?ヾ</h1>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,765評論 25 708
  • 前端集成解決方案要求: 模塊化開發。最好能像寫nodejs一樣寫js,很舒服。css最好也能來個模塊化管理! 性能...
    Www劉閱讀 3,044評論 1 20
  • 性能優化方向分類 請求數量: 合并腳本和樣式表, CSS Sprites, 拆分初始化負載, 劃分主域(使用“查找...
    Www劉閱讀 1,787評論 3 8
  • 有種說法,說現代人普遍有三種病——拖延癥、強迫癥和討好癥。甚至,還有人總結出普遍存在的10種病。很多人都表示贊同。...
    羽宙兒閱讀 436評論 0 0
  • 忽然有一天,我也感覺到了職場的險惡,開始擔心,懷疑自己,不知道要怎么辦了?
    阿么米閱讀 162評論 0 0