nodejs构建本地web测试服务器 如何解决访问静态资源问题


Posted in NodeJs onJuly 14, 2017

直接打开html文件,是以file:///方式打开的,这种方式很多时候会遇到跨域的问题,因此我们一般会搭建一个简易的本地服务器,来运行测试页面。

一、构建静态服务器

1、使用express模块

建立个js文件,命名server,内容代码如下:

var express = require('express');
var app = express();
var path = require('path');

//指定静态资源访问目录
app.use(express.static(require('path').join(__dirname, 'public')));
// app.use(express.static(require('path').join(__dirname, 'views'))); 如果有文件夹存放资源,出现报错的话,那就多use几次就可以了
// 设定views变量,意为视图存放的目录
app.set('views', (__dirname + "/public"));
// app.set('views', __dirname);
// 修改模板文件的后缀名为html
app.set( 'view engine', 'html' );
// 运行ejs模块
app.engine( '.html', require( 'ejs' ).__express );

app.get("/", function(req, res) {
  res.render('index');
});

var server = app.listen(1336, "127.0.0.1",function(){
  var host = server.address().address;
  var port = server.address().port;
  console.log("Server running at http://%s:%s", host, port)
});

文件结构如下:

nodejs构建本地web测试服务器 如何解决访问静态资源问题

运行的话只要执行:node server.js 就可以了

然后在浏览器输入http://127.0.0.1:1336/ 来访问项目文件夹内的文件了

2、使用connect模块

建立个js文件,命名 server2 ,内容代码如下:

var connect = require("connect");
 var serveStatic = require("serve-static");

 var app = connect();
 // app.use(serveStatic("C:\\xxx\\xxx\\xxx\\项目文件夹"));
 app.use(serveStatic("public"));

 app.listen(1337);
 console.log('Server running at http://127.0.0.1:1337/');

运行的话只要执行:node server2.js 就可以了,

然后在浏览器输入http://127.0.0.1:1337/ 来访问项目文件夹内的文件了。(如果是index.html文件可以省略不写,默认加载的就是这个文件);

3、使用http模块

建立个js文件,命名 server3 ,内容代码如下:

var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')

// Serve up public/ftp folder
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})

// Create server
var server = http.createServer(function onRequest (req, res) {
  serve(req, res, finalhandler(req, res))
})

// Listen
server.listen(1338);
console.log('Server running at http://127.0.0.1:1338/');

运行的话只要执行:node server3.js 就可以了,

然后在浏览器输入http://127.0.0.1:1338/ 来访问项目文件夹内的文件了。

注:总的文件目录如下:

nodejs构建本地web测试服务器 如何解决访问静态资源问题

源码下载地址:https://github.com/arvin0/nodejs-example/tree/master/web-static-test-server

二、解决访问静态资源

主要使用两个模块

1.通用的 serve-static 模块

详细文档:https://github.com/expressjs/serve-static

2.express专属的  app.use(express.static(require('path').join(__dirname, 'public')));  方法

详细文档:http://expressjs.com/en/4x/api.html ,然后ctrl+F搜索 express.static ,就能找到对应的说明了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs基础知识
Feb 03 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 #NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 #NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 #NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 #NodeJs
深入学习nodejs中的async模块的使用方法
Jul 12 #NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 #NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 #NodeJs
You might like
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
javascript eval函数深入认识
2009/02/21 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
css3media响应式布局实例
2016/07/08 HTML / CSS
应届毕业生简历自我评价
2014/01/31 职场文书
初中军训感想300字
2014/03/05 职场文书
社区志愿者培训方案
2014/06/10 职场文书
街道社区活动报告
2015/02/05 职场文书
费用申请报告范文
2015/05/15 职场文书