利用fis3构建前端项目工程
FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化、资源加载(异步、同步、按需、预加载、依赖管理、合并、内嵌)、模块化开发、自动化工具、开发规范、代码部署等问题,首先来简单的实现资源合并压缩提高性能等问题。
安装fix3
npm install -g fis3
创建项目目录
cd 进入此目录中初始化,执行
fis3 init
对需要的插件进行安装 ,比如安装scss编译插件:
npm install -g --save-dev fis-parser-node-sass
注意:如果 fis-parser-node-sass 安装失败,请卸载nodejs,安装低版本即可
让 fis3 产出能够支持相对路径。
npm install -g fis3-hook-relative
常用fis3插件 http://fis.baidu.com/fis3/docs/common-plugin.html
配置文件
打开fis-conf.js 做相应的配置
// 保持发布使用相对路径
fis.hook('relative');
fis.set('domain_test', '');
// 预发布环境
fis.set('domain_pre', 'http://test.zuobaiquan.com');
// 线上环境
fis.set('domain_build', 'http://zuobaiquan.com');
// 定义版本号
fis.set('version', '1.0.0'); fis.set('project.files', [
"tpl/**/*.html"
]); fis.set('project.files', [
'*.css',
'js/**',
'images/**',
'*.html'
]); fis.match("*", {
relative: true
}) //添加时间戳,解决缓存。
.match('*.{js,css,png}', {
useHash: true
})
.match('::package', {
spriter: fis.plugin('csssprites', {
htmlUseSprite: true,
styleReg: /(<style(?:(?=\s)[\s\S]*?["'\s\w\/\-]>|>))([\s\S]*?)(<\/style\s*>|$)/ig,
margin: 5
})
})
.match('/css/*.scss', {
rExt: '.css',
parser: fis.plugin('node-sass', {
// options...
})
})
.match('css/*.{css,scss}', {
preprocessor: fis.plugin('autoprefixer', {
"browsers": ["Android >= 2.1", "iOS >= 4", "ie >= 8", "firefox >= 15"],
"cascade": true
})
})
.match('/css/*.{scss,css}', {
useSprite: true,
optimizer: fis.plugin('clean-css')
})
.match('/js/*.js', {
parser: fis.plugin('babel-5.x'),
// fis-optimizer-uglify-js 插件进行压缩,已内置
optimizer: fis.plugin('uglify-js')
})
.match('images/*.png', {
optimizer: fis.plugin('png-compressor', {
type: 'pngquant'
})
})
.match('/css/(*.{png,gif})', {
release: '/images/sprite/$1$2'
}); // fis.media('production').match('/js/*.js', {
// parser: fis.plugin('jdists', {
// remove: "debug"
// })
// }) fis.media('test')
.match("*", {
domain: "${domain_test}",
}); fis.media('pre')
.match("*", {
domain: "${domain_pre}",
}); fis.media('build')
.match('*', {
domain: "${domain_build}"
})
如果打包build 不需要某些文件夹,可配置:
fis.match('/tpl/*', {
// 设置 release 为 false,不再产出此文件
release: false
})
开发阶段命令: fis3 server stop && fis3 server clean && fis3 server start -p && fis3 release test --verbose -wLc
预发布: fis3 release pre --verbose -cd ./pre
发布阶段:fis3 release build --verbose -cd ./dist
fis3 server stop //终止服务
fis3 server clean //清除服务目录下的文件
fis3 server start -p 1111 //启动服务,端口号是1111 (不加-p 1111的话默认端口号是8080)
fis3 release test –verbose -wLc //调试模式 不会关闭cmd
项目目录结构

建议安装 fis-parser-babel-5.x 插件,这样就支持 es6、es7 或者 jsx 编译成 es5 啦,是不是很溜!
npm install -g --save-dev fis-parser-babel-.x
fis-conf.js配置:
fis.match('*.js', {
parser: fis.plugin('babel-5.x')
})
源码地址:https://github.com/zuobaiquan/framework/tree/master/基于fis3前端工具构建的静态页面框架
利用fis3构建前端项目工程的更多相关文章
- 如何使用Docker构建前端项目
原文链接 Docker单独部署前端项目和Node项目是非常便捷的,在这里分享一下Docker的使用,主要聊聊它的部署实践.(我是window10专业版安装Docker) Docker Docker是一 ...
- vue 构建前端项目并关联github
这几天尝试用node开发一个网站,后端的接口已经初步开发完成,现在开始构建前端的项目,记录下过程,在学习下吧. 用vue-cli 构建项目,myproject.(构架过程略过) 每次在本地构建项目后和 ...
- Webpack构建前端项目
前言 公司据说要搞前后端分离,趁这两天项目完成的差不多,抓紧时间学习一下前端知识 现在流行前端项目工程化,那么第一个问题就是如何创建工程(项目),第一次玩webpack 通过 NPM 创建项目 # 创 ...
- jenkins自动构建前端项目(window,vue)
我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...
- 如何利用gulp构建前端自动化
1,使用 gulp.watch 来监听文件自动打包 在上篇文章中,介绍了如何利用webpack来为项目做打包编译等工作,其中介绍到在我们开发的时候,经常改动js,因为我们文件是引用编译后的js文件,若 ...
- 简单的利用nginx部署前端项目
网上有很多教程写的一大堆东西,新手可能会有点看不懂,现在我写这篇文章是为了更好的帮助新手,如何将自己的前端项目部署到自己的服务器上. 首先我们必须要有一台自己的ubuntu服务器,如果没有可以去阿里云 ...
- 用gulp替代fekit构建前端项目
https://segmentfault.com/a/1190000003060016 离开qunar有一个多月了,在离开的时候就决定不再用fekit.做出这个决定并不是因为fekit不好,恰恰相反, ...
- 【gulp】gulp + browsersync 构建前端项目自动化工作流
什么是 gulp? gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.gulp.js 是基于 node.js 构建的,利用 node.js 流的威力,你可以快速构 ...
- SpringMVC拓展——利用maven构建springMVC项目
一.构建项目结构 首先需要构建一个符合目录结构的maven项目 file->new->maven project,勾选 create a simple project->next / ...
随机推荐
- (最简单)红米手机5A的USB调试模式在哪里开启的方法
当我们使用安卓手机链接Pc的时候,或者使用的有些APP比如我们公司营销小组当使用的APP引号精灵,之前使用的老版本就需要开启usb调试模式下使用,现当新版本不需要了,如果手机没有开启usb调试模式,P ...
- MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL
例如: ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo FOREIGN KEY(gradeid) REFERENCES grade(id) ON DELET ...
- java新知识系列 二
1:数据库事务隔离以及事务隔离的级别 数据库事务隔离: 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别:为了解决更新丢失,脏读,不可重读(包括虚读和幻读)等问题在标准SQL规 ...
- linux 按行分割文件
$ sudo awk 'NR%2==1{close(p".txt");++p}{print > p".txt"}' test.txt $ sudo spl ...
- js实现表格无缝滚动效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- centos6.5上进行crontab操作
1.service crond start 2. vi /home/cron.ini */ * * * * /home/monitor.sh 3.crontab /home/cron.ini OK
- C# 不用递归,获取无限层级数据
对象属性 public class ResList { public int ID { get; set; } public List<ResList> Child { get; set; ...
- deepin 15.8桌面系统
深度桌面环境是深度科技自主开发的美观易用.极简操作的桌面环境,主要由桌面.启动器.任务栏.控制中心.窗口管理器等组成,系统中预装了 WPS Office.搜狗输入法.有道词典.网易云音乐以及深度特色应 ...
- SQLServer之修改触发器
修改触发器规则 修改CREATE TRIGGER语句以前创建的 DML.DDL 或登录触发器的定义.触发器是通过使用CREATE TRIGGER创建的.这些触发器可以由Transact-SQL语句直接 ...
- 我的第一个python web开发框架(28)——定制ORM(四)
在数据库操作时,新增记录也是必不可少的,接下来我们应用字典的特性来组合sql语句 先上产品新增接口代码 @post('/api/product/') def callback(): "&qu ...