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进程管理模块forever详解
Jun 01 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
详解nodejs内置模块
May 06 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
composer.lock文件的作用
2016/02/03 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
python字符类型的一些方法小结
2016/05/16 Python
numpy中矩阵合并的实例
2018/06/15 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
历史学专业毕业生求职信
2013/09/27 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
酒会邀请函
2015/01/31 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL