这里有新鲜出炉的 7 天学会 Node.js,程序狗速度看过来!
Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用 · Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 运行在分布式设备 的 数据密集型 的实时应用
这篇文章主要介绍了 Node.js 多页面实现的数学运算, 涉及 nodejs 请求响应、数值传递、运算等相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 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)) ? new Number(req.requrl.query.a) : NaN;
- req.b = (req.requrl.query.b && !isNaN(req.requrl.query.b)) ? new Number(req.requrl.query.b) : NaN;
- if (next) next();
- }
- exports.navbar = function() {
- return ["<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 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0715/334077.html