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这个利器去挑战大型商业产品开发了!