直接打开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)
 });

文件结构如下:

运行的话只要执行: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/ 来访问项目文件夹内的文件了。

注:总的文件目录如下:

源码下载地址: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 构建本地web测试服务器 以及 解决访问静态资源的问题!的更多相关文章

  1. nodejs express 路由并显示html以及访问静态资源设置

    var express = require('express'); var http = require('http'); var fs = require('fs'); var app = expr ...

  2. SpringMVC使用可以访问静态资源,但是导致Controller访问失败

    如果在web.xml 拦截配置如下: <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC&l ...

  3. django 不能访问静态资源的解决办法

    最近在中文win10下使用python的django搭建web测试服务器,发现一个诡异的现象,正常配置好django的模型,视图和模板, 1.setting.py内容如下: ""& ...

  4. Spring Mvc Web 配置拦截规则与访问静态资源 (三)

    拦截规则配置 1. *.do <!-- Processes application requests --> <servlet> <servlet-name>app ...

  5. 解决SpringBoot页面跳转无法访问静态资源的问题

    初学SpringBoot,写项目的时候遇到了问题,原本的页面是这样的 但启动项目后是这样的 这是因为thymeleaf中引入静态资源及模板需要使用到 th:xxx 属性,否则无法在动态资源中访问静态资 ...

  6. SpringMVC访问静态资源的三种方式(转)

    本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...

  7. [刘阳Java]_SpringMVC访问静态资源_第9讲

    有些时候我们在使用SpringMVC的时候造成无法访问静态资源文件(如:html,js,css,image等等).其主要的原因出在web.xml文件我们设置SpringMVC前端控制器的映射路径 &l ...

  8. spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js...

    问题:spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js... web.x ...

  9. SpringMVC访问静态资源

    SpringMVC访问静态资源 在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被Dis ...

随机推荐

  1. $.when()方法翻译

    地址:http://api.jquery.com/jQuery.when/ jQuery.when( deferreds ),returns Promise 正文 Description: Provi ...

  2. 2017·iOS学习资料

    我的两个想法更新了,欢迎新老司机出来槽点一下 star →[iOS·UIKit & Foundation框架-Annotations & Category注解工具类

  3. CSS小技巧-为内盒子添加margin-top时,会带着父盒子一起下来,如何解决?

    1.为父盒子添加一个padding 2.为父盒子添加一个border 3.为父盒子添加一个overflow:hidden

  4. 在eclipse中输入.后提示解决

    1.调用系统自带的提示: 如果在eclipse中输入.后没有提示对应对象的属性和方法帮助列表,可以进行以下设置就可以了 eclipse -> Window-> Preferences-&g ...

  5. jsp+servlet实现模糊查询和分页效果

    ---恢复内容开始--- 1.DAO+MVC包 2.DAO接口方法定义 package com.wanczy.dao; import java.math.BigDecimal;import java. ...

  6. hdu 5975---Aninteresting game(树状数组)

    题目链接 Problem Description Let’s play a game.We add numbers 1,2...n in increasing order from 1 and put ...

  7. GLUT Trackball Demo

    GLUT Trackball Demo eryar@163.com 1.Introduction 在三维场景中建立模型后,为了方便用户从各个角度观察模型,从而需要对三维视图进行控制.常见的视图交互控制 ...

  8. 基于FPGA的彩色图像转灰度算法实现

    昨天才更新了两篇博客,今天又要更新了,并不是我垃圾产,只不过这些在上个月就已经写好了,只是因为比赛忙,一直腾不出时间整理出来发表而已,但是做完一件事情总感觉不写一博文总结一下就少点什么,所以之后的一段 ...

  9. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  10. PHP漏洞之session会话劫持

    本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...