前后端分离工具之ftl-server
文章来源:https://www.npmjs.com/package/ftl-server
源代码可参考:https://github.com/szmtcjm/ftl-server/blob/master/lib/config.js
ftl-server 是一前端开发工具,支持解析freemarker模板,模拟后端接口,反向代理等功能。
特性
- 解析freemarker模板
- 静态资源服务
- mock请求
- 代理请求
- livereload
- weinre
安装
1. npm install ftl-server -g
2. 在工程目录下新建配置文件,比如ftl.config.js,配置文件格式如下:
module.exports = {
public: 'E:\\somedir\\public', //静态文件目录
port: '80', //端口号,默认为80
hot: true, //布尔值,是否开启livereload;开启后修改css会自动更新页面的样式,修改ftl/js/图片等会自动刷新页面
watch: [require.resolve('./page.ftl'), 'E:\\ftlServer\page.mock'], //需要监控的额外的配置文件,值为数组
remoteDebug: { //remoteDebug 针对weinre的配置
browser: 'firefox'
},
ftl: { //配置freemarker的解析
base: 'E:\\somedir\\ftl', //配置freemarker模板目录
dataFiles: ['E:\\somedir\\data.ftl'], //配置ftl模板需要的数据文件,也就是造假数据的文件
global: { //ftl共享的数据文件
},
'ftlfile.ftl': function(req, res) { //key ftlfile.ftl表示要渲染的ftl文件, value表示该渲染该ftl的数据
return {
saleActivityMap: {
"000008": {
activityStatus: 'actived'
}
}
}
}
},
mock: [{ //接口模拟,模拟请求
path: '/request', //请求名
method: 'get', //请求方法
status: '200', //请求状态
header: { //请求头
},
response: function(req, res) { //请求的返回内容
return {
a: 1,
B: 2
}
}
}, 'E:\\mock\\mock.js'], //文件格式见下面的源代码
proxy: [{
path: '/proxy1', //表示需要反向代理的请求path
target: 'http://localhost:3000' //表示代理的目标地址
}
]
}
E:\\mock\\mock.js格式如下:
// /dir/mock.js
// 可以export一数组,或者直接一对象
module.exports = [{
path: '/mock',
method: 'post',
response: function(req, res) {
return {
result: true
}
}
}]
执行 fs -c ./ftl.config.js -p 1008 或 ftl-server -c ./ftl.config.js -p 1008 或 fs
3. 访问 http://localhost:1008/,即可直接浏览目录下的ftl页面。
项目实践
1. 项目根目录下新建 ftl.config.js
1.1默认配置文件名为 ftl.config.js,启动时bash命令执行 fs 或 ftl-server
1.2如果是自定义配置文件名称,比如 config.js,则每次配置文件改动,或者启动ftl server时,bash命令需执行 fs -c ./config.js 或 ftl-server -c ./config.js
需要重新设置配置文件的路径。
2. ftl.config.js 代码内容
module.exports = {
public: '/Users/xx/Projects/bbb/src/main/webapp',
port: '10080',
hot: true,
ftl: {
base: '/Users/xx/Projects/bbb/src/main/webapp/WEB-INF/template',
},
mock: ['/Users/xx/Projects/bbb/src/main/webapp/WEB-INF/template/fakeData/ajax/cc.js'],
proxy: [{
path: '/proxy1',
target: 'http://localhost:3000'
}
]
}
一些不常用的配置项没加进去,ftl.dataFiles里不能配置ftl文件的目录,只能配名字,这点不是很方便。
如果页面需要假数据,直接在页面上assign假数据就可以了。或者将assign的假数据单独建个ftl文件,然后在需要假数据的ftl include进去就行。
3. mock数据请求
mock配置页面需要发的一些请求,数组表示。如下:
/Users/xx/Projects/bbb/src/main/webapp/WEB-INF/template/fakeData/ajax/cc.js
module.exports = [{
path: '/ajax.html',
method: 'get',
status: 200,
response: function(req, res) {
return {
"code": "200",
"msg": "操作成功"
}
}
}]
4.启动服务
bash命令执行 fs 或 ftl-server
可以使用 fs --help 查看其它的操作。
前后端分离工具之ftl-server的更多相关文章
- 前后端分离之【接口文档管理及数据模拟工具docdoc与dochelper】
前后端分离的常见开发方式是: 后端:接收http请求->根据请求url及params处理对应业务逻辑->将处理结果序列化为json返回 前端:发起http请求并传递相关参数->获取返 ...
- 超简单工具puer——“低碳”的前后端分离开发
本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...
- Post方式 前后端分离开发postman工具首次使用心得及注意事项
使用前:2009年以前,一直用asp(非asp.net)语言开发网站,网页调用数据等操作,是通过asp标签<%%>嵌入到HTML标签语言中.相隔八年后,听说最近都是MVC后又什么前后端分离 ...
- FastAPI + Vue 前后端分离 接口自动化测试工具 apiAutoTestWeb
apiAutoTestWeb使用说明 apiAutoTestWeb是为apiAutoTest的可视化版本,其采用前后端分离(FastAPI + Vue2)方式实现 具体使用: Python3 + Fa ...
- [转] 前后端分离开发模式的 mock 平台预研
引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...
- Swagger - 前后端分离后的契约
前后端分离 按照现在的趋势,前后端分离几乎已经是业界对开发和部署方式所达成的一种共识.所谓的前后端分离,并不是传统行业中的按部门划分,一部分人只做前端(HTML/CSS/JavaScript等等),另 ...
- 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境
前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...
- 基于 koajs 的前后端分离实践
一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: ...
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...
随机推荐
- XCLNetTools1.0(ASP.NET常用类库)
版权声明:本文为博主原创文章,未经博主允许不得转载. 2016-01-01开放所有源代码: 项目地址:https://github.com/xucongli1989/XCLNetTools 下载地址: ...
- (视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)
本文是<快速创建网站>系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- jQuery代码优化:事件委托篇
推荐阅读原文:http://www.ituring.com.cn/article/467# 推荐11收藏 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery为绑 ...
- android Activity生命周期(设备旋转、数据恢复等)与启动模式
1.Activity生命周期 接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...
- Java for XML: JAXP、JAXB、JAXM、JAX-RPC、JAX-WS
在XML领域里,对XML文件的校验有两种方式:DTD校验.Schema校验.在Java中,对于XML的解析,有多种方式:DOM解析.SAX解析.StAX解析.结合XML和Java后,就产生了Bind技 ...
- mysql技巧之select count的比较
在工作过程中,时不时会有开发咨询几种select count()的区别,我总会告诉他们使用select count(*) 就好.下文我会展示几种sql的执行计划来说明为啥是这样. 1.测试 ...
- Java堆、栈和常量池
摘录自 http://www.cnblogs.com/xiohao/p/4296088.html 1. 栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方.与C++不同,Java ...
- ipcs, ipcrm
ipcs ipcs -m #查看系统中已经存在的共享内存 ------ Shared Memory Segments -------- key shmid owner perms bytes natt ...
- ubuntu下apache2 安装 配置 卸载 CGI设置 SSL设置
一.安装.卸载apache2 apache2可直接用命令安装 sudo apt-get install apache2 卸载比较麻烦,必须卸干净,否则会影响ap ...
- Linux正则表达式grep
正则表达式是一种符号表示法,用于识别文本模式.Linux处理正则表达式的主要程序是grep.grep搜索与正则表达式匹配的行,并将结果输送至标准输出. 1. grep匹配模式 grep按下述方式接受选 ...