吾日三省吾身。css
從一個徹底不相干的行業轉到IT,多多少少都會感到迷茫,不知道學習什麼、從何學起?在幾乎沒有任何經驗的背景下,堅持投遞簡歷,最後終於進入了一個創業公司,開始作起了前端工做。工資勉強維持生活。工做之餘,也在不停的學習。html
項目web頁面可能是用的jsp,項目組leader對html、css、js這塊也不甚瞭解,因此大多數時候都是本身去研究怎麼搞。前端
每次版本更新的時候都會遇到緩存的問題,而後本身就去找解決方案,而後就發現了fis3(http://fis.baidu.com/)這個前端構建工具,感受還挺好用,又適合如今的項目。node
基本用法也很簡單:jquery
fis.match('*.{css,js,png,jpg}', { useHash: true })
能夠自行控制匹配項,有些文件不必定須要加文件指紋,能夠web
fis.match('{reset.css,jquery.js}', { useHash: false })
b. 資源壓縮
一般須要壓縮的資源有css樣式文件,js文件,圖片等npm
// css樣式文件 fis.match('*.css', { // fis-optimizer-clean-css插件已內置 optimizer: fis.plugin('clean-css') }) // js文件 fis.match('*.js', { // fis-optimizer-uglify-js插件已內置 optimizer: fis.plugin('uglify-js') }) // png格式圖片文件 fis.match('*.js', { // fis-optimizer-png-compressor插件已內置,該插件不支持10.xx版本的node,因此須要用的的建議不要升級node optimizer: fis.plugin('png-compressor') })
c. 雪碧圖
fis3能夠對背景圖片自動進行雪碧圖合併,寫樣式的時候,後面加上?__sprite
瀏覽器
li.list1 { background-image: url('./img/list-1.png?__sprite'); } li.list2 { background-image: url('./img/list-2.png?__sprite'); }
// 首先啓用fis-spriter-csssprites 插件 fis.match('::package', { spriter: fis.plugin('csssprites') }) // 對設置了?__sprite的背景圖片合併 fis.match('*.css', { useSprite: true })
d. sass、less預編譯器
sass:須要先安裝fis-parser-node-sass插件
npm install -g fis-parser-node-sass緩存
fis.match('*.scss', { parser: fis.plugin('node-sass'), rExt: '.css', useHash: true // 能夠直接在這裏添加md5戳 });
less:須要先安裝fis-parser-less插件
npm install -g fis-parser-lesssass
fis.match('*.less', { parser: fis.plugin('less'), rExt: '.css' })
頁面中的樣式文件仍然引用原文件
<link rel="stylesheet" href="./css/XXX.less"> <link rel="stylesheet" href="./css/XXX.scss">
d. 預覽與文件監聽
fis3內置server,可使用命令
fis3 server start 開啓內置服務器,默認8080端口,fis3 server stop 關閉服務器。
使用命令
fis3 release -wL 將項目發佈到內置服務器,並開啓文件監聽,在編輯器中修改代碼,保存後會在瀏覽器(推薦使用Chrome)實時更新。
若是靜態資源的訪問路徑與項目根路徑不一致,可使用url配置
fis.match('*.{png,js,jpg,css,scss}', { url: '/src/pages$0' })
這樣就基本知足一個多頁面web項目的要求了。
添加了md5戳,不再須要擔憂緩存問題了