FIS3 快要發布了
原文 http://fex.baidu.com/blog/2015/06/fis3-pre/
就在過去的若干月里面,FIS 團隊和 @fouber 一起就 FIS 發布以來一年多的使用情況做了一些總結,并且對其不完善地方做了抽象,終于確定了 FIS 的下一代 FIS3。如今 FIS3 在 FIS 團隊的努力下快要發布了;
先來個 里程碑 時間吧
- 6月14日 FIS3 第一個項目上線
- 6月30日 FIS3 GitHub 倉庫正式開放,正式發布
FIS3 快要來了,那么 FIS3 到底有哪些新奇的地方;
2013 年上 FIS 在 @berg @walter @fouber 帶領下的 FIS 團隊的努力下誕生,并且解決了諸多前端工程問題以及給前端工程化一種新的思路。包括但不限于在模塊化開發、自動化工具、資源加載、性能優化等等方面的突破。
FIS 通過對多年的前端項目的支持以及總結,發現前端語言不可或缺但是確實缺少的 三種語言能力 ,資源內嵌、定位資源、依賴聲明。有了這 三種語言能力 就可以漂亮的解決各種前端工程需求下的性能優化、模塊化開發等等問題。
FIS 提供工具增加了這 三種語言能力 ,并且給了一種資源加載管理的思路,基于靜態資源表的靜態資源管理方法,合理的解決了資源加載中的按需、同步/異步、依賴管理、緩存、合并、內嵌等工程問題。
FIS3 在 FIS 的基礎上提升了易用性以及可擴展能力。用一種更簡單的配置方法、更全面的插件擴展支持來為打造前端工程方案提供助力;
FIS3 面向前端的工程構建系統,解決前端工程中性能優化、資源加載
(異步、同步、按需、預加載、依賴管理、合并、內嵌)、模塊化開發、自動化工具、開發規范、代碼部署等問題。
易于理解的配置
FIS3 提出了這樣一種配置方式,它就像是 CSS 一樣后面書寫的規則會覆蓋前面前面書寫的規則,像 CSS 有一些固定的規則供用戶設置;文件分配到的屬性,將會在編譯階段決定此文件將如何處理。
當我們要完成這樣一些事情
除了某些 js 文件 exclude.js
以外,其他的 js 文件都進行壓縮。
// vi fis-conf.js fis.match('*.js', { optimizer: fis.plugin('uglify-js') }); fis.match('exclude.js', { optimizer: null });
在開發階段 js 不做壓縮,發布上線時 js 需要壓縮。
// vi fis-conf.js fis.match('*.js', { optimizer: fis.plugin('uglify-js') }); fis.media('dev').match('*.js', { optimizer: null });
fis3 release
壓縮
fis3 release dev
不壓縮
fis.match(selector, props [, important])
給文件分配屬性
FIS3 的 核心配置思想 是通過 給文件分配屬性 來控制工具對文件的處理,比如壓縮、異構語言的解析、資源依賴的收集、代碼檢查等;
一切流程都可擴展
FIS3 重新梳理了流程,文件在 FIS3 中編譯都由用戶指定的插件完成,包括合并、壓縮優化以及對異構語言的解析等。這一切都由你自己掌控。
fis.match('*.less', { parser: fis.plugin('less') }); fis.match('*.{css,less}', { optimizer: fis.plugin('clean-css') });
-
fis.plugin(name [, props])
插件調用接口
FIS3 支持本地 NPM 包的加載,這將意味著你不再需要 npm install -g
安裝一個插件到全局包目錄,而可以加載本地插件了;這樣方便你 插件開發調試 。但為了便于維護,FIS3 建議你最終發布到 NPM 上的插件依然沿用全局安裝。
FIS3 對整個編譯流程提供諸多事件,方便你做特定化需求;并且推出新的插件類型 hook
, hook
插件會在編譯之前做加載,可在其內部綁定一些事件來完成特定的需求,比如相對路徑的支持。
其他特性
- 可擴展三種語言能力語法
- 方便易用的腳手架
- 支持 AMD、commonJS、 Rosetta (web-components) 模塊化方案 (插件提供)
- 模塊化方案可自由定制
-
若干功能改進
-
watch
功能開啟時,修改項目配置文件fis-conf.js
即時生效,不再需要重啟
-
$
FIS3 主要是用戶易用性和擴展能力的提升,定位是方便那些做前端工程方案的用戶能快捷的完成方案定制,我們不期待所有的人都能 拿來即用 ,而我們期待的是 FIS3 真正能使你從 折騰工具 中解放出來,通過幾行配置、依靠 FIS 社區能快速解決你遇到的工程問題。
擴展閱讀
- https://github.com/fex-team/fis/issues/312
- https://github.com/fex-team/fis3-demo
- http://div.io/topic/439
- http://div.io/topic/371
- http://div.io/topic/745