《Node应用程序构建——使用MongoDB和Backbone》一2.2 Express

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

本节书摘来自异步社区《Node应用程序构建——使用MongoDB和Backbone》一书中的第2章,第2.2节,作者【美】Mike Wilson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 Express

Node应用程序构建——使用MongoDB和Backbone
本书中应用程序大量用到Express框架。依赖于Connect HTTP服务器框架,Express提供了视图渲染和一种描述路由的语言。

要安装Express,只要在工作目录中使用npm:npm install express。

例2-1利用Express构建了一个简单且非常实用的服务器。首先,通过调用express库中的express()函数对app变量初始化。require命令指示Node导入express库,并把它分配给一个局部变量,从而将它的功能提供给当前命名空间。


595e7c28af4bb1e6c5ca3ae57557d34ef3b02e33

应用初始化时,定义了3个路由。

/stooges/[name]

期待一个stooge(配角)的名字作为输入。

/stooges/

如果上一个路由提供的名字未找到,给出反馈信息。

/

一个默认的路由,用于访问应用程序的主页。

在第1个路由,Express会比较提供的配角名称是否为“larry”、“curly”或“moe”,并打印信息。在下一个路由中,Express显示一条消息说明没有找到配角名称。第3个路由中,显示默认的“hello world”。

等一下,第1个路由中的next参数是从哪里来的?它又是什么?实际上,next是指一个函数。next命令指示Express尝试处理匹配当前请求的下一个路由。在这个例子中,输入URL/stooges/ 会被第一个路由(/stooges/:name?)处理,而不是被第2个路由(/stooges)处理。由于没有提供名字,switch语句逻辑会跳转到默认情况下,此时next()函数会被调用。下一个路由(/stooges)包含了预期的响应。

:name参数之后的问号表明name是一个可选的输入,即使不提供name,这个路由也将被加载。


ffc0b1b3a782559b6e69e2c1ae2ae44eab2705a2

在switch语句中,使用了一个三元操作符作为缩写的if/else语句:name ? name. toLowerCase() : ''。这相当于一个很长的代码块,检查变量name是否存在,如果存在,返回小写的字符串,否则返回一个空字符串。


5189d0069b2e921cc46235abda5922079269d02b

模板
模板让你将展现信息从程序代码中分离出来,使你的项目文件更易整理,并渲染出复杂结构的网页。虽然本书主要关注用纯JavaScript来创建和显示视图,但有时候你也会想用Express的模板功能来生成网页,或者只是为了更容易在一个网页中引导所有的JavaScript文件。我选择Jade作为引擎,因为它在概念上类似于CSS,能产生清晰、简洁的代码。

要安装Jade模板引擎,在工作目录中使用NPM命令。


13160ce33c1fc365fd9d6a82ba87b19a9545bc99

例2-2在例2-1的基础上增加了Jade模板支持。3个路由都使用了res.send代替直接在屏幕上打印文字。Express被告知以.jade作为后缀的文件来渲染内容:要么用stooges.jade模板来渲染配角名字列表(或没有名字),要么用默认的index.jade来渲染网站的根。


121a45a5f2b143ee7b1767fc8bf75e6992785ac8

另外新增的是包含app.set('views'...)的3行代码。这个命令告诉Express所有视图都存放在命名为“views”的目录下,是相对于代码文件运行(-dirname)的下级目录。

虽然Jade是用来渲染视图的,但你可能已经注意到,代码中并没有提到或实例化Jade。这是因为Express渲染命令会负责加载任何需要的模板模块,在这个例子中是Jade。如果你没有安装Jade,你的应用程序将会在进行页面渲染时停止运行,并抛出调用栈。

例2-3展示了使用Jade的整个页面布局。这是围绕“真正”页面的部分,它们是网站每一个页面上的标题信息,开放的标签和元数据。body标签将包含单个视图渲染的布局,Express渲染模板时将会包含这个布局。

例2-3 Jade布局(layout.jade)
!!! 5


814bc271b27e917aaa0886292e18f2c8e01b8290

第一行“!!! 5”表明文档类型是HTML5。也可以写成doctype html,但谁高兴打那么多字?

例2-4中包含的模板应该保存在views/index.jade中。它包含网站根内容:没什么消息比一个“hello world”更简单。这个模板的第一行扩展了例2-3中创建的layout.jade模板,这将导致用户的网络浏览器渲染布局的内容。因为h1标签嵌套在模板的block content元素中,Jade知道它应该在布局中的block content被定义后再被渲染。

例2-4 Jade风格的索引主页(index.jade)


519d650e56d3a1a0825d736c961f5f7fb4fe0a42

你可能会注意到,例2-3的布局还包含一个block元素称为scripts,它没有被index模板使用。这个脚本块在网页浏览器中显示为空白。可以在你的模板中添加或删除任何block内容,为页面布局留下极大的灵活性。

例2-5在Jade模板中引入了条件逻辑。如果一个stooge变量被传递到模板,它将显示出这个配角的名字,否则它将显示一般的“没有找到”消息。

例2-5 Jade风格的新stooges页面(stooges.jade)


73d18005371f22bd39cecd2e00a4c748d96196c0
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js:从零开始构建后端服务
【10月更文挑战第42天】在数字时代的浪潮中,掌握一门后端技术对于开发者来说至关重要。Node.js,作为一种基于Chrome V8引擎的JavaScript运行环境,允许开发者使用JavaScript编写服务器端代码,极大地拓宽了前端开发者的技能边界。本文将从Node.js的基础概念讲起,逐步引导读者理解其事件驱动、非阻塞I/O模型的核心原理,并指导如何在实战中应用这些知识构建高效、可扩展的后端服务。通过深入浅出的方式,我们将一起探索Node.js的魅力和潜力,解锁更多可能。
|
2月前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
29天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
44 12
|
2月前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
2月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
2月前
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
74 1
|
2月前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
2月前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
2月前
|
Web App开发 JSON JavaScript
Node.js 中的中间件机制与 Express 应用
Node.js 中的中间件机制与 Express 应用
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API