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配置HTTPS服务实例分享
Feb 19 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
银行职员思想汇报
2013/12/31 职场文书
房地产销售计划书
2014/01/10 职场文书
妇女干部培训方案
2014/05/12 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
签订劳动合同通知书
2015/04/16 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android