前端开发环境
JavaScript HTML CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
dev
mock
.bowerrc
.gitignore
.jshintrc
README.md
bower.json
gulpfile.js
package.json

README.md

fede

一个前端开发环境,实现前后端分离开发。

主要功能:

  • 模拟后端接口,在尽可能真实的环境下开发
  • 定义_map.js文件,自动拦截javascript中的“线上接口地址”到“本地模拟的接口”,无需修改javascript文件
  • 使用handlebars模板代替html文件,可根据不同的环境编译成不同版本的html文件

依赖于:

  • 基于express.js实现,可以使用任何express的中间件
  • 使用gulp执行自动化构建
  • 使用bower进行第三方组件的管理
  • 使用amd模块,开发环境直接引入require.js,生产环境将代码和almond打包在一起

另外:

  • 代码很简单,大部分是第三方组件,可以根据自己的需要修改
  • 基于commonjs和webpack的版本,请查看fede2

Installation

方法1:直接clone本项目,然后执行

npm install
bower install

方法2:使用yo快速构建

npm install -g generator-fede yo
yo fede

Usage

所有开发文件在dev目录下,执行编译后的待发布文件在dist目录下

启动服务

gulp server

编译打包

gulp build

还可以单独运行各个任务,任务都定义在gulpfile.js文件下。

Documents

编译hbs文件

.hbs的文件也就是handlebars模板,你可以在bin/helpers中写自定义的helper,然后就可以直接在hbs文件中使用了,默认设置了developmentdevelopment两个helper,在本地运行的时候,默认是development环境,gulp编译时,是production环境

<head>
  {{#development}}
  <link href="css/index.css" type="text/css" media="all" rel="stylesheet" />
  {{/development}}
  {{#production}}
  <link href="css/index.min.css" type="text/css" media="all" rel="stylesheet" />
  {{/production}}
</head>

在本地运行的时候,会应用index.css文件,编译后的html文件只显示index.min.css

Mock

在Mock文件夹下js文件(除了_map.js)都会被认为是mock文件,其实就是express中定义的路由接口,具体可以参考express的文档

拦截ajax请求

mock已经很好用了,但是还不够好用。因为我们必须把http://localhost:3000/xxxx这样的接口写在js里,发布前还要替换(当然你可以使用gulp-replace等)。 我理想的方式是拦截url,重定位到本地接口(类似fiddler&charles),更妙的是我们使用的express,可以自定义静态文件中间件,通过一个map文件替换js里的url,然后直接响应给浏览器,而实际上js文件是没有变的。 例如我们的本地文件有这样一个请求:

$.ajax({
  url: 'https://github.com',
  success: function(){

  }
});

mock/_map.js中这么写:

module.exports = {
  // url映射举例
  'https://github.com': '/json'
};

启动服务,在浏览器中打开js文件,我们不会看到http://github.com,只会看到/json。 当然还有种方法是,在hbs中定义url的变量,因为有时url是根据后端的输出来拼接的。

License

MIT