本文实例讲述了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.X
var app = express(); //express 3.X
//可选,因为Express下默认为CWD/views
app.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
}));
/*
改成下面的话,浏览器会显示一个简单的消息-Internal Server Error内部服务器错误
app.use(express.errorHandler({
dumpExceptions: 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文件服务
/*Express里还有其他一些模板引擎
res.render('index.haml', {..data..}); 使用Haml
res.render('index.jade', {..data..}); 使用Jade
res.render('index.ejs', {..data..}); 使用EJS
res.render('index.coffee', {..data..}); 使用CoffeeKup
res.render('index.jqtpl', {..data..}); 使用jQueryTemplates
也可以通过 app.set('view engine', 'haml');
app.set('view engine', 'jade'); 方法来改变默认的渲染引擎
layout.html
默认情况下,模板中用于渲染的内容会被命名为body,然后传递到layout模板中,当app-express.js调用
res.render('fibo.html'...)时,它会先用fibo.html渲染对应的页面片段,然后再使用layout模板渲染整个页面
有两种方法覆盖这一默认的行为
1、在Express里创建一个全局的配置,通过这个全局配置来控制layout模板的启用与禁用
app.set('view options', {layout: false(or true)});
2、覆盖layout模板对应的渲染方式或者使用不同的layout模板
res.render('myview.ejs', {layout: false(or true)});
或者res.render('page', {layout: 'mylayout.jade'});
<% code %> Javascript代码
<%= code %> 显示替换过HTML特殊字符的内容
<%- code %> 显示原始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程序设计有所帮助。
# Node.js
# connect
# express
# 框架
# 多页面
# 数学运算
# 从零开始学习Node.js系列教程之设置HTTP头的方法示例
# 从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
# 从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
# 从零开始学习Node.js系列教程五:服务器监听方法示例
# 从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
# 从零开始学习Node.js系列教程四:多页面实现的数学运算示例
# 从零开始学习Node.js
# 它会
# 自己的
# 的是
# 是一个
# 这一
# 专注于
# 放在
# 目录下
# 可以通过
# 给大家
# 然后再
# 你可
# 大同小异
# 可选
# 有两种
# 提供一个
# 先用
# 命名为
# 方法来
# 所述
相关文章:
Android使用GridView实现日历的简单功能
如何在万网开始建站?分步指南解析
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站之星如何取消后台验证码生成?
建站之星代理商如何保障技术支持与售后服务?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何快速搭建FTP站点实现文件共享?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
网站制作员失业,怎样查看自己网站的注册者?
家具网站制作软件,家具厂怎么跑业务?
已有域名和空间如何快速搭建网站?
建站之星后台管理系统如何操作?
如何在IIS7上新建站点并设置安全权限?
建站之星伪静态规则如何设置?
济南网站制作的价格,历城一职专官方网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
PHP正则匹配日期和时间(时间戳转换)的实例代码
小型网站制作HTML,*游戏网站怎么搭建?
如何使用Golang安装API文档生成工具_快速生成接口文档
如何快速生成可下载的建站源码工具?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
小程序网站制作需要准备什么资料,如何制作小程序?
如何在IIS中配置站点IP、端口及主机头?
无锡营销型网站制作公司,无锡网选车牌流程?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
已有域名如何免费搭建网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
,怎么在广州志愿者网站注册?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何在建站之星绑定自定义域名?
如何自定义建站之星模板颜色并下载新样式?
Bpmn 2.0的XML文件怎么画流程图
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
红河网站制作公司,红河事业单位身份证如何上传?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何挑选优质建站一级代理提升网站排名?
长沙做网站要多少钱,长沙国安网络怎么样?
建站主机选购指南与交易推荐:核心配置解析
网站制作软件有哪些,制图软件有哪些?
如何用免费手机建站系统零基础打造专业网站?
如何用西部建站助手快速创建专业网站?
淘宝制作网站有哪些,淘宝网官网主页?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。