使用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浏览器兼容Firefox的JS脚本的代码
Oct 23 Javascript
jQuery ajax BUG:object doesn't support this property or method
Jul 06 Javascript
基于jquery自定义图片热区效果
Jul 21 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
Vue 实用分页paging实例代码
Apr 12 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
浅谈Vue为什么不能检测数组变动
Oct 14 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 02 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 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中大括号'{}'用法实例总结
2017/02/08 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
JavaScript库 开发规则
2009/01/31 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
Layui实现带查询条件的分页
2019/07/27 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Python用threading实现多线程详解
2017/02/03 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python日志处理模块logging用法解析
2020/05/19 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
用python制作个视频下载器
2021/02/01 Python
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
追悼会上的答谢词
2014/01/10 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
Vue全局事件总线你了解吗
2022/02/24 Vue.js