添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

运行服务端node index.js后,在浏览器上输入http://localhost:8888/,服务器根据路径判断,返回默认的页面index.html。浏览器得到index.html后,再依次向服务器请求index.html上需加载的css、js、图片等。服务器根据请求的不同后缀,修改对应响应头部,并返回对应文件。若没有该文件,则返回404界面。

Javascript代码:

const http = require("http");
const fs = require("fs");
const url = require("url");
const path = require("path");
http.createServer((req, res) => {
	let pathName = url.parse(req.url).pathname; //转换为url对象
	//默认加载路径
	if(pathName == '/') {
		pathName = "/index.html";
	//获取文件后缀名
	let extName = path.extname(pathName);
	// console.log("../fore_end" + pathName);  //例如../fore_end/css/style.css
	fs.readFile("../fore_end" + pathName, (err, data) => {
		if(err) { //出错则返回404页面
			console.log("404 Not Found!");			
			fs.readFile("../fore_end/404.html", (errorNotFound, dataNotFound) => {
				if(errorNotFound) {
					console.log(errorNotFound);
				else {
					res.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});
					res.write(dataNotFound); //返回404页面
					res.end();
			return;
		else {
			// 获取对应后缀的文件类型
			let ext = getExt(extName);
			// 设置请求头
			res.writeHead(200, {"Content-Type": ext + "; charset=utf-8"});
			res.write(data); //返回请求文件
			res.end();
}).listen(8888);
// 获取后缀名
getExt = (extName) => {
  switch(extName) {
    case '.html': return 'text/html';
    case '.css': return 'text/css';
    case '.js': return 'text/js';
    default: return 'text/html';

要注意,上面返回文件的路径是相对于服务端的index.js文件。

要获取更多的文件类型,可通过读取文件判断。ext.json文件获取

getExt = (extName) => {
	let data = fs.readFileSync("./ext.json");
	let ext = JSON.parse(data.toString()); //转换为js对象
	return ext[extName];

对于浏览器请求的 favicon.icon文件,可在html头部添加下面部分。浏览器会向服务器请求favicon.icon

<link rel="shortcut icon" href="img/favicon.icon" />
 

参考链接:
https://github.com/LiangJunrong/document-library/blob/master/other-library/Node/Node-base.md#chapter-three-ten
https://blog.csdn.net/guzhao593/article/details/93972193(网站 favicon.icon图标的设置)

npm install @node-minify/core # OR yarn add @node-minify/core 并安装所需的压缩机 npm install @node-minify/uglify-js # OR yarn add @node-minify/uglify-js const minify = require ( '@node-minify/core' ) ; const gcc = require ( '@node-minify/google-closure-compiler' ) ; const uglifyjs = require ( '@node-minify/uglify-js' ) ; // Using Google Closure Compiler minify ( { compressor : gcc , input : 'foo.js' , 简单的Node.js脚本可从ECMAScript,Pug和SCSS文件生成CSSHTML和JavaScript文件。 $ mkdir my-project $ mkdir my-project/src $ mkdir my-project/dist 将*.scss *.mjs , *.mjs和*.pug文件粘贴到./my-project/src文件夹中。 $ npm install @taufik-nurrohman/factory --global --save-dev 通过以下方式生成生产就绪文件: $ cd my-project $ pack 源文件夹中的文件扩展名将被删除。 确保使用两个文件扩展名来命名文件,如下所示: index.css.scss index.html.pug index.js.mjs index.php.pug 这样,在可分发文 为了测一个附近门店的功能,需要配置一下服务器进行测试。本来打算用apache的,后来想自己是做前端的,好久没有用过Nodejs了何不用所学的知识自己配一下呢,说动手就手。 第一步,俗话说的好,工欲善其事,必先利其器。既然要用node+express配置服务器,如果电脑上没有的话自然要先安装这两个大宝贝啦。 1.安装node。到Node官网下载安装即可,直接下一步下一步就完成了。 2.npm初始化项目。打开终端,输入npm init -y即可。注意:如果不输入-y要自己写一些配置,写了-y会默认直接生成一个package.json文件。 3.安装Express。在终端输入 npm i S exp 1、强制缓存,如果缓存有效,则不需要与服务器发生交互,直接使用缓存。 2、对比缓存,每次都需要与服务器发生交互,对缓存进行比较判断是否可以使用缓存。 三、通过使用 Last-Modified / If-Modified-Since 来进行缓存判断 1、Last-Modified 是服务器向客户端发送的头信息,用于告诉客户端资源的 最后修改时间,该信息浏览器 上次我们实现了如何通过不同的路由返回不同的内容。只返回一些文本内容未免也太鸡肋了,想要做功能强大又好看的页面,还是要用我们的 HTML 的。今天就讲一下怎么用 node.js 实现服务器通过路由返回不同的 HTML 文件。可以先看完前面关于 node.js 服务器的文章再接着看这篇,方便理解。现在,开始实现我们今天要实现的功能了。首先,肯定是先要导入我们的 http 模块。// 加载 http 模... 问题描述网页展示时,图片不显示。其实图片已经上传到服务器,通过ftp也能够下载图片问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)界面的代码如下:商品类目:选择类目商品标题:商品卖点:商品价格:库存数量:条形码:商品图片:上传图片商品描述:商品规格:提交重置var itemAddEditor ;//页面初始化完毕后执行此方法$(function(){... 利用node实现爬虫这里用到了三个主要模块,其中https,fs是内置模块可以直接引入,cheerio是第三方模块需要npm install cheerio --save 安装后使用。这里我介绍一个三个模块的相应用法首先是https模块,顾名思义是用于获取https协议网址的相关内容所需要用到的模块,其中包含get,post两中方法,在获取数据时也有所不同,我使用的是get方法,https.get... 上篇文章我们介绍了nodejsweb服务器怎么响应json,以及json的生成和传输,详见博文:Node.js后端开发 - 基础篇 #10 web 服务器 part 2 响应 JSON,这篇文章我们将介绍web服务器怎么响应HTML页面文件响应 HTML 页面 好了步入正题,我们开始...... 本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。浏览器加载网站的时候,都会默认请求一个favicon.ico文件。当然,如果页面代码里面有额外指定图片的话,是会遵守这个代码指定的。如果没有特殊说明的话,就默认请求favicon.ico文件。这个问题,表面上看起来很简单。但是机缘巧合之下,就会有导致一些特殊的issue发生。favicon.ico一般用于作为... 主要思想就是任何一个静态文件也应该做响应,一个获取静态文件都应当请求来处理,这是主要思想。 同时要注意两点。第一,对于不同的文件类型,比如html,css,js,请求头里面的文件类型需要根据不同的文件类型注明, 第二,文件的路径需要表达准确,fs.readFile方法的第一个参数path是已起服务的文件为根目录,这里就是以server.js文件的所在目录为根目录 文件目录 文件夹pu... Node.js是一个平台,提供了使用JavaScript编写服务器端代码的方法。该模型非常适合快速基于服务器的应用程序原型制作,甚至可以用于构建访问量较高的Web应用程序。在之前的Node.js教程系列-入门中,我们讨论了基于Node.js的应用程序的基础知识和工作模型。在本文中,我们将看到如何使用Node.js提供HTML页面,脚本和样式。在上一篇文章中,我们使用http模块编写了一个hello...