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服务器(10):处理POST请求
Dec 18 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
Smarty模板配置实例简析
2019/07/20 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
Node.js的进程管理的深入理解
2019/01/09 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
python中异常捕获方法详解
2017/03/03 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python 实现return返回多个值
2019/11/19 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
成教毕业生自我鉴定
2013/10/23 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
家长评语大全
2014/01/22 职场文书
运动会解说词200字
2014/02/06 职场文书
研发工程师岗位职责
2014/04/28 职场文书
银行奉献演讲稿
2014/09/16 职场文书
计算机实训报告总结
2014/11/05 职场文书
学习与创新自我评价
2015/03/09 职场文书
初中政治教学反思
2016/02/23 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript