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 url验证(url-valid)的使用方法
Nov 18 NodeJs
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 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通过cookies获取远程网页的指定代码
2013/06/25 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
python pygame模块编写飞机大战
2018/11/20 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python中文编码知识点
2019/02/18 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Python下载的11种姿势(小结)
2020/11/18 Python
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
用友笔试题目
2016/10/25 面试题
故意伤害辩护词
2015/05/21 职场文书
家长会感言
2015/08/01 职场文书
公司董事任命书
2015/09/21 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL