nodejs 做动态网页

var http = require('http');
var url = require('url');
var router = require('./router');
// 创建服务端口为8000
http.createServer(function(request,response){
	
	// 判断是否为第二次访问
	if(request.url!=='/favicon.ico'){
		var pathname = url.parse(request.url).pathname;
		// 去除路径中的 /
		pathname = pathname.replace(/\//,'');
		try{
			router[pathname](request,response);
		}catch(err){
			console.log(err);
			response.writeHead(200,{'Contet-Type':'text/html;charset=utf-8'});
			response.write(err.toString());
			response.end('');
		}
	}
}).listen(8000);
console.log('Server is running in port 8000');

var url = require('url');
var readhtml = require('./readhtml');

var querystring = require('querystring');
function getRecall(req,res){
	res.writeHead(200,{'Contet-Type':'text/html;charset=utf-8'});
	function recall(data){
		res.write(data);
		res.end('');
	}
	return recall;
}

module.exports={
	login:function(req,res){
		// post 提交方式
		// 定义一个post变量,用于暂时储存请求体的信息
		var post = '';
		// 通过req的data事件监听函数,每当接受到请求体的数据,就到post变量中
		req.on('data',function(chunk){
			post +=chunk;			
		});
		// 注意异步
		// 在end事件触发后,通过querystring.parse将post街恶习为真正的post格式,然后向客户端返回
		req.on('end',function(){
			post = querystring.parse(post);
			//console.log('接受的参数'+ post['email']+'\n'+post['pwd']);
			

			arr = ['email','pwd'];

			function recall(data){
				dataStr = data.toString();
				for(var i =0;i<arr.length;i++){
					re = new RegExp('{'+arr[i]+'}','g');
					dataStr = dataStr.replace(re,post[arr[i]]);
				}

				res.write(dataStr);
				res.end('');

			}
			console.log('email===='+post['email']
				);
			console.log('password='+post['pwd']);
			
			// 接受到所有参数再显示页面
			readhtml.login('./login.html',recall);
			
		});	
	},
	showimg:function(req,res){
		res.writeHead(200,{'Contet-Type':'text/html;charset=utf-8'});
		readhtml.showimg('./1.jpg',res);
	}
}
var fs = require('fs');

module.exports = {
	login:function(path,recall){
		fs.readFile(path,function(err,data){
			if(err){
				console.log(err)
				recall('文件不存在。') // 返回异常信息
			}else{
				recall(data);
			}	
		});
	},
	showimg:function(path,res){
		fs.readFile(path,'binary',function(err,filedata){
			if(err){
				console.log(err);
				return;
			}else{
			
				res.write(filedata,'binary');
				res.end('');
			}
		});
	}
}
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
  登录界面
  <img src='./showimg'/>
	<h1>email是:{email}</h1>	
	<h1>密码是:{pwd}</h1>
  <form action='./login' method='post'>
	<table align='center'>
		<tr>
			<td>email:</td>
			<td><input type='text' name='email' /></td>
		</tr>
		<tr>
			<td>密码:</td>
			<td><input type='password' name='pwd'/></td>
		</tr>
		<tr>
			<td align='center'><input type='submit' value='登录'/></td>
		</tr>
	</table>
  
  </form>
 </body>
</html>

主要就是,在往页面传数据的时候,根据正则表达式,把对应的字段替换掉。

Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,从而实现了动态网站的构建。Node.js特别适合处理I/O密集型任务,因为它的事件驱动和非阻塞I/O模型使其在处理大量并发连接时表现出色。以下是使用Node.js实现动态网站的关键点: 1. **事件循环(Event Loop)**:Node.js的核心是事件驱动的,每个进程都有一个事件循环,不断监听输入、输出和定时器等事件。 2. **HTTP模块(http)或Express框架**:Node.js内置的`http`模块可以用于创建简单的HTTP服务器,而像Express这样的轻量级框架提供了更丰富的功能和中间件,方便构建复杂的API和应用。 3. **路由和控制器**:动态网站需要处理不同请求到特定资源的映射,Express等框架提供了优雅的路由系统,用于定义URL和相应的处理函数。 4. **模板引擎**:如EJS、Pug或Handlebars,用于渲染动态内容并将数据嵌入HTML中,形成响应返回给客户端。 5. **数据库集成**:Node.js支持多种数据库连接,如MongoDB(NoSQL)、MySQL(SQL)等,通过相应的ORM(如Sequelize)或直接操作原生连接。 6. **异步编程**:Node.js中的回调函数或Promise/async/await机制使得代码能够更有效地处理异步操作,避免了回调地狱。 7. **WebSocket支持**:Node.js可以利用WebSocket实现实时通信,常用于聊天应用、在线游戏等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值