fis-plus 学习笔记

  学习了一些fls-plus前端集成的东西;学的很皮毛,很多都是对官网的解释希望与大家分享,并能得到大家的指正。

  参考文档:http://oak.baidu.com/fis-plus/document.html;

       http://fex.baidu.com/fis-site/docs/beginning/getting-started.html

  首先解释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:使用widgetrequirehtmlsmarty插件时,必须指定资源的id;B:requirerequire.asyncJavaScript函数,可以使用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 //关闭服务器;

到这里,基本上就算是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‘ : ‘}>‘});

 学习总结:    一:明确fisp能做什么事情;  二:精通fisp的命令,fisp install ;fisp release [options](最重要);fisp server [options];  三:fisp的目录结构;以及生成目录结构;  四:遇到配置问题,打包问题,发布问题,及时参考文档!
 
 
 
谢谢大家!
        ?


时间: 2024-11-01 21:41:26

fis-plus 学习笔记的相关文章

黑马程序员_JAVA 基础加强学习笔记

一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();  如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数. 如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数. 2.final特点

Java NIO、NIO.2学习笔记

相关学习资料 http://www.molotang.com/articles/903.html http://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html 目录 1. NIO.NIO.2简介 2. NIO中的关键技术 1. NIO.NIO.2简介 Java中的输入流.输出流都是阻塞式的输入.输出.不仅如此,传统的输入流.输出流都是通过字节的移动来处理的(即使是字符流,在底层也是通过字节流来进行处理的),也就是说,面向

Android(java)学习笔记167:Java中操作文件的类介绍

1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creates a new File instance by converting the given pathname string into an abstract pathname. 2)File(File parent, String child)       Creates a new File i

Java学习笔记——File类之文件管理和读写操作、下载图片

Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数 (boolean) mkdir() 创建此抽象路径名指定的目录  (boolean) mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. (boolean) delete() 删除此抽象路径名表示的文件或目录 (boolean) createNe

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

cocos2dx游戏开发&mdash;&mdash;捕鱼达人mini版学习笔记(二)&mdash;&mdash;MainMenu的搭建

一.创建文件~         MainMenuScene.h   MainMenuScene.cpp   MainMenuLayer.h   MainMenuLayer.cpp        那个场景的搭建就不多说了,那个我的打飞机还有别踩白块的学习笔记里有~ 二.How to do? 1.initBackground(),创建背景~ (1)在init中先获得屏幕的大小,还有加入图片进入缓存 visibleSize = Director::getInstance()->getVisibleSi

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------