Node.js学习-Node.js入门-03Apache实现

本文详细介绍如何使用Node.js创建一个简易的静态资源服务器,包括处理不同URL请求、读取目录资源、使用模板引擎进行页面替换,以及实现重定向等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要读取网站静态资源

//原始方法
//不同静态文件配置对应的url
var http = require('http');
var fs = require('fs');
var server = http.createServer();
var www = "c:/app";
server.on('request',function(req,res){
	var url = req.url;
	if(url === '/'){
		fs.readFile(www+'/index.html',function(err,data){
			if(err){
				return res.end("404");
			} 
			res.end(data);
		});
	} 
});
server.listen(3000,function(){
	console.log('running');
})
//方法改进
var http = require('http');
var fs = require('fs');
var server = http.createServer();
var www = "c:/app"
server.on('request',function(req,res){
	var url = req.url;
	var filePath = "index.html";
	if(url !== '/'){
		filePath = url;
	} 
	fs.readFile(www+filePath,function(err,data){
		if(err){
			return res.end('404');
		}
		res.end(data);
	})
});
server.listen(3000,function(){
	console.log('running');
})

读取目录

//可以添加到server中读取网站资源
var fs = require('fs');
fs.readdir(www,function(err,files){
	if(err){
		return res.end('can not find www dir');
	}
	console.log(files);
});
var http = require('http');
var fs = require('fs');
var server = http.createServer();
var www = "c:/app"
server.on('request',function(req,res){
	var url = req.url;
	var filePath = "index.html";
	if(url !== '/'){
		filePath = url;
	} 
	fs.readFile(www+filePath,function(err,data){
		if(err){
			return res.end('404');
		}
		fs.readdir(www,function(err,files){
			if(err){
				return res.end('can not find www dir');
			}
			console.log(files);
			//需要使用模板引擎替换
			var content = '';
			files.forEach(function(items){
				//${items}引用变量
				content += `<tr><td>${items}</td></tr>`
			});
			//模板文件数据
			data = data.toString();
			//替换特定字符串形成新页面
			data = data.replace('xx',content);
			res.end(data);
		});
		
		res.end(data);
	})
});
server.listen(3000,function(){
	console.log('running');
})

特定模板引擎

  • art-template
    – npm install art-template
    – 默认安装下载到执行目录中
    – 目录下node_modules
    – 在浏览器中需要引用node_modules/art-template/lib/template-web.js文件
<script src="node_modules/art-template/lib/template-web.js"></script>
<script type="text/template" id="tpl">
	hello {{ name}},{{ age}},循环{{ each hobbies}}{{$value}}{{/each}}
</script>
<script>
	var ret = template('tpl',{
		name:'jack',
		age:18,
		hobbies:[
			'xx','xx','xx'
		]
	});
	console.log(ret);
</script>
  • 在node中使用模板引擎实现页面替换
    – 安装
    – 加载art-template
    – 使用api
var template = require('art-template');
//template.render('模板字符串',{替换对象});
var ret = template.render('hello {{ name }}',{
	name:'jack'
});
console.log(ret);
  • 将所有静态资源放入public文件夹内
  • 判断url(url.indexOf('/public/')===0),直接读取fs.readFile('.'+url,function(err,data){})
    • /public/css/
    • /public/js
    • /public/lib

url模块

  • var url = require(‘url’)
  • var obj = url.parse(‘xxx’,true);
    • 解析url字符串
    • url.query
      • ?之后的解析对象
    • url.pathname
      • 不包含?之后的内容

重定向

  • res.statucode = 302;
    • 301:永久重定向
    • 302:临时重定向
  • res.setHeader(‘Location’,’/’);
  • res.end();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值