使用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 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
JS清除字符串中重复值的实现方法
Aug 03 Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 Javascript
简单快速的实现js计算器功能
Aug 17 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 Javascript
解决vue.js this.$router.push无效的问题
Sep 03 Javascript
Vue项目查看当前使用的elementUI版本的方法
Sep 27 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 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面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Django自定义用户认证示例详解
2018/03/14 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
Python内置函数locals和globals对比
2020/04/28 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
实习生的自我评价
2014/01/08 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
计算机实训报告范文
2014/11/05 职场文书
财务部会计岗位职责
2015/02/03 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers