文章来源: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. 1.10 基础知识——GP3.1 制度化 & GP3.2 收集改进信息

    摘要: GP3.1是要求建立组织级的关于该过程的制度.标准.模版等全套体系,要求覆盖该PA所有的SP和GP.GP3.2 体现的是持续改进,每个过程都应该收集相应的改进信息. 正文: GP3.1 Est ...

  2. select接收后台返回值的解决方案

    在做页面表单或者条件筛选的时候,如何把select标签的值,在刷新页面后,保持选择的值.下面,将给出两种解决方案: 前提: 前台select标签 name为type : 后台接收type的值,业务完成 ...

  3. BIEE建模参考规范

    BIEE建模参考规范 注:本文基于网上盛传的“BIEE建模黄金法则”,并做了更为细致的讲解,以及修改. 物理层 1.  在可能的情况下,配置你的连接池使用本地驱动来连接物理数据库.例如,使用OCI而不 ...

  4. One to One 的数据库模型设计与NHibernate配置

    在数据库模型设计中,最基本的实体关系有三种:一对一.一对多.多对多.关于一对多和多对多使用的情况较多,之前也有过一些讨论,现在来说明一下在数据库中一对一的模型设计. 首先,关系数据库中使用外键来表示一 ...

  5. mysql-4 数据检索(2)

    用通配符进行过滤 like操作符  %通配符   %可以匹配任意字符 SELECT prod_id , prod_name FROM products WHERE prod_name LIKE 'je ...

  6. 创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它

    package com.hanqi.test; public class Point { private int x; private int y; Point(int xx,int yy) { x= ...

  7. MYSQL 数据库导入导出命令

    MySQL命令行导出数据库 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serve ...

  8. 【hadoop】——window下elicpse连接hadoop集群基础超详细版

    1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...

  9. Linux目录操作

    mkdir() #include <sys/stat.h> #include <sys/types.h> int mkdir(const char *pathname, mod ...

  10. Mysql数据库的通用安装方法

    安装方式简介 Mysql数据库也时不时的用过一段时间,具体使用的功能都比较浅显,没有具体深入学习.最近一段在公司部署iNeedle系统时经常避免不了要安装apache和Mysql数据库.一般Mysql ...