-
express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板。下面简单来说说express的app.js文件的配置内容
先看一下这个app.js文件
01 /* 02 Module dependencies. 03 */ 04 05 var express = require('express') 06 routes = require('./routes') 07 http = require('http'); 08 09 var app = express(); 10 11 app.configure(function(){ 12 app.set('port', process.env.PORT || 3000); 13 app.set('views', __dirname + '/views'); 14 app.set('view engine', 'jade'); 15 16 app.use(express.favicon()); 17 app.use(express.logger('dev')); 18 app.use(express.bodyParser()); 19 app.use(express.methodOverride()); 20 app.use(app.router); 21 app.use(express.static(__dirname + '/public')); 22 }); 23 24 app.configure('development', function(){ 25 app.use(express.errorHandler()); 26 }); 27 28 app.get('/', routes.index); 29 30 http.createServer(app).listen(app.get('port'), function(){ 31 console.log("Express server listening on port " + app.get('port')); 32 });
>>引入模块
1 var express = require('express');require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块,express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。
-
>>设置views路径和模板
1 <b>app.set('views', __dirname + '/views'); 2 app.set('view engine', 'jade');</b>上面两行是设置views文件夹,即模板文件夹,__dirname是node.js里面的全局变量,即取得执行的js所在的路径,另外__dirname是目前执行的js文件名。所以,app.set(‘views’, __dirname + ‘/views’);是设置views的文件夹。
而app.set('view engine', 'jade');是设置express.js所使用的render engine。除了Jade之外express.js还支持EJS(embedded javascript)、Haml、CoffeScript和jQuerytemplate等js模板
-
>>app.use配置
1 <b>app.use(express.bodyParser()); 2 app.use(express.methodOverride()); 3 app.use(app.router); 4 app.use(express.static(__dirname + '/public'));</b>express.bodyParser()是Connect內建的middleware,设置此处可以将client提交过来的post请求放入request.body中。
express.methodOverride()也是Connect內建的,可以协助处理POST请求伪装PUT、DELETE和其他HTTP methods。
app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。
express.static()也是一个Connect內建的中间件来处理静态的requests,例如css、js、img文件等。所以static()里面指定的文件夹中的文件会直接作为静态资源吐出来。 -
>>app.configure设置
1 <b><b>app.configure('development', function(){ 2 app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) 3 ; 4 }); 5 app.configure('production', function(){ 6 app.use(express.errorHandler()); 7 });</b></b>express.errorHandler()是Connect內建的中间件来协助处理例外。这里也揭露了app.configure()的另一用法,第一个参数是node.js的环境设定,如此我们就可以设定在不同的执行环境下使用不同的dump。注意:node.js是透过NODE_ENV這个环境变量来取得环境设定,e.g.:在命令列,NODE_ENV=production node app.js就可以进入production环境。
-
>>路由和request的处理
1 <b><b><b>app.get('/', function(req, res){ 2 res.render('index', { 3 title: 'Express' 4 }); 5 });</b></b></b>上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。
在express中要处理post请求,需要使用app.post()。如下面的代码:
1 <b><b><b>app.post('/add', function(req,res){ 2 res.render('add', { 3 sum: req.body.a + req.body.b 4 }); 5 });</b></b></b>前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。
另外除了get和post方法,还有app.all()意思就是所有的请求处理。
-
>>添加listen,启动nodejs服务器
1 <b>http.createServer(app).listen(app.get('port'), function(){ 2 console.log("Express server listening on port " + app.get('port')); 3 www.2cto.com});</b>
1 app.set('port', process.env.PORT || 3000); -
作者:YouDoce
相关推荐
example-serverless-application:用于TypeJS的用Typescript编写的简单RESTful API
example-serverless-application:用于TypeJS的用Typescript编写的简单RESTful API
express生成器-appjs配置
var createError = require(‘http-errors’); var express = require(‘express’); var path = require(‘path’); var cookieParser = require(‘cookie-parser’); var logger = require(‘morgan’); //解读日志 // 引入路由 var indexRouter = require(‘./routes/index’); var usersRouter
exampleJS:JavaScript示例代码
exampleJS JavaScript示例代码 tryto_WebSocket_server_push WebSocket示例。服务器端是用C语言创建的。 使用libwebsockets库。 build_test-server.sh libwebsockets附带的构建测试服务器 run_test-server.sh运行libwebsockets随附的测试服务器 客户端是 build_example.sh生成示例(服务器) run_example.sh运行示例(服务器) 客户端在浏览器中运行src / client.html tryto_ModelessDiag 无模式对话框的示例。 关键是您可以访问通过使用window.opener对象打开的原始DOM。 example1在Windows 7 Chrome Ver.44中,该值未从子窗口传递到父窗口。 example2即使
【亲测免费】 Vue+Node.js+ElementUI+MySQL+Express 项目教程
Vue+Node.js+ElementUI+MySQL+Express 项目教程 1. 项目目录结构及介绍 vue-nodejs-elementUI-mysql-express-demo/ ├── express-demo/ │ ├── app.js │ ├── bin/ │ ├── config/ │ ├── controllers/ │ ├── models/ │ ├─...
基于MATLAB对地下水水位的数据处理
本文借用Matlab强大的计算功能和绘图功能,对某阿拉干监测数据进行曲线拟合,得到拟合函数。再利用GM(1.1)时间序列模型构建地下深埋的预测模型,进而对阿拉干 2021,四个位置H1,H2,H3,H4年度各监测井平均深埋位置变化进行分析。
Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)
本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。
Node.js 应用根路径管理库 - app-root-path 快速指南
Node.js 应用根路径管理库 - app-root-path 快速指南 项目介绍 app-root-path 是一个简洁而强大的Node.js模块,旨在帮助开发者轻松获取应用程序的根目录路径。这在处理多文件、多层级结构的项目中尤为重要,它使得引用资源和配置文件时无需硬编码具体路径,增强应用的可移植性和维护性。 项目快速启动 要快速开始使用 app-root-path, 首先需要将其添加到你的项...
从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃
本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。
Swagger Server 教程:从零开始搭建RESTful API服务
Swagger Server 教程:从零开始搭建RESTful API服务 一、项目目录结构及介绍 Swagger Server 是一个基于Express框架的Node.js应用,用于快速构建和文档化RESTful APIs。以下是其基本的项目目录结构及其简介: swagger-server/ ├── app.js <!-- 主入口文件,启动应用程序 --...
13、离散时间系统建模与分析
本文系统介绍了离散时间系统的建模与分析方法,涵盖连续时间模型的离散化过程、系统稳定性判断准则、输入输出模型转换方法以及有限脉冲响应和阶跃响应模型的应用。通过多个示例详细展示了不同系统在离散化过程中的特性变化,并探讨了采样间隔对系统动态特性的影响。此外,文章还分析了时间延迟的处理方法,并总结了关键知识点及操作步骤,为离散时间系统的实际应用提供了理论基础和实践指导。
2026华为OD面试题029:勇攀数字高峰
在给定的数字地形图里寻找登山路径,数字代表当前位置的海拔高度。要求从最低海拔出发,不断攀登,最终到达最高山峰。地图保证最低海拔和最高山峰都只有一个。 登山规则: - 路径上的海拔必须严格递增 - 只能向上下左右 4 个方向移动 - 路径必须从最低海拔开始,到最高海拔结束 - 每个地点只能走一次 - 每一步的攀登高度差必须大于 0,且不超过指定值 `K` 输出满足条件的登山路径的数量。
Node.js 电商项目搭建教程
Node.js 电商项目搭建教程 本教程基于 RafaelGoulartB/nodejs-ecommerce,一个使用Express框架和MySQL数据库实现的MVC架构电商项目。我们将逐步了解其核心组件,并指导您如何设置和理解此项目。 1. 项目目录结构及介绍 Node.js电商项目遵循清晰的MVC(Model-View-Controller)设计模式,确保代码的组织性和可维护性。以下是项目的主...
【深度学习新浪潮】气候预测模型的研发进展一览(2025年版)
模型类型核心优势适用场景不足ARIMA(统计模型)简单高效、可解释性强短期单变量预测非线性、长时依赖建模差随机森林(机器学习)多特征融合、抗噪声中短期多因素预测空间相关性、时序趋势捕捉弱LSTM(深度学习)长时依赖建模、端到端中长期时序预测物理一致性差、数据需求量大物理知情AI物理规律约束、高可靠性极端天气、长期气候变化模型复杂、计算成本高。
Protractor Demo 项目使用教程
Protractor Demo 项目使用教程 1. 项目的目录结构及介绍 protractor-demo/ ├── app/ │ └── expressserver.js ├── howtos/ ├── test/ │ ├── conf.js │ └── spec.js ├── .gitignore ├── LICENSE ├── README.md ├── package.json ...
AI原生应用API编排:如何实现高效的权限管理?
随着GPT-4、Claude 3等大模型的普及,AI原生应用(从设计之初就以AI为核心的应用)正从“概念”走向“落地”。依赖大量外部API的协同工作(如用户身份API→大模型生成API→支付API→存储API)。但随之而来的挑战是:如何在复杂的API调用链中,确保每个环节的权限合规?本文将聚焦这一问题,覆盖API编排的基础逻辑、权限管理的核心机制(如RBAC/ABAC)、实战工具链(如OPA策略引擎),以及常见场景的解决方案。本文将按照“场景引入→核心概念→原理拆解→实战演练→趋势展望”的逻辑展开。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
node.js第三方Express 框架
1、Express 简介 2、Express 安装及使用 3.Express 安装 4.Nodemon的使用 5.Express 的使用
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
Express.js 项目快速指南
Express.js 项目快速指南 【免费下载链接】express 项目地址: https://gitcode.com/gh_mirrors/exp/express 1. ...
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Express框架
Express框架
微软Graph JavaScript SDK Node.js Express应用指南
微软Graph JavaScript SDK Node.js Express应用指南 项目概述 此项目是一个演示如何运用Microsoft Graph JavaScript SDK在Node.js环境下,通过Express框架访问Office 365数据的样例应用。适用于希望将Office 365服务融入其Web应用的开发者。 目录结构及介绍 该开源项目采用标准的Node.js工程布局,主要结...
Nodejs--Express框架使用
我们可以写一个类似springmvc那样的拦截器,来判断是否登录//导入会话管理next();}else{//如果不是白名单,那么就需要验证了console.log("黑名单拦截...");//黑名单= null){//比较二者值//相等,放行,跟新session时间console.log("放行...");//遍历完没有找到seesionID,说明回话过期return res.status(401).json({message:'会话过期!,请重新登录'})
Express入门
一旦项目启动并运行,你可以根据需要自定义和扩展它。添加路由:在routes目录中创建新的路由文件。配置中间件:在app.js中添加或配置中间件。连接数据库:使用 Mongoose、Sequelize 等 ORM 库连接 MongoDB、MySQL 等数据库。设置环境变量:使用.env文件和dotenv包来管理环境变量。通过以上步骤,你已经在 VSCode 中成功初始化了一个 Express 项目。提供了一种快速且简便的方法来搭建项目结构,使你可以专注于编写业务逻辑。
633



被折叠的 条评论
为什么被折叠?



