FIS插件制作说明
FIS插件制作说明
虽然FIS在使用的过程中,几乎能解决我们遇到的所有前端问题,但总是会有一些特殊的问题是解决不了的,然后就需要上网去找能解决特殊问题的插件,不过一般都是找不到(不然就不叫特殊问题了),所以我们需要自己写插件来实现
一、FIS的运行过程与插件运行的时机
看上面的官网提供的图,就能大致知道原理了,也可以清楚看到,插件基本可以分为编译期间的、打包期间的
二、插件命名方式
举个简单的例子:fis-postpackager-supply
- 一定是
fis
打头 - 中间的
postpackager
表示插件的执行时机,详情可以参考上面的图 - 最后的
supply
就是插件的名字,这个你喜欢叫啥都可以,不要跟别人重复就好了
三、插件加载方式
- 配置文件(
fis-conf.js
)的写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | fis.config.merge({ //设置要加载的插件模块和名字 modules : { //这里的postprocessor对应插件的中间执行时机名字 postprocessor :{ //html表示针对html文件执行include的插件 html : 'include' //include就是插件的名字 } }, //设置插件的参数 settings : { //跟上面对应上 postprocessor : { //include插件的参数列表 include : { host : fis.config.get( 'include-host' ), debug : true , release : false , encode : 'gbk' } } } }); |
- 插件默认是加载全局的(所以我们插件都是全局安装,省事)
- 插件的写法是普通的npm的包是一样的,大致结构如下:
1 2 3 4 | fis-postprocessor-include |-index.js //主入口文件 |-package.json //插件的配置描述与依赖配置等 |-README.MD //readme说明 |
package.json文件写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { "name" : "fis-postprocessor-include" , //版本,每次更新需要修改这里,否则不能发布到npm "version" : "0.0.4" , "description" : "一个fis的插件,支持php的incldue外链文件" , //入口文件 "main" : "index.js" , "keywords" : [ "fis" , "include" ], "author" : { "name" : "作者" }, "license" : "NET-EASE" , //插件依赖其他第三方的插件的列表 "dependencies" : { //名字对应版本 "request-sync" : "1.0.0" , "iconv-lite" : "^0.4.4" } } |
其实看一下,也知道大致里面的字段是做啥的
四、插件的写法
1、编译期间的写法(针对每个文件
进行单独处理
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | module.exports = function (content, file, conf){ //content,字符串,表示当前处理的文件的内容 //file,fis的文件对象,对应的api可以参考官网 //conf,参数配置对象,就是fis-conf.js中配置的 //默认参数:fis,API可以参考官网 //可以用watch来判断当前是否是本地调试 var isLocal = !!fis.cli.commander.commands[0].watch; //可以获取dest的值,来判断当前打包的命令参数,比如fis release -ompDd dist //此时release=dist var release = fis.cli.commander.commands[0].dest; //最后返回处理过的字符串就可以了 return content; } |
2、打包的写法(统一处理)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | module.exports = function (ret, conf, settings, opt){ //ret,打包文件列表的对象 //conf,参数配置对象 //settings和opt都用不上 var map = {}; //用fis的api来循环遍历每个打包的文件,获取需要的打包文件列表 fis.util.map(ret.src, function (subpath,file){ //subpath,文件的相对路径 //file,fis的文件对象 //判断当前处理文件是否html if (!file.isHtmlLike){ //file.getUrl,可以获取打包之后的绝对路径 map[subpath.replace( "/src/" , "" )] = file.getUrl(opt.hash, opt.domain); } }); //最后不需要返回,只是需要在上面针对文件内容进行处理即可 } |
五、补充
1、一些常用的第三方插件介绍
cheerio
:nodejs版的jquery
,解析html的dom,就不需要再用正则匹配了
request-sync
:同步请求外部文件(异步请求,会导致插件直接返回,就相当于没请求)
iconv-lite
:处理gbk
文件时候需要用到,因为nodejs是不支持的
2、发布插件,使用npm的publish命令就可以了
3、FIS的官网地址:FIS链接
手机阅读请扫描下方二维码:
上一篇:css3逐帧动画-飘动旗子
下一篇:css3星球椭圆运动
有没有这么一个可能,我们在写css的时候只需要标准写法,然后插件帮我们自动补全其它各种兼容写法呢
1
555
1
555
555
1
1
1
1
1
1
1
1
1
1
1
我喜欢,请大家鼓掌支持,谢谢
555
看文章的要发表下看法
12345678

12345678

1
12345678

12345678

12345678

12345678

12345678

12345678

传奇私服http://bbs.caipiaodian.com.cn/ GM论坛
传奇私服发布网http://http://www.banshouseo.com/ 传奇私服
传奇私服http://lol.v58.org 传奇论坛
12345678

12345678

12345678

12345678

12345678

12345678

12345678

12345678

12345678

12345678

1

1

1

1

1
1
1
1
555
1
1
1
1
1
1
555
1
555
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1