从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例

时间:2021-05-25

本文实例讲述了Node.js基于connect和express框架的多页面实现数学运算。分享给大家供大家参考,具体如下:

1、使用connect框架

.use方法用于绑定中间件到connect服务器,它会配置一系列在接到请求时调用的中间件模块,此例中我们要配置的中间件有favicon logger static router

app.get/post/put 写法:app.requestName('path', function(req, res, next){});

app-connect.js

var connect = require('connect'); //npm install connect connect.createServer() .use(connect.favicon()) .use(conect.logger()) .use('/filez', connect.static(__dirname + '/filez')) .use(connect.router(function(app){ app.get('/', require('./home-node').get); //一个URL字符串和两个函数类型的参数 //路由器配置函数可以包含不限数量的函数,你可以为自己的应用构造一个处理函数的队列 app.get('/square', htutil.loadParams, require('./square-node').get); app.get('/factorial', htutil.loadParams, require('./factorial-node').get); app.get('/fibonacci', htutil.loadParams, require('./fibo2-node').get); app.get('/mult', htutil.loadParams, require('./mult-node').get); })).listen(3000);console.log('listening to http://localhost:3000');

2、使用express框架

Express框架是一个基于connect(一个中间件框架)的web应用框架

Express专注于构建一个应用,包括提供一个模板系统;connect专注于做web服务的基础设施

安装Express和EJS(模块处理系统) npm install express ejs

app-express.js

var htutil = require('./htutil');var math = require('./math');var express = require('express');//var app = express.createServer(express.logger()); //express 2.Xvar app = express(); //express 3.X//可选,因为Express下默认为CWD/viewsapp.set('views', __dirname + '/views');app.engine('.html', require('ejs').__express);app.set('view engine', 'ejs');app.configure(function(){ app.use(app.router); app.use(express.static(__dirname + '/filez')); //默认的错误处理函数,显示栈轨迹 //如果要显示用户友好的错误,app.err(function(err, req, res, next){ // res.send(error page); //or res.render('template'); // }); app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));});//以上配置了必需的中间件,因为这里展示的配置项对应的是模板系统的配置,所有.html文件会由EJS引擎处理//以下是路由器配置app.get('/', function(req, res){ res.render('home.html', {title: "Math Wizard"});});app.get('/mult', htutil.loadParams, function(req, res){ if (req.a && req.b) req.result = req.a * req.b; res.render('mult.html', {title: "Math Wizard", req: req});});app.get('/square', htutil.loadParams, function(req, res){ if (req.a) req.result = req.a * req.a; res.render('square.html', {title: "Math Wizard", req: req});});app.get('/fibonacci', htutil.loadParams, function(req, res){ if (req.a){ math.fibonacciAsync(Math.floor(req.a), function(val){ req.result = val; res.render('fibo.html', {title: "Math Wizard", req: req}); }); }else { res.render('fibo.html', {title: "Math Wizard", req: req}); }});app.get('/factorial', htutil.loadParams, function(req, res){ if (req.a) req.result = math.factorial(req.a); res.render('factorial.html', {title: "Math Wizard", req: req});});app.get('/404', function(req, res){ res.send('NOT FOUND' + req.url);});//res.render函数通过一个模板文件渲染数据,EJS只是Express里众多模板引擎中的一个//配置目的是让EJS能够为views目录下的所有.html文件服务app.listen(3000);console.log('listening to http://localhost:3000');

html页面放在views目录下

layout.html

<!DOCTYPE html><html><head> <title></title></head><body> <h1><%=title%></h1> <table> <tr> <td> <div class="navbar"> <p><a href="/" rel="external nofollow" >home</a></p> <p><a href="/mult" rel="external nofollow" >Multiplication</a></p> <p><a href="/square" rel="external nofollow" >Square</a></p> <p><a href="/factorial" rel="external nofollow" >Factorial</a></p> <p><a href="/fibonacci" rel="external nofollow" >Fibonacci</a></p> </div> </td> <td></td> </tr> </table></body></html>

home.html

<% include layout.html %><p>Math Wizard</p>

mult.html

<% include layout.html %><% if (req.a && req.b){ %> <p class="result"> <%=req.a%> * <%=req.b%> = <%=req.result%> </p><% } %><p>Enter numbers to multiply</p><form name="mult" action="/mult" method="get"> A: <input type="text" name="a" /><br/> B: <input type="text" name="b" /> <input type="submit" name="Submit" /></form>

还有其他一些页面就不一一列出来了,都大同小异

希望本文所述对大家nodejs程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章