SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
FIS 
架构即⾼高效
FIS 
• FIS是专为解决前端开发中⾃自动化⼯工具、 
性能优化、模块化框架、开发规范、代 
码部署、开发流程等问题的⼯工具框架。
从简到繁,Web前端应⽤用开发
JS 
CSS 
原始开发 
js/css资源是内嵌的
还有 
js/css外联了 
1 
2 
1 
2
当遇到上线
为了正确的运⾏行,会在静态 
资源前加上统⼀一的PATH 
1 
2 
1 
2 
<?=static_path()?> 
? 
后端开发需要关⼼心 
static_path
1 
2 
1 
2 
约定 
1. 所有的静态静态资源上线到static下 
2. 静态资源路径统⼀一写成/static 
? 
源码路径和线上路径不⼀一致 
维护⿇麻烦
规范 
• 源码的静态⽂文件都放到static⺫⽬目录下 
• static⺫⽬目录下的资源引⼊入时都需要以`/static/ 
xxxx`的⽅方式引⼊入
• 当要上CDN? 
• 当要做功能迁移的时候要修改静态资源线上存放的路 
径? 
• 国际化 
• 。。。
√ 开发时只需关⼼心源码路径。
⼤大型前端项⺫⽬目开发 
越来越多的⼈人 
越来越多的代码 
可维护性 
开发效率 
性能
提⾼高维护性 
• 开发⺫⽬目录规范 
• 拆分组件 
• JS模块化开发
. 
├── index.html 
└── static 
├── css 
│ ├── main.css 
│ ├── nav.css 
│ └── tab.css 
├── js 
│ ├── main.js 
│ ├── nav.js 
│ └── tab.js 
└── lib 
. 
├── nav.html 
├── tab.html 
├── index.html 
└── static 
├── lib 
├── css 
│ ├── nav.css 
│ ├── tab.css 
│ └── main.css 
└── js 
├── main.js 
├── nav.js 
└── tab.js 
⼀一般拆分 
拆分模板 
复⽤用性,需要拆分模板(html)
. 
├── nav.html 
├── tab.html 
├── index.html 
└── static 
├── lib 
├── css 
│ ├── nav.css 
│ ├── tab.css 
│ └── main.css 
└── js 
├── main.js 
├── nav.js 
└── tab.js 
. 
├── index.tpl 
├── tab.tpl 
├── nav.tpl 
└── static 
├── css 
│ ├── main.css 
│ ├── nav.css 
│ └── tab.css 
├── js 
│ ├── main.js 
│ ├── nav.js 
│ └── tab.js 
└── lib 
{%include …%} 
只能通过模板语⾔言搞定了
√ 假设html⽀支持inline,世界将很美好
inline能⼒力延伸 
js 
模板css
. 
├── index.tpl 
├── tab.tpl 
├── nav.tpl 
└── static 
├── css 
│ ├── main.css 
│ ├── nav.css 
│ └── tab.css 
├── js 
│ ├── main.js 
│ ├── nav.js 
│ └── tab.js 
└── lib 
分⽽而治之 
├── index.tpl 
├── static 
│ └── lib 
└── widget 
├── nav 
│ ├── nav.css 
│ ├── nav.js 
│ └── nav.tpl 
└── tab 
├── tab.css 
├── tab.js 
└── tab.tpl
多了⼀一些链接
提升运⾏行性能 
• 静态资源压缩、合并 
• 静态资源强缓存 
• 静态资源CDN 
• 静态资源按需加载
变量相互污染了,需要关⼼心合并顺 
? 序
套⼀一层function解决变量污染 
JS模块化开发
JS模块化开发 
• 显式的调⽤用其他模块 
• 异步按需加载
a 
c 
b 
⼯工具⽣生成 
当加载a时,就知道需要加载b,c
require能⼒力延伸 
js 
模板css
{ 
"res": { 
"common:page/layout.tpl": { 
"uri": "/template/common/page/layout.tpl", 
"type": "tpl", 
"extras": { 
"isPage": true 
} 
}, 
"common:static/mod.js": { 
"uri": "/static/common/mod.js", 
"type": "js" 
}, 
"common:widget/nav/nav.css": { 
"uri": "/static/common/widget/nav/nav.css", 
"type": "css" 
}, 
"common:widget/nav/nav.js": { 
"uri": "/static/common/widget/nav/nav.js", 
"type": "js", 
"deps": [ 
"common:widget/nav/nav.css" 
] 
}, 
"common:widget/nav/nav.tpl": { 
"uri": "common/widget/nav/nav.tpl", 
"type": "tpl", 
"deps": [ 
"common:widget/nav/nav.js", 
"common:widget/nav/nav.css" 
] 
}, 
"common:widget/sidebar/sidebar.async.js": { 
"uri": "/static/common/widget/sidebar/sidebar.async.js", 
"type": "js" 
}, 
"common:widget/sidebar/sidebar.css": { 
"uri": "/static/common/widget/sidebar/sidebar.css", 
"type": "css" 
}, 
"common:widget/sidebar/sidebar.tpl": { 
"uri": "common/widget/sidebar/sidebar.tpl", 
"type": "tpl", 
"extras": { 
"async": [ 
"common:widget/sidebar/sidebar.async.js" 
] 
}, 
"deps": [ 
"common:widget/sidebar/sidebar.css" 
] 
} 
}, 
"pkg": {} 
} 
map.json
后端`require.js` 
• require - 加载⼀一个资源 
• {%require name=“static/a.js”%} -­‐ fis-­‐plus 
• require.async - 异步加载⼀一个资源 
• {%require name=“static/a.js” async=true%} -­‐ fis-­‐ 
plus
{ 
"res": { 
"static/a.js": { 
"uri": "http://cdn.baidu.com/iknow/ 
home/static/a.js", 
"pkg": "p0" 
} 
}, 
"pkg": { 
"p0": { 
"uri": "http://cdn.baidu.com/iknow/ 
home/static/pkg_0.js" 
} 
} 
} 
{%require name=“static/a.js”%} 
散列⽂文件 
http://cdn.baidu.com/iknow/home/static/a.js 
打包结果 
http://cdn.baidu.com/iknow/home/static/pkg_0.js
√ 通过对代码require的分析,⽣生成静态资源依赖表
提升开发效率 
• 前后端分离 
• ⼤大前端 
• ⾃自动化⼯工具
√ 开发时只需关⼼心源码路径 
√ inline 
√ require 
√ 三种语⾔言能⼒力 
√ 性能、可维护性、开发效率达到最优
⼯工程化之路
. 
├── config 
│ └── fis-­‐config.xml 
├── page 
│ └── photo 
│ ├── index.tpl 
│ └── test.tpl 
├── static 
│ └── photo 
│ ├── index 
│ ├── layout 
│ ├── ui 
│ ├── use_page_css 
│ └── use_tangram 
├── test 
│ └── page 
│ └── photo 
└── widget 
└── photo 
├── f_use_footer 
├── f_use_header 
├── f_use_js_widget 
├── layout 
├── tag 
└── tag_cssframe 
⺫⽬目录规范
2011.11.30 FIS第⼀一版发布
FIS 1.x的问题 
• 编译期做了太多的事情 
• PHP做⼤大量⽂文本操作,很慢;包括它的正则问题 
• 提供的内嵌、依赖、URL规则各个业务模型都不相同 
• TASK链的⽅方式处理资源
FIS 2.0,简⽽而美的前端集成解决⽅方案⼯工具框架
FIS2 
• 三种语⾔言能⼒力 
• 基于静态资源映射表(map.json)的静态资源管理⽅方案
uri 
三种语⾔言能⼒力inline 
require 
⺫⽬目录规范 
静态资源管理
DEMO

