使用gulp搭建本地服务器并实现模拟ajax


Posted in Javascript onApril 05, 2017

本文主要给大家总结了在工作中可能会用到的小工具,在此记录一下。

可以实现的功能有:

       1. 本地http服务器

       2.页面实时刷新

       3.可以模拟ajax请求

第一步,新建package.json文件。

用到了gulp、gulp-webserver、gulp-livereload

package.json的内容如下:

{
 "name": "localserver",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "",
 "license": "ISC",
 "devDependencies": {
 "gulp": "^3.9.1",
 "gulp-webserver": "^0.9.1",
 "gulp-livereload": "^3.8.1"
 }
}

第二步,在当前目录下执行npm install安装所需的包

第三步,建立目录结构

使用gulp搭建本地服务器并实现模拟ajax

其中,www是站点的根目录,用于放置html/js/css等静态文件,api是用于放置模拟ajax请求的js文件,如test.js。则ajax请求/api/test的时候,返回改文件的内容,是一个json对象。

第四步,编写gulpfile.js

gulpfile.js内容如下:

var url = require('url');
var fs = require('fs');
var path = require('path');

gulp = require('gulp');
livereload = require('gulp-livereload');
webserver = require('gulp-webserver');

//web服务器
gulp.task('webserver', function() {
 gulp.src('./www') // 服务器目录(./代表根目录)
 .pipe(webserver({ // 运行gulp-webserver
 port: 8000, //端口,默认8000
 livereload: true, // 启用LiveReload
 open: true, // 服务器启动时自动打开网页
 directoryListing: {
  enable: true,
  path: './www'
 },
 middleware: function(req, res, next) {
  //mock local data
  var urlObj = url.parse(req.url, true),
  method = req.method;


  if (!urlObj.pathname.match(/^\/api/)) { //不是api开头的数据,直接next
  next();
  return;
  }
  var mockDataFile = path.join(__dirname, urlObj.pathname) + ".js";
  //file exist or not
  fs.access(mockDataFile, fs.F_OK, function(err) {
  if (err) {
   res.setHeader('Content-Type', 'application/json');
   res.end(JSON.stringify({
   "status": "没有找到此文件",
   "notFound": mockDataFile
   }));
   return;
  }
  var data = fs.readFileSync(mockDataFile, 'utf-8');
  res.setHeader('Content-Type', 'application/json');
  res.end(data);
  });
  next();
 },
 proxies: []
 }));
});


// 默认任务
gulp.task('default', ['webserver']);

第五步,执行gulp命令,会自动打开浏览器,在8000端口起了http服务。就可以看到你的页面了。 

为了给大家使用方便,我把建立好的目录和文件放在这里了,你下载后,直接运行npm install,然后gulp就可以了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Js 获取HTML DOM节点元素的方法小结
Apr 24 Javascript
jQuery 动画弹出窗体支持多种展现方式
Apr 29 Javascript
基于jquery实现点击左右按钮图片横向滚动
Apr 11 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
javascript 通用loading动画效果实例代码
Jan 14 Javascript
如何在node的express中使用socket.io
Dec 15 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
微信小程序实现实时圆形进度条的方法示例
Feb 24 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
Vue数据绑定简析小结
May 07 Javascript
微信小程序实现星星评分效果
Nov 01 Javascript
Vue.js render方法使用详解
Apr 05 #Javascript
self.attachevent is not a function的解决方法
Apr 04 #Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 #Javascript
Vue.js实战之使用Vuex + axios发送请求详解
Apr 04 #Javascript
Vue.js实战之组件的进阶
Apr 04 #Javascript
关于axios返回空对象的问题解决
Apr 04 #Javascript
jQuery自定义图片上传插件实例代码
Apr 04 #jQuery
You might like
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
ext for eclipse插件安装方法
2008/04/27 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python 存取npy格式数据实例
2020/07/01 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
个人教师自我评价范文
2013/12/02 职场文书
如何撰写岗位职责
2014/02/01 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
匿名检举信范文
2015/03/02 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技