使用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 设置缓存及获取设置的缓存
May 08 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
浅谈jQuery中replace()方法
May 13 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
浅谈Vue内置component组件的应用场景
Mar 27 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
Vue退出登录时清空缓存的实现
Nov 12 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
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
轮播图组件js代码
2016/08/08 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Python的Django框架中的数据库配置指南
2015/07/17 Python
python 拼接文件路径的方法
2018/10/23 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python requests指定出口ip的例子
2019/07/25 Python
python监控nginx端口和进程状态
2019/09/06 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python_mask_array的用法
2020/02/18 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
探亲邀请信范文
2014/01/30 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技