Skip to content

Instantly share code, notes, and snippets.

@oxUnd
Last active August 29, 2015 13:57
Show Gist options
  • Save oxUnd/9774999 to your computer and use it in GitHub Desktop.
Save oxUnd/9774999 to your computer and use it in GitHub Desktop.

FIS vs FIS+

FIS和FIS+的争议诞生之初就开始了,用FIS的同学一上来就会问“FIS和FIS+有什么区别呀?”。鉴于此,大概说一下FIS及FIS+的历史及其区别。

FIS产生之初定位就是做一个内核,提供一套编译体系以及一套静态资源管理的设计思路及其本地调试。编译体系可以简单通过配置+插件的方式任意扩展。FIS+就通过扩展实现了一套适合于后端是PHP+Smarty3的编译体系,然后在后端实现了静态资源管理,提出了诸如quicklingi18nfis-plus(default)之类的解决方案。这块值得说明以下的是解决方案fis-plus其实它和编译体系的命令包取了相同的名字。下面详细说明编译体系、静态资源管理及本地调试。

编译体系

整个编译体系还有很大一块内容是目录规范,还有一块是以文件类型为基础的插件体系。

FIS是没有目录规范的,你源码怎么放产出也怎么放。但FIS+不同,有一套成型的目录规范,规定了js怎么放,css怎么放,以及模块如何划分,模块之间如何引用资源,如何引入js等等。

当然为了满足后端php+smarty3的以及静态资源管理,FIS+提供了一些插件。比如extlang,require-async用来分析被标签{%script%}{%/script%}包裹的js,smarty-xss是用来自动XSS转义的等。

说到这里在整个编译体系,FIS+扩展了FIS,可以比喻成长方形和正方形的关系。

静态资源管理

FIS提供了一套思路,用产出的map.json作为实现的引子,但它没有做实现。 FIS+里面真正实现了这个思路,引出了后面诸多解决方案以及自动打包。

本地调试

FIS集成了一个本地调试服务器,小巧劲爆。解决了一切不会搭建服务器以及感觉搭建服务器费时费事的同学的所有需求。FIS+扩展自FIS,必然是有它所有的功能,这个也不例外。FIS+还提供了本地数据模拟,URL模拟转发(小路由),以及能够提供本地跑起项目的测试框架(别被这个字眼吓到,就是一个display模板功能)

当然这个思路也包含在FIS的集体架构中,参见文档什么是FIS

综述

FIS+之于FIS是一个扩展,是一个添加了业务场景的体系,不光是编译体系层面更多的是后端静态资源管理上。就好比是MIUI至于Android原生系统。

FIS+是定制给PHP+Smarty3后端架构下的一整套方案。而如果后端是Java亦或是Python,那么可以像FIS+这样扩展FIS,扩展一整套的方案,可以叫fis-java,fis-python疑惑其他。整个定制的过程文档,都会在FIS官网扩展一栏相继推出。

当然FIS小组后续也会推出不同后端架构下的成套方案。

编外话

  • 为啥会给大家带来这么大的困惑呢?

    主要的原因是名字取的不好,其实fis-plus的前身叫fis-pc,随着业务的发展fis-pc不单单能满足PC的各种需求,连无线都包揽,这样依赖不得不改名字了。为了向下兼容(fis-pc时代命令行就是fisp)。就拍脑袋叫fis-plus了。大概寓意是作为第一个官方定制版的意思。如果取名为orra,trigger,secret,boluo,nana之类的就不会有这个问题了

  • 为啥FIS官网开始宣传FIS+了呢?

    受到上一个问题的影响,FIS-PLUS也要开源,总不能同时维护一个FIS一个FIS-PLUS的官方网站吧。这样一来带给内部人员困惑给外部人员也是个困惑。虽然可以说明,但依然少不了需要重复说明的囧况。而且,如果没有静态资源管理这套方案,真的无法体现FIS的无比强大。正如官网提到,不管你用grunt也好,用gulp也好,用make也好只要实现了FIS说到的那几块,那么它就是一个FIS。

  • 其他感想

    假设FIS起初就是一个kernel,无法跑起来,需要通过扩展的FIS+才能跑起来会不会让大家更好理解。比如pngquant的图片压缩库libimagequant 。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment