FIS是專爲解決前端開發中自動化工具、性能優化、模塊化框架、開發規範、代碼部署、開發流程等問題的工具框架。javascript
使用FIS咱們能夠快速的完成各類前端項目的資源壓縮、合併等等各類性能優化工做,同時FIS還提供了大量的開發輔助功能php
首先咱們瞭解一下FIS的基本命令css
下面這張圖描述了FIS的整個使用流程html
接下來咱們能夠經過快速入門進一步的瞭解FIS。前端
快速入門除了文檔外,咱們還提供了視頻教程,歡迎你們觀看,看到最後有彩蛋喲-`д´- 傳送門java
FIS使用Node.js開發,以npm包的形式發佈。所以使用FIS須要先安裝Node.js,再經過npm安裝命令進行FIS安裝。node
$ npm install -g fis
$ npm install -g fis@1.9.14 此方法能夠選擇安裝FIS版本
安裝遇到困難?點擊這裏jquery
遇到問題:linux
FIS做爲nodejs模塊發佈託管在 npm上,npm是nodejs的包管理工具。查看npm網站git
用戶須要使用npm install命令來安裝FIS。更多npm使用,執行 npm -h 來查看
因爲npm常常被牆,安裝FIS的時候會出現速度過慢,或者安裝不上的問題 。能夠經過 npm的 --registry
參數指定倉庫。指定國內的npm鏡像來解決npm被牆的問題。
例如:
npm install some-npm-module -g --registry=國內鏡像
即你能夠經過下面的命令使用cnpmjs倉庫安裝FIS
npm install fis -g --registry=http://registry.npm.taobao.org/
注意 若是提示Error: No compatible version found..
,有多是npm版本太低致使,能夠參考 #83 解決
注意 若是提示WARN optional dep failed, continuing fsevents
警告,能夠無視,這個是一個可選依賴包,僅在Mac下可使用。
在介紹FIS的主要功能前,須要先準備一個示例項目。能夠從Github上獲取。
$ git clone https://github.com/hefangshi/fis-quickstart-demo.git
首先咱們能夠經過 fis server start
命令啓動FIS的本地調試服務器功能對構建發佈的項目進行預覽調試
$ fis server start
注意
若是8080端口被佔用,能夠經過 fis server start -p [port]
指定新的端口。
若是沒有java、php環境,能夠經過 fis server start --type node
啓動Node版fis server。
命令執行後內置服務器會一直運行,能夠經過 fis server stop
命令關閉內置服務器。
本地調試服務器啓動成功後,就會自動打開 http://127.0.0.1:8080
,可是此時服務器內沒有任何內容。咱們還須要經過FIS發佈DEMO項目才能進行預覽
$ cd fis-quickstart-demo #進入DEMO目錄 $ fis release #編譯併發布DEMO
fis release
命令會將編譯後的項目發佈至本地調試服務器,再次刷新瀏覽器頁面,咱們就能夠到fis-quickstart-demo項目的主頁了。
資源壓縮一直是前端項目優化中很是重要的一環,使用FIS咱們無需任何配置,只須要一個命令就能夠完成壓縮工做。
$ fis release --optimize
若是以爲參數輸入比較麻煩,實際上也支持參數縮寫,更多的參數能夠參考 fis release -h
或命令行。
$ fis release -o
FIS構建並不會修改源代碼目錄中的內容,而是擁有獨立的產出的目錄,FIS默認的產出目構錄能夠經過 fis server open
打開,你也能夠經過 fis release -d path/to/output
指定你但願的輸出目錄,詳情能夠參考FAQ
查看一下網站的靜態資源,咱們會發現腳本、樣式、圖片資源都已經壓縮完成。無需額外的插件和配置編寫,一條命令就完成了壓縮工做,是否是很是方便快捷?
FIS默認會調整全部資源引用的相對路徑爲絕對路徑,若是隻是單純的但願對項目的腳本、樣式、圖片進行壓縮,不但願對資源引用地址作調整,能夠直接使用基於FIS封裝的spt。
FIS可以根據靜態資源的內容自動生成文件版本,自動更新資源引用路徑,解決緩存更新問題,告別手動更新時間戳。
咱們經過開啓 --md5
參數,爲項目中的靜態資源添加md5版本號
$ fis release --optimize --md5 # fis release -om
刷新頁面,咱們能夠看到全部資源均加上了md5版本號
仍是喜歡時間戳?沒問題,FIS也能夠知足你的需求,點擊這裏
FIS能夠經過pack來進行資源文件的合併,好比咱們須要將DEMO中的公共庫文件打包在一塊兒,能夠修改fis-conf.js配置,加入pack配置
fis.config.set('pack', { 'pkg/lib.js': [ '/lib/mod.js', '/modules/underscore/**.js', '/modules/backbone/**.js', '/modules/jquery/**.js', '/modules/vendor/**.js', '/modules/common/**.js' ] });
設置完pack後,FIS默認只會進行文件打包,不會對頁面中的靜態資源引用進行替換,咱們能夠經過引入後端靜態資源管理來加載打包模塊。不過也能夠利用fis-postpackager-simple插件,能夠自動將頁面中獨立的資源引用替換爲打包資源。
FIS的編譯系統擁有一個使用簡單、擴展方便的插件體系,這套插件體系保證了FIS編譯工具的靈活性和生命力。這裏咱們簡單介紹一下FIS插件的安裝方法,更加詳細的插件系統介紹能夠查看配置API modules。
插件的安裝分爲兩步,首先咱們須要經過npm包管理工具進行插件安裝
$ npm install -g fis-postpackager-simple
fis-postpackager-simple插件是提供給純前端應用的打包合併插件,其餘定製解決方案,如
fis-plus
、yogurt
等不須要這個插件,須要查看各自的文檔瞭解使用方式。
插件安裝到本地後,咱們還須要經過項目配置文件開啓插件,修改項目根目錄下的fis-conf.js配置,開啓fis-postpackager-simple插件
$ cd fis-quickstart-demo $ vi fis-conf.js #vi是linux下的文本編輯器,windows用戶能夠選用任意文本編輯器對fis-conf.js文件進行編輯。
//file : fis-conf.js fis.config.set('modules.postpackager', 'simple');
爲了開發調試時更加方便 fis release
默認不會合並資源,在指定了 --pack
參數後,FIS纔會進行打包合併處理。
$ fis release --optimize --md5 --pack # fis release -omp
再次瀏覽咱們能夠發現原有的基礎類庫引用已經被替換爲了 lib.js
,關於fis-postpackager-simple插件更多的靜態資源處理策略和使用方法,請參考fis-postpackager-simple。
利用simple插件,咱們還能夠按頁面進行自動合併,將沒有經過pack設置打包的零散資源自動合併起來。
//file : fis-conf.js //開啓autoCombine能夠將零散資源進行自動打包 fis.config.set('settings.postpackager.simple.autoCombine', true);
再次運行FIS構建項目
$ fis release -omp
咱們會發現剩餘的零散資源已經被自動合併了。
經過上述幾個步驟,咱們已經成功將腳本資源和樣式表資源進行了合併,可是爲了進一步的減小HTTP鏈接數,咱們還能夠對引用的圖片資源進行進一步的合併。
用於圖片合併的插件csssprites已經在FIS中內置了,所以無需安裝,只須要在fis-conf.js的配置中開啓便可
//爲全部樣式資源開啓csssprites fis.config.set('roadmap.path', [{ reg: '**.css', useSprite: true }]); //設置csssprites的合併間距 fis.config.set('settings.spriter.csssprites.margin', 20);
使用csssprites合併的圖片須要在圖片路徑處添加query標識,示例項目中已經預先添加,更詳細的使用方法能夠參考使用文檔
再次運行FIS構建項目
$ fis release -omp
刷新一下,添加幾個待辦項,咱們會發現全部待辦項的圖片都合併在了一張圖片中。
使用FIS能夠方便的將各類異構語言轉換爲前端語言,好比說能夠將CoffeeScript編譯爲JavaScript、Less編譯爲CSS、前端模板預編譯等等,而且能夠作到各類異構語言無縫混用,咱們以Less爲例演示如何使用FIS來擴展前端開發語言。
更多的語言擴展類插件能夠查看更多插件
$ npm install -g fis-parser-less
//file: fis-conf.js //後綴名的less的文件使用fis-parser-less編譯 //modules.parser.less表示設置後綴名爲less的文件的parser,第二個less表示使用fis-parser-less進行編譯 fis.config.set('modules.parser.less', 'less'); //將less文件編譯爲css fis.config.set('roadmap.ext.less', 'css');
在fis-conf.js同目錄編寫一個LESS文件
body { .container { width: 980px; } }
使用發佈到output目錄中
$ fis release -wd output
能夠看到在output目錄中,原有的less文件已經被編譯爲了css文件
body .container { width: 980px; }
因爲咱們添加了 -w
參數,你還能夠隨意修改LESS文件,FIS將會自動監聽文件修改,自動編譯發佈CSS文件
經過文件監視功能,咱們能夠要求FIS在項目文件出現修改時,自動增量構建項目文件。而且增量構建是考慮了各類嵌入關係的,好比a.css文件內嵌了b.css文件,那麼當b.css文件修改時,FIS會自動從新構建a.css和b.css兩個文件。
可使用快速入門中的fis-quickstart-demo試試看,首先開啓文件監聽功能
fis release --watch #fis release -w
隨意修改項目內容,返回頁面刷新便可查看到相應的變化。
咱們只須要在文件監視的參數基礎上添加 --live
或 -L
參數便可實如今項目文件發生修改後,自動刷新頁面的功能,大幅提升頁面製做效率。
fis release --watch --live #fis release -wL
隨意修改項目內容,頁面將會應用修改並自動刷新。
要求瀏覽器環境支持WebSocket。
經過配置咱們能夠快速的將FIS的編譯結果上傳至指定的文件夾甚至遠程服務器與後端聯調,結合文件監視、自動刷新功能咱們能夠作到修改文件後自動更新遠程服務器內容,並刷新調試頁面。詳細配置能夠參見deploy。
更多的輔助開發能力能夠參考命令行。
三條命令,知足你的全部需求
執行 fis --help 讓咱們來看一下fis命令的相關幫助:
Usage: fis <command>
Commands:
release build and deploy your project
install install components and demos
server launch a php-cgi server
Options:
-h, --help output usage information
-v, --version output the version number
--no-color disable colored output
正如你所見,使用fis你須要——也只須要——記住三條命令:
接下來,就讓小編分別介紹這三個命令的使用,見證奇蹟的時刻到了。。。
難度等級:★☆☆☆☆
install命令被設計用來 各類安裝,不管你是想初始化一個模塊,仍是想下載一個前端基礎庫,亦或下載一份配置文件,總之但凡開發須要的,只要fis倉庫裏有,你就用它來安裝就對了。 理論上任何資源均可以經過這個命令來獲取,由於它的實現很是簡單: 從fis代碼倉庫下載->解壓到當前目錄。
少說多練,我們先來裝個小東西瞧瞧:
$ fis install firstblood-demo install [firstblood-demo@latest]
若是你在執行命令的目錄下發現了一個叫firstblood的目錄,恭喜你,你已踏出前端工業化之路的第一步啦!
難度等級:★★★☆☆
release是一個很是強大的命令,它的主要任務就是進行代碼的 編譯 與 部署,它的參數囊括了前端開發所需的各類基礎功能:
添加 --dest [path|name] 或 -d 參數,來指定編譯後的代碼部署路徑,支持發佈到 本地目錄、本地調試服務器目錄、遠程機器目錄(須要配置),它與--watch參數配合使用,可讓你的代碼保存就上傳!並且--dest值支持逗號分隔,這也就意味着,你 一次編譯能夠同時發佈到本地以及多臺遠程機器上!舉幾個栗子:
發佈到fis server open目錄下用於本地調試
fis release
# or
fis release --dest preview
發佈到項目根目錄的output目錄下, 注意,這裏的output實際上是一個內置的部署配置名,而不是一個目錄名。
fis release -d output
發佈到相對 工做目錄
的路徑
fis release -d ../output
發佈到絕對路徑
fis release -d /home/work/ouput
# win fis release -d d:/work/output
使用配置文件的 deploy節點配置 進行發佈,此配置可將代碼上傳至遠端
fis release -d remote
以上全部發布規則任意組合使用(一次編譯同時上傳到多臺遠端機器 & 項目根目錄下的output & 調試服務器根目錄 & 本地絕對路徑)
fis releaes -d remote,qa,rd,output,preview,D:/work/output
添加 --md5 [level] 或 -m [level] 參數,在編譯的時候能夠對文件自動加md5戳,今後告別在靜態資源url後面寫?version=xxx的時代
添加 --lint 或 -l 參數,支持在編譯的時候根據項目配置自動代碼檢查
添加 --test 或 -t 參數,支持在編譯的時候對代碼進行自動化測試
添加 --pack 或 -p 參數,對產出文件根據項目配置進行打包
添加 --optimize 或 -o 參數,對js、css、html進行壓縮
添加 --domains 或 -D 參數,爲資源添加domain域名
初步瞭解以後,讓咱們對剛剛下載的項目作一次編譯,look at me:
$ cd firstblood $ fis release --md5 --dest ./output [WARNI] missing fis-conf.js
這裏有個小小的warning,說找不到fis的配置文件,我們不用管它,由於咱們要體驗 零配置 使用。接下來進入到firstblood/output目錄看一下產出的文件,尤爲是index.html,你將看到fis的自動化工具對 html、js、css各自擴展了三種語言能力:
有了這三種語言能力,你的團隊前端工業化水平將有很大的提高,由於:
ok,回到剛剛的firstblood示例項目,進入到output目錄,你將看到:
接下來,咱們使用install命令安裝一個配置文件,用於 調整文件編譯後的部署路徑 :
$ fis install firstblood-conf
此時firstblood項目目錄下會多出一個fis-conf.js文件,讓咱們看一下里面的內容:
fis.config.merge({ roadmap : { domain : { //全部css文件添加http://localhost:8080做爲域名 '**.css' : 'http://localhost:8080' }, path : [ { //全部的js文件 reg : '**.js', //發佈到/static/js/xxx目錄下 release : '/static/js$&' }, { //全部的css文件 reg : '**.css', //發佈到/static/css/xxx目錄下 release : '/static/css$&' }, { //全部image目錄下的.png,.gif文件 reg : /^\/images\/(.*\.(?:png|gif))/i, //發佈到/static/pic/xxx目錄下 release : '/static/pic/$1' } ] } });
刪除一下output目錄,再次執行編譯命令:
$ fis release --md5 --domains --dest ./output
就能夠看到,fis調整了編譯產出的目錄結構。編輯output目錄下的index.html,還會發現,fis將全部引用資源的地方也都調整爲了發佈路徑,全部css也自動添加了域名!
fis release命令還有強大的自動上傳功能,這篇文檔不會詳細介紹此功能的使用方式,但小編能夠先發個截圖表示一下。截圖中顯示的是我在windows下編譯了firstblood項目,而後自動同步到個人linux測試機上的截圖。以後我修改了index.html文件,它又幫我秒傳上去了,嚯嚯!
當你學習到這裏時,恭喜你,你已掌握了F.I.S自動化/輔助開發工具的大部分功能,下面一條命令,會給你帶來更爽的開發體驗。
難度等級:★★☆☆☆
考慮到工程師須要在後端程序沒開始的時候就能寫點東西看看效果,或者離開公司在別處與妹子把酒言歡時忽然來了靈感要寫碼,沒有一個小巧的調試服務器怎麼能行?!fis團隊將本地調試服務器做爲一項重要功能來開發,賦予工程師無處不在的寫碼調試能力。不要小看這個調試服務器,它是特別定製的,使用php-java-bridge技術實現,完美支持運行php程序,能夠比較真實 的模擬產品線線上運行環境。
fis的調試服務器依賴於用戶本地的 jre 和 php-cgi 環境,因此:
搞定環境後,讓咱們來啓動調試服務器看看:
$ fis server start checking java support : version 1.6.0 checking php-cgi support : version 5.2.11 starting fis-server on port : 8080
不須要再使用調試服務器時,能夠經過
fis server stop
關閉
服務器啓動以後,它會自動檢查環境,最後告訴你它監聽了8080端口,這個時候,你的瀏覽器應該打開了一個調試服務器根目錄的瀏覽頁面,地址是 http://localhost:8080/。
在剛剛的firstblood項目中執行命令:
$ fis release --md5 --optimize --watch
如今,fis已經將編譯好的代碼發佈到調試服務器中啦,刷新瀏覽器,你會看到咱們的firstblood示例項目的運行效果。此時,你修改項目文件都將自動編譯併發布到調試服務器目錄下,看看頁面源代碼,你會發現更多驚喜!順便恭喜你,至此你已徹底掌握了fis的基本用法,你能夠藉助fis這個利器去挑戰大型商業產品開發了!