使用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 相关文章推荐
判断一个对象是否为jquery对象的方法
Mar 12 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
AngularJS 整理一些优化的小技巧
Aug 18 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
Vue.js展示AJAX数据简单示例讲解
Mar 29 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 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警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
一看就懂得Python的math模块
2018/10/21 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
工商企业管理应届生求职信
2013/11/03 职场文书
2014年情人节活动方案
2014/02/16 职场文书
五年级学生评语
2014/04/22 职场文书
员工升职自荐信
2015/03/27 职场文书
公司人事任命通知
2015/04/20 职场文书
2016中秋节广告语
2016/01/28 职场文书
2019求职信大礼包
2019/05/15 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
Hive HQL支持2种查询语句风格
2022/06/25 数据库