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教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
使用Nodejs开发微信公众号后台服务实例
Sep 03 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
调整PHP的性能
2013/10/30 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
jQuery基础知识小结
2014/12/22 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
详解Django通用视图中的函数包装
2015/07/21 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
详解Python装饰器由浅入深
2016/12/09 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
Django视图、传参和forms验证操作
2020/07/15 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
责任书范本
2014/08/25 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
高中校园广播稿
2014/10/21 职场文书
好好学习保证书
2015/02/26 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers