一、FIS是什么

在做项目的时候,用到部门内部前端人员开发的fiskit构建工具,经过这次项目基本把它的配置弄清楚了,fiskit构建工具是基于FIS的,所以自己也准备学习FIS,以便更好的理解。

后来在网上查阅了相关文件,才发现FIS是百度开发的,网上人说FIS适用于团队开发。FIS是类似于Grunt,Gulp,Webpack的一种前端构建工具,FIS3是面向前端的工程构建工具,

用于解决前端性能优化、资源加载(异步、同步、按需、预加载、依赖管理、合并、内嵌)、模块化开发、自动化工具、开发规范、代码部署等问题。看了这一句我也挺懵的,所

以决定仔细研究一番。

二、FIS:构建

  • fis.match('',{})

    这个配置方法的第二个参数必须是一个对象,之前误写成函数,一直在报错。
fis.match('*.css',{
useHash:true,
release:'/static/$0'
})
  • 重要特性

    (1)规则覆盖

    如果有两条规则A和B,他们同时命中了test.js,如果A在B的前面,B的属性会覆盖A的同名属性,不同名属性追加到test.js的File对象上。
fis.match('*',{
release: '/dist/$0'
}) fis.match('test.js',{
useHash:true,
release: '/dist/js/$0'
}) //这时候test.js分配到的属性是
{
useHash: true,
release: '/dist/js/$0'
}

(2)fis.media(''):这个只传递一个参数,表示配置所属的环境(媒体类型)

这个方法提供多种状态功能,比如有些配置是在开发环境下使用,有些配置是在生产环境下使用。

fis.media('prod').match('*.js',{
optimizer: fis.plugin('uglify-js')
}) fis3 release prod

注意:media dev已经被占用,所以默认情况下不传参数即为dev环境。

(3)fis3 inspect :查看特定media的分配情况

  • 文件指纹:即对文件加个指纹,指纹即在文件名后面加上MD5后缀。
  • 压缩资源:即对图片、js、css进行压缩。
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')
});
  • cssSprite图片合并

    压缩了静态资源,还可以对图片进行合并,来减少请求数量

最新文章

  1. .net FTP上传文件
  2. JavaWeb基础学习体系与学习思路
  3. iOS开发之版本控制(SVN)
  4. Beta版本冲刺———第三天
  5. C#如何在子窗体获取父窗体的实例
  6. Garbage Collection C++
  7. PHP 载入图像 imagecreatefrom_gif_jpeg_png 系列函数
  8. webSocket实现web及时聊天的例子
  9. ip的正则表达式 完美版
  10. odoo 的 拉式 和 推式 库链
  11. Android.mk 的含义
  12. Mac下安装多版本python
  13. DLL加载,设置相对路径
  14. Android开发中遇到的问题(四)——Android中WARNING: Application does not specify an API level requirement!的解决方法
  15. python三级菜单实例(傻瓜版和进阶版)
  16. Java基础七(Eclipse工具)
  17. 微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书
  18. Nginx作为负载均衡器upstream
  19. discuz回贴通知插件实现-配置邮件服务器
  20. 在sqlite中,如何删除字段? how to drop a column in sqlite

热门文章

  1. mac终端配色
  2. hdu 2063 过山车 二分匹配(匈牙利算法)
  3. 【C++自我精讲】基础系列六 PIMPL模式
  4. VideoJS 与 Framework7 中 fastclick 冲突问题
  5. 模板为webpack的目录结构
  6. YAML中使用Jinja模板以{{ foo }}开头需要整行加双引号
  7. c++鼠标点点,获取坐标值,放入到txt文件中
  8. csu 1770按钮控制彩灯实验(树状数组)
  9. Java学习(匿名对象、内部类、包、import、代码块)
  10. Knockout介绍