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打包工具整合到鼠标右键的方法
May 11 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
nodejs基础知识
Feb 03 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 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
网站当前的在线人数
2006/10/09 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
js实现列表按字母排序
2020/08/11 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
农贸市场管理制度
2014/01/31 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
财务总经理岗位职责
2014/02/16 职场文书
2014组织生活会方案
2014/05/19 职场文书
材料物理专业求职信
2014/09/01 职场文书
向女朋友道歉的话
2015/01/20 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
MySql新手入门的基本操作汇总
2021/05/13 MySQL
你知道Java Spring的两种事务吗
2022/03/16 Java/Android