明霞山资源网 Design By www.htccd.com
本文实例讲述了Node.js多页面实现的数学运算。分享给大家供大家参考,具体如下:
app-node.js
var http_port = 3000;
var http = require('http');
var htutil = require('./htutil');
var server = http.createServer(function(req, res){
htutil.loadParams(req, res, undefined);
if (req.requrl.pathname === '/'){
require('./home-node').get(req, res);
}else if (req.requrl.pathname === '/square'){
require('./square-node').get(req, res);
}else if (req.requrl.pathname === '/factorial'){
require('./factorial-node').get(req, res);
}else if (req.requrl.pathname === '/fibonacci'){
require('./fibo-node').get(req, res);
}else if (req.requrl.pathname === '/mult'){
require('./mult-node').get(req, res);
}else{
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end("bad URL" + req.url);
}
});
server.listen(http_port);
console.log('listening to http://localhost:3000');
htutil.js
var url = require('url');
exports.loadParams = function(req, res, next){
req.requrl = url.parse(req.url, true);
req.a = (req.requrl.query.a && !isNaN(req.requrl.query.a))
"<div class='navbar'>",
"<p><a href='/'>home</a></p>",
"<p><a href='/mult'>Multiplication</a></p>",
"<p><a href='/square'>Square</a></p>",
"<p><a href='/factorial'>Factorial</a></p>",
"<p><a href='/fibonacci'>Fibonacci</a></p>",
"</div>"].join('\n');
}
exports.page = function(title, navbar, content){
return ["<html><head><title>{title}</title></head>",
"<body><h1>{title}</h1>",
"<table><tr>",
"<td>{navbar}</td><td>{content}</td>",
"</tr></table></body></html>"
].join('\n')
.replace(new RegExp("{title}", "gm"), title)
.replace("{navbar}", navbar)
.replace("{content}", content);
}
home-node.js
var htutil = require('./htutil');
exports.get = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(htutil.page("Math Wizard", htutil.navbar(), "<p>Math Wizard</p>"));
}
square-node.js
var htutil = require('./htutil');
exports.get = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
var result = req.a * req.a;
res.end(
htutil.page("Square", htutil.navbar(), [
(!isNaN(req.a) "<p class='result'>{a} squared = {sq}</p>"
.replace("{a}", req.a)
.replace("{sq}", req.a * req.a))
: ""),
"<p>Enter numbers to see its square</p>",
"<form name='square' action='/square' method='get'>",
"A: <input type='text' name='a' /><br/>",
"<input type='submit' value='Submit' />",
"</form>"
].join('\n'))
);
}
factorial-node.js
var htutil = require('./htutil');
var math = require('./math');
exports.get = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(
htutil.page("Factorial", htutil.navbar(), [
(!isNaN(req.a) "<p class='result'>{a} factorial = {fact}</p>"
.replace("{a}", req.a)
.replace("{fact}", math.factorial(Math.floor(req.a))))
: ""),
"<p>Enter numbers to see its factorial</p>",
"<form name='factorial' action='/factorial' method='get'>",
"A: <input type='text' name='a' /><br/>",
"<input type='submit' value='Submit' />",
"</form>"
].join('\n'))
);
}
mult-node.js
var htutil = require('./htutil');
exports.get = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
var result = req.a * req.b;
res.end(
htutil.page("Multiplication", htutil.navbar(), [
(!isNaN(req.a) && !isNaN(req.b) "<p class='result'>{a} * {b} = {result}</p>"
.replace("{a}", req.a)
.replace("{b}", req.b)
.replace("{result}", req.a * req.b))
: ""),
"<p>Enter numbers to mutiply</p>",
"<form name='mult' action='/mult' method='get'>",
"A: <input type='text' name='a' /><br/>",
"B: <input type='text' name='b' /><br/>",
"<input type='submit' value='Submit' />",
"</form>"
].join('\n'))
);
}
fibo-node.js
var htutil = require('./htutil');
var math = require('./math');
exports.get = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(
htutil.page("Fibonacci", htutil.navbar(), [
(!isNaN(req.a) "<p class='result'>{a} fibonacci = {fibo}</p>"
.replace("{a}", Math.floor(req.a))
.replace("{fibo}", math.fibonacci(Math.floor(req.a))))
: ""),
"<p>Enter numbers to see its fibonacci</p>",
"<form name='fibonacci' action='/fibonacci' method='get'>",
"A: <input type='text' name='a' /><br/>",
"<input type='submit' value='Submit' />",
"</form>"
].join('\n'))
);
}
fibo2-node.js
var htutil = require('./htutil');
var math = require('./math');
function sendResult(req, res, a, fiboval){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(
htutil.page("Fibonacci", htutil.navbar(), [
(!isNaN(fiboval) "<p class='result'>{a} fibonacci = {fibo}</p>"
.replace("{a}", a)
.replace("{fibo}", fiboval))
: ""),
"<p>Enter numbers to see its fibonacci</p>",
"<form name='fibonacci' action='/fibonacci' method='get'>",
"A: <input type='text' name='a' /><br/>",
"<input type='submit' value='Submit' />",
"</form>"
].join('\n'))
);
}
exports.get = function(req, res){
if (!isNaN(req.a)){
math.fibonacciAsync(Math.floor(req.a), function(val){
sendResult(req, res, Math.floor(req.a) ,val);
});
}else {
sendResult(req, res, NaN, NaN);
}
}
math.js
var factorial = exports.factorial = function(n){
if (n == 0)
return 1;
else
return n * factorial(n-1);
}
var fibonacci = exports.fibonacci = function(n){
if (n === 1)
return 1;
else if (n === 2)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
var fibonacciAsync = exports.fibonacciAsync = function(n, done){
if (n ==1 || n == 2)
done(1);
else {
process.nextTick(function(){
fibonacciAsync(n-1, function(val1){
process.nextTick(function(){
fibonacciAsync(n-2, function(val2){
done(val1 + val2);
});
})
});
});
}
}
希望本文所述对大家nodejs程序设计有所帮助。
标签:
Node.js,多页面,数学运算
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。