Más contenido relacionado

Destacado

Destacado (9)

Td Presentation Fis Code Verses Codex V1
Td Presentation Fis Code Verses Codex V1Td Presentation Fis Code Verses Codex V1
Td Presentation Fis Code Verses Codex V1
 
Financials
FinancialsFinancials
Financials
 
FIS Platform
FIS PlatformFIS Platform
FIS Platform
 
리플코인자료
리플코인자료리플코인자료
리플코인자료
 
Intro to FIS GT.M
Intro to FIS GT.MIntro to FIS GT.M
Intro to FIS GT.M
 
The Fidor Bank Story, Frank Schwab, Fidor TecS AG
The Fidor Bank Story, Frank Schwab, Fidor TecS AGThe Fidor Bank Story, Frank Schwab, Fidor TecS AG
The Fidor Bank Story, Frank Schwab, Fidor TecS AG
 
[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼
 
[한국핀테크포럼] 제7회 정기포럼
[한국핀테크포럼] 제7회 정기포럼[한국핀테크포럼] 제7회 정기포럼
[한국핀테크포럼] 제7회 정기포럼
 
FIS 2011 Consumer Loyalty and Profitability Report
FIS 2011 Consumer Loyalty and Profitability ReportFIS 2011 Consumer Loyalty and Profitability Report
FIS 2011 Consumer Loyalty and Profitability Report
 

Similar a fis

Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考greengnn
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練32016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3Duran Hsieh
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Frank Cheung
 
美团点评技术沙龙13-酒旅Hybrid架构体系及演进
美团点评技术沙龙13-酒旅Hybrid架构体系及演进美团点评技术沙龙13-酒旅Hybrid架构体系及演进
美团点评技术沙龙13-酒旅Hybrid架构体系及演进美团点评技术团队
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染Ailsa126
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门Xiujun Ma
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editortaobao.com
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
Html&css培训 舒克
Html&css培训 舒克Html&css培训 舒克
Html&css培训 舒克jay li
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Marc Huang
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kaoxwcoder
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析CC
 
高效率的、可维护的Css
高效率的、可维护的Css高效率的、可维护的Css
高效率的、可维护的Csssimaopig
 
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSSjeannewoo
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京Joseph Chiang
 

Similar a fis (20)

Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練32016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?
 
美团点评技术沙龙13-酒旅Hybrid架构体系及演进
美团点评技术沙龙13-酒旅Hybrid架构体系及演进美团点评技术沙龙13-酒旅Hybrid架构体系及演进
美团点评技术沙龙13-酒旅Hybrid架构体系及演进
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
Html&css培训 舒克
Html&css培训 舒克Html&css培训 舒克
Html&css培训 舒克
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)
 
coServ & RWD
coServ & RWD coServ & RWD
coServ & RWD
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
 
高效率的、可维护的Css
高效率的、可维护的Css高效率的、可维护的Css
高效率的、可维护的Css
 
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS
 
Vue ithome
Vue ithome Vue ithome
Vue ithome
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 

fis