文章来源: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的更多相关文章

  1. 前后端分离之【接口文档管理及数据模拟工具docdoc与dochelper】

    前后端分离的常见开发方式是: 后端:接收http请求->根据请求url及params处理对应业务逻辑->将处理结果序列化为json返回 前端:发起http请求并传递相关参数->获取返 ...

  2. 超简单工具puer——“低碳”的前后端分离开发

    本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...

  3. Post方式 前后端分离开发postman工具首次使用心得及注意事项

    使用前:2009年以前,一直用asp(非asp.net)语言开发网站,网页调用数据等操作,是通过asp标签<%%>嵌入到HTML标签语言中.相隔八年后,听说最近都是MVC后又什么前后端分离 ...

  4. FastAPI + Vue 前后端分离 接口自动化测试工具 apiAutoTestWeb

    apiAutoTestWeb使用说明 apiAutoTestWeb是为apiAutoTest的可视化版本,其采用前后端分离(FastAPI + Vue2)方式实现 具体使用: Python3 + Fa ...

  5. [转] 前后端分离开发模式的 mock 平台预研

    引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...

  6. Swagger - 前后端分离后的契约

    前后端分离 按照现在的趋势,前后端分离几乎已经是业界对开发和部署方式所达成的一种共识.所谓的前后端分离,并不是传统行业中的按部门划分,一部分人只做前端(HTML/CSS/JavaScript等等),另 ...

  7. 利用grunt-contrib-connect和grunt-connect-proxy搭建前后端分离的开发环境

    前后端分离这个词一点都不新鲜,完全的前后端分离在岗位协作方面,前端不写任何后台,后台不写任何页面,双方通过接口传递数据完成软件的各个功能实现.此种情况下,前后端的项目都独立开发和独立部署,在开发期间有 ...

  8. 基于 koajs 的前后端分离实践

    一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: ...

  9. 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...

随机推荐

  1. #VSTS定制#全新的模版定制能力

    在应用生命周期管理(ALM)领域中,存在各种不同的管理模型,如:传统的瀑布(waterfall)模型,CMMI模型以及最近一些年开始流行的敏捷模型,Scrum模型,kanban等等.每个不同的管理模型 ...

  2. (翻译) TFS源代码控制的未来 (TFSVC vs. Git)

    说明:由于博客园的限制,之前转发的MVP卢建晖的文章不能放入首页,但我会继续转发,感兴趣的同学请到我的博客首页查看. 博主: 翻译自微软Visual Studio ALM产品组老大Brian Harr ...

  3. (视频) 《快速创建网站》3.4 网站改版3分钟搞定 - WordPress主题安装和备份

    本文是<快速创建网站>系列的第8篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  4. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  5. windows环境下无法引用全局安装的模块问题

    问题 在node项目中,往往需要安装一些依赖的包,通常我们采取全局安装的方式,来减少一些包重复安装带来的烦恼. 但是全局安装后出现无法使用的情况,可能是你NODE_PATH没有设置或者不正确造成的. ...

  6. TCP/UDP常见端口参考

    著名端口 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat ...

  7. java23种设计模式

    http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html#_Toc281750445 http://www.runoo ...

  8. aircack-ng抓握手包

    1.关闭影响进程 airmon-ng check kill 将要进入监听模式的无线网卡断开它已连接的AP 2.查看无线网卡的名字 ifconfig ,例如 wlan0 3.进入监听模式: airmon ...

  9. ARC的原理详解

    1,ARC的本质 ARC本质是NSAutoreleasePool的直接应用, @autorelease{ return UIApplicationMain(argc, argv, nil, NSStr ...

  10. AC日记——单词替换 1.7 21

    21:单词替换 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区 ...