使用node.js + json-server + mock.js 搭建本地开发mock数据服务
在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的。所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的。对比过多种mock工具后,我最终选择了使用 json server 作为工具,因为它足够简单,写少量数据,即可使用。也因为它足够强大,支持CORS和JSONP跨域请求,支持GET, POST, PUT, PATCH 和 DELETE 方法,更提供了一系列的查询方法,如limit,order等。下面我将详细介绍如何搭建mock数据服务。
一、Node.js安装及环境配置
首先需要在电脑上安装nodejs环境,建议使用最新版本,具体的操作过程请查阅Node.js安装及环境配置之Windows篇
二、建立前端项目
建立自己的前端项目,如wx.web,在cmd命令行,进入项目根目录下,

执行命令,D:\工作相关\新建文件夹\front-end project\wx.web > npm init; 命令执行完成后,会在项目根目录,可以看到package.json文件;然后,再按照自己的编码风格,命名前端项目结构目录,


三、使用 JSON Server 搭建 Mock 服务器
全局安装json server,关于json-server相关的api,请阅读json-server官方文档
npm install json-server –g
安装完成后可以用 json-server -h 命令检查是否安装成功,成功后会出现

在项目目录下,增加mock文件目录,并新建db.js用于模拟数据服务
安装mock.js,关于mock.js相关的api, 请先用15分钟阅读mockjs官方文档
npm install mockjs –save
安装完成后的项目目录结构为

在上一步新建的db.js文件中,写入如下代码
- var Mock = require('mockjs');
- var Random = Mock.Random;
- module.exports = function() {
- var data = {
- news: []
- };
- var images = [1,2,3].map(x=>Random.image('200x100', Random.color(), Random.word(2,6)));
- for (var i = 0; i < 100; i++) {
- var content = Random.cparagraph(0,10);
- data.news.push({
- id: i,
- title: Random.cword(8,20),
- desc: content.substr(0,40),
- tag: Random.cword(2,6),
- views: Random.integer(100,5000),
- images: images.slice(0,Random.integer(1,3))
- })
- }
- return data
- }
运行mock服务,
json-server mock/db.js;
运行成功后,会显示如下截图:

并可在浏览器地址栏输入: http://localhost:3000/

至此,mock数据服务,已经搭建成功,在代码中的使用也很简单,以下给出代码使用示例:
- <!DOCTYPE html>
- <html>
- <head>
- <title>首页</title>
- <meta
charset="utf-8"> - <script
type="text/javascript"
src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script> - <style
type="text/css"> - .hello {
- color: #428bca;
- }
- </style>
- </head>
- <body>
- <h3>这是index页面</h3>
- <span
class="hello">你可以点击这里</span> - <script
type="text/javascript"> - $(function () {
- var contextPath = 'http://localhost:3000';
- $('.hello').on('click', function () {
- $.ajax({
- type: 'get',
- url: contextPath + '/news',
- success: function (data) {
- console.log(JSON.stringify(data));
- },
- error: function (data) {
- console.log("出错了:" + JSON.stringify(data));
- }
- })
- })
- })
- </script>
- </body>
- </html>
更多的使用示例,请参考博文使用json-server模拟REST API
使用node.js + json-server + mock.js 搭建本地开发mock数据服务的更多相关文章
- Mock 之搭建本地 MockJs
Mock 之搭建本地 MockJs 一.目的 模拟后端接口 二.发请求 1. install npm install axios 2. 配置 src/utils/request.js import a ...
- 【vue】本地开发mock数据支持
项目离不开数据渲染的支持,为本地开发配置 数据 支持. (一)方式一:安装JSON Server搭建mock数据的服务器 json Server 是一个创建 伪RESTful服务器的工具. 配置流程 ...
- vue-cli 本地开发mock数据使用方法
vue-cli 中可以通过配置 proxyTable 解决开发环境的跨域问题,具体可以参考这篇文章: Vue-cli proxyTable 解决开发环境的跨域问题 如果后端接口尚未开发完成,前端开发一 ...
- 在macOS下使用MAXPP搭建本地开发服务器简易流程
本文适用于解决前端开发时所需的服务器支持,包括文件上传和下载.在开发环境中需要保持尽量的开放,并不是安全的.根据浏览器安全协议,所下载的开源项目是不能直接在file中直接打开的,需要把文件放置在服务器 ...
- ng2 搭建本地开发环境
git clone https://github.com/angular/quickstart.git quickstart cd quickstart npm install npm start h ...
- 使用Apache+Dreamweaver(或者H-builder)搭建php开发环境
使用得工具说明 php+Apache服务器+Dreamweaver+mysql数据库 下载安装好wamp,可以在网上直接百度下载,为了方便,我给放个百度云的链接.wamp下载:链接:http://pa ...
- MacOS搭建本地服务器
MacOS搭建本地服务器 一,需求分析 1.1,开发app(ios android)时通常需往app中切入web页面,直接导入不行,故需搭建本地的测试网站服务,通过IP嵌入访问页面. 1.2,开发小程 ...
- 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
- 用node.js启动mock.js
Node.js Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言.官网下载n ...
随机推荐
- week07 13.4 NewsPipeline之 三 News Deduper
还是循环将Q2中的东西拿出来 然后查重(去mongodb里面把一天之内的新闻都拿出来,然后把拿到的新的新闻和mongodb里一天内的新闻组一个 tf-idf的对比)可看13.3 相似度检查 如果超过一 ...
- python学习Day4 流程控制(if分支,while循环,for循环)
复习 1.变量名命名规范 -- 1.只能由数字.字母 及 _ 组成 -- 2.不能以数字开头 -- 3.不能与系统关键字重名 -- 4._开头有特殊含义 -- 5.__开头__结尾的变量,魔法变量 - ...
- rest_framework常用设置
1.常用配置 import django_filters from django.db.models import Q from rest_framework.pagination import Pa ...
- [Ting's笔记Day7]活用套件carrierwave gem:(2)利用Amazon S3架设图片服务器
来到第7篇了!培养写作习惯真是不容易:) 在我的上一篇文章活用套件carrierwave gem:(1)在Rails实现图片上传功能,上传图片功能已经完成啦!但是目前图片仅能上传在自己的本地文件夹内孤 ...
- 微信公众号Java接入demo
微信公众号Java接入demo 前不久买了一台服务,本来是用来当梯子用的,后来买了一个域名搭了一个博客网站,后来不怎么在上面写博客一直闲着,最近申请了一个微信公众号就想着弄点什么玩玩.周末没事就鼓捣了 ...
- ES6中的let命令
ES6新增了let命令,用于声明变量.其用法类似var,区别是使用let命令声明的变量只在当前代码块有效. for循环的计数器就很适合使用let命令. var arr= [1,2,3,4,5]; fo ...
- 247. Strobogrammatic Number II输出所有对称数字
[抄题]: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at u ...
- 254. Factor Combinations 返回所有因数组合
[抄题]: Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write ...
- ES6自我总结笔记(阮一峰ES6入门)
[let和const命令] 1.var的作用域是函数体内,不是块级作用域 2.let是更完美的var,let的变量的作用是块级作用域 3.let声明的全局变量不是全局对象属性,不可以通过window. ...
- oracle数据库卸数及ddl导出
一.数据库卸数脚本 还是比较明了的,一看就明白. unloaddevice.sh sqlplus atmpbat/atmpbat@inter @"./unloaddevice.sql&quo ...