fis-plus 学习笔记
学习了一些fls-plus前端集成的东西;学的很皮毛,很多都是对官网的解释希望与大家分享,并能得到大家的指正。
参考文档:http://oak.baidu.com/fis-plus/document.html;
http://fex.baidu.com/fis-site/docs/beginning/getting-started.html
学习总结:
一:明确fisp能做什么事情;
二:精通fisp的命令,fisp install ;fisp release [options](最重要);fisp server [options];
三:fisp的目录结构;以及生成目录结构;
四:遇到配置问题,打包问题,发布问题,及时参考文档!
首先解释fis-plus是什么东东——FIS-PLUS 是基于 FIS(FIS Front-end Integrated Solution(前端集成解决方案)
是专为解决前端开发中自动化工具、性能优化、模块化框架、开发规范、代码部署、开发流程等问题的前端工程化构建工具。),应用于后端是 PHP,模板是 Smarty 的场景。现在被大多数百度产品使用。
Step1: 为什么要用fis ??
- 前端框架:提供组件加载及管理框架支持,提供前端基础库及组件库。
- 模板框架:提供组件化开发模式支持;配合前端框架收集页面所需要的最小静态资源需求;留有充分的性能优化空间,性能优化对工程师透明。
- 自动化工具:提供基本优化能力;为前端框架、模板框架提供辅助支持。
- 辅助开发工具:提升工程师的开发体验,降低调试、部署成本。
Step2:安装环境:具体步骤参考官网http://oak.baidu.com/fis-plus/document.html;有一点需要注意的就是node的版本,安装fis-sass-plugin/fisp-sass-plugin的插件需要node的低版本,建议使用nvm做node的版本管理工具;
Step3:分模块开发;
——为了发布迭代的方便,拆分成不同的子系统。
——模块的组成结构:同名依赖(page名字和css,js名字相同)
模块名
使用
├── fis-conf.js 自动化的相关命令,类似gulp,grunt;指定namespace;
├── page 页面模板
├── server.conf 它里面可以配置url转发,可以方便在本地模拟ajax
请求等
├── static 放一些不需要组件化的公共库
├── test 和page
下的模板相对应,表明哪个模板用哪个数据文件进行渲染
└── widget 组件,模板组件,JS组件,CSS组件,会被组件化
Step4: 静态资源ID(css,js等的加载路径的变量);
——什么时候使用:A:widget
、require
、html
等smarty插件时,必须指定资源的id;B:require
、require.async
等JavaScript函数,可以使用id
——定义方式:
在namespace:< 资源相对于模块根目录的路径 >;如
Step5:page页面的编写过程;
——引入css,js
——page 中的js,css <%require name="home:widget/a.css"%
>
//home:模块名,
//widget:相对于模块目录的路径
//page名.css:根据同名依赖的原则,会根据page文件夹下页面的文件名,加载相应的css和js;
——引入组件Widget:{%widget name="home:widget/header/header.tpl"%}
——引入组件中的css,js不需要使用{%require%}或link,href;根据同名依赖会自动加载文件名相同的css,js如header.css/header.js: Step6:资源压缩(fis release --optimize/fis release -o)
Step7:添加文件版本(fis release --optimize --md5 # fis release -om FIS能够根据静态资源的内容自动生成文件版本,自动更新资源引用路径,解决缓存更新问题,告别手动更新时间戳。)
Step8:资源合并(fis release -omp 通过pack进行资源文件合并,在fis-config.js里配置)

——图片的合并,通过background-position来显示每个小图,详情使用文档;
Step9:安装插件;npm install -g fis-parser-less;
——在fis-config.js中配置
Step10:常见命令
—— fisp install :一些公共组件,jquery,echarts,还有官网提供的demo;
—— fisp release [options]:
-r [模块名]//部署模块;
--watch/-w //模块变化的监测;
--live/-L //通过livereload插件,编译后自动刷新(偶尔页面加载会卡死在这个livereload上);
--dest/-d //指定部署位置,可以是本地路径,也可以是远程路径;
——在配置文件的deploy节点配置进行发布,可以将代码上传到远端
--md5/-m //在编译的时候可以对文件自动加md5戳,从此告别在静态资源url后面写。(*md戳,是针对有修改的有利于优化发布流程);
--link/-l //自动代码监测;
--pack/-p //根据fis-config.js的配置进行打包;
--optimize/-o //对js,css,html进行压缩;
--domains/-D //为资源添加domain域名; —— fisp server [options] :调用调试服务器;依赖Java的jre和php 的php-cgi环境;
--open //打开发布的文件;
--start //调用服务器,通过8080端口;
--stop //关闭服务器;
--clean //清除发布文件 到这里,基本上就算是fis入门了,感谢阅读与指正,接下来。分享一些小的细节; 一,配置:
模块名:fis.config.set('namespace', 'common');
编码格式:fis.config.set('project.charset', 'gbk');//默认是utf-8;
md5戳长度:fis.config.set('project.md5Length', 8);//默认是7为数;
smarty定界符:fis.config.set('settings.smarty', {
'left_delimiter' : '<{',
'right_delimiter' : '}>'
});
谢谢大家!

fis-plus 学习笔记的更多相关文章
- cocos2dx游戏开发——捕鱼达人mini版学习笔记(二)——MainMenu的搭建
一.创建文件~ MainMenuScene.h MainMenuScene.cpp MainMenuLayer.h MainMenuLayer.cpp 那个场景的搭建就不多说了,那个我的打 ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Android(java)学习笔记216:多线程断点下载的原理(Android实现)
之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1.新建一个Android工程: (1)其中我们先实现布局 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Android(java)学习笔记159:多线程断点下载的原理(Android实现)
之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1. 新建一个Android工程: (1)其中我们先实现布 ...
- 大数据学习笔记——Java篇之IO
IO学习笔记整理 1. File类 1.1 File对象的三种创建方式: File对象是一个抽象的概念,只有被创建出来之后,文件或文件夹才会真正存在 注意:File对象想要创建成功,它的目录必须存在! ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- javaSE学习笔记(15) ---缓冲流、转换流、序列化流
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...
随机推荐
- ubuntu-16.04(linux)使用Reaver爆破wifi密码(路由器的WPS功能漏洞)
路由器的WPS功能 很多路由器都有WPS功能, 这边的WPS不是office工具软件, 而是路由器的一个功能: 路由器中WPS是由Wi-Fi联盟所推出的全新Wi-Fi安全防护设定(Wi-Fi Prot ...
- WebForm 内置对象、数据增删改、状态保持
一.内置对象 1.Response对象:响应请求 Response.Write("<script>alert('添加成功!')</script>"); → ...
- setTimeout小总结
▓▓▓▓▓▓ 大致介绍 今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结 原文:你应该知道的 setTimeout 秘密 主要内容: 1.setTimeout原理 2.se ...
- 使用php实现网站验证码功能【博主推荐】
验证码是网站常用的一项安全措施,也是新人站长较难掌握的一项技能,这里我向大家介绍一简单有效的验证码实现方法. 开始之前 在正式开始之前我们需要打开php的gd2图形库支持(在php. ...
- Struts2 struts.xml配置
<?xml version="1.0" encoding="GBK"?> <!--指定 Struts2 的DTD信息 DTD 指 Docume ...
- ArcGIS制图技巧系列(3)—让地图更有立体感
ArcGIS制图技巧系列(3)-让地图更有立体感 by 李远祥 在前面的章节中,我们已经介绍过各种的地图效果,如发光效果,山体阴影效果,植被填充效果等,所有的这些效果不外乎是各种技术的叠加和技巧的使用 ...
- 史上最牛逼的文件bom头清除代码,万能检测清除php,js等等
做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录 ...
- 私有成员的设置和访问方式——set()和get()方法
在定义类时,为了保证类中成员数据安全性及的封装性,防止成员数据值被任意修改,通常将类中成员属性用private进行修饰. 被private所修改的成员变量,只能在类中访问,跳出本类中,就无法直接访问. ...
- 都能读懂的css3 3D变形效果
css3 3D变形效果 CSS3 transform3D变形 transform的含义是:改变,使-变形:转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换 ...
- js加密
在项目中,经常需要使用加密来保障数据的安全性,虽然可以通过在后台加密再传给前台,但这样无疑会增加后台的服务器的压力.所以在js中使用加密算法也就应运而生了. 一.base64加密 需要引入base64 ...