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的模板视图机制分析
Jul 19 NodeJs
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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 高级课程笔记 面向对象
2009/06/21 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
深入理解Python中变量赋值的问题
2017/01/12 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python装饰器结合递归原理解析
2020/07/02 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
IRO美国官网:法国服装品牌
2018/03/06 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
年会活动策划方案
2014/01/23 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
毕业留言寄语大全
2014/04/10 职场文书
实习生工作证明范本
2014/09/14 职场文书
汽车转让协议书范本
2014/12/07 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书