使用express.js框架一步步实现基本应用以及构建可扩展的web应用
最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了express.js的web框架。
框架的作用就是提高开发效率,快速产出结果。即使不使用框架,我们也会在开发过程中逐渐形成构成框架。
大多数的node.js项目中都会用到express.js
目录:
一、什么是express.js框架
二、express.js是怎么工作的
三、expres.js的安装
四、express.js的脚手架
五、express.js的helloworld基本应用
一、什么是express.js框架?
Express.js框架是基于node.js的http模块和connect组件的web框架。Connect组件就是中间件,以约定大于配置原则作为开发理念。
如果使用核心的node.js模块来开发web应用,会发现很多的代码冗余,例如:
1、解析http请求消息
2、解析cookie
3、管理session
4、根据http请求的方法类型和url路径做路由解析
REST API服务包含两种路由方式,1、基于http请求类型;2、基于URL
开发人员不得不做很多繁琐的工作,需要做http请求方式,url路由解析,分析请求,响应数据等等。
Express.js很好的解决这些繁琐的工作,express.js框架提供了一个类似MVC的架构,,web应用提供了一个良好的结构(MVC)(模型,视图,路由)。
二、express.js是如何工作的?
Express.js是单入口的主文件启动。我们在node命令中启动这个文件。
这个文件中,以下事情:
1、引入第三方模块,比如控制器,公共模块,辅助模块和模型。
2、配置express.js,例如模板引擎
3、连接到数据库,mongoDB,redis,mysql
4、定义中间件
5、定义路由
6、启动应用
7、模块化输出应用
三、express.js的安装
Express包有两种形式:
1、express-generator:一个提供在命令行中快速搭建全局NPM包
2、express:一个在Node.js应用中的node_modules文件夹里的本地模块包
1、express.js生成器
以全局形式安装express.js生成器,命令行输入
npm install –g express-generator@4.0.0
2、本地expres.js
通过在命令行输入
mkdir 文件夹名
新建一个文件夹,这个文件夹名就是项目文件夹。
cd 文件夹名
打开该文件夹名。通过在命令行输入
npm init
创建package.json
最后通过npm安装模块,在命令行输入
npm install express@4.1.2 –save
四、express.js脚手架
具有基本的结构后,通过稳定的脚手架快速启动是非常有必要的,这就是为啥有那么多的不同类型的脚手架。
五、helloworld的web应用
不使用生成器,高级模块,中间件来搭建express.js的应用。
步骤:
1、创建文件夹
2、npm初始化和配置packag.json
3、依赖声明
4、app.js文件
5、结合jade
6、运行应用
1、创建文件夹
node_modules文件夹:express.js和第三方模块的依赖都在这个目录下
views文件夹:jade或者其他模板引擎文件

2、npm初始化和package.json
我们不用express.js生成器,手动创建一个express.js应用,npm是什么,npm是node.js 的包管理器,创建package.json文件是必须的。
(1)可以使用在命令行输入
npm init
输入完成之后就会生成一个package.json文件。
(2)也可以创建package.json文件的方式,写入或者复制粘贴package.json并运行。
package.json文件内容
{
"name": "express",
"version": "1.0.0",
"description": ""
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies":{
"express":"4.1.2",
"jade":"1.3.1",
"mongoskin":"1.4.1",
"stylus":"0.44.0"
},
"author": "",
"license": "ISC"
}
3、index.js文件
index.js文件内容
var express = require('express');
var http = require('http');
var path = require('path');
var app = express();
app.set('port', process.env.PORT || 3001);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.all('*', function(req, res) {
res.render('index', {msg: 'Welcome to my coding life!\n欢迎来到coding世界'})
})
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
4、jade模板

5、运行
在命令行输入
node index
效果图,如下图所示

使用express.js框架一步步实现基本应用以及构建可扩展的web应用的更多相关文章
- node.js入门及express.js框架
node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...
- Node.js构建可扩展的Web应用1
<Practical Node.js:Building Real-World Scalable Web Apps>[美]Azat Mardan(电子工业出版社) 安装node.js和NPM ...
- 《Pro Express.js》学习笔记——概述
要学Node.js,先学Express.js. Express.js是Node.js官方推荐的基础框架. Express.js框架经过一系列的发展,已经到了4.x版本.新的版本解决了3.x之前版本的依 ...
- node.js Web应用框架Express.js(一)
什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随 ...
- node.js框架express的安装
node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...
- [转]Node.js框架对比:Express/Koa/Hapi
本文转自:https://www.cnblogs.com/souvenir/p/6039990.html 本文翻译自: https://www.airpair.com/node.js/posts/no ...
- [译]Node.js框架对比:Express/Koa/Hapi
本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1.介绍 直至今日, ...
- Node.js 框架对比之 Express VS Koa
背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣. Node 服务层作用: 请求代理 传统做法 ...
- nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点
nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...
随机推荐
- Quick Cocos2dx 与 DragonBones
照着官方的例子试验了一下DragonBone的使用,代码如下: local AnotherScene = class("AnotherScene", function() retu ...
- MySQL的 explain 解析
EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 项 说明 id MySQL Query Optimizer 选定的执行计划中查询的序列号.表示查询中执行 select 子句 ...
- (中等) POJ 1703 Find them, Catch them,带权并查集。
Description The police office in Tadu City decides to say ends to the chaos, as launch actions to ro ...
- iOS 将NSArray、NSDictionary转换为JSON格式进行网络传输
http://blog.csdn.net/worldzhy/article/details/49982491 将NSArray.NSDictionary转换为JSON格式进行网络传输,是经常用到的,但 ...
- iOS开发——UIImageView
1.图像点击之后,全屏浏览 - (void)viewDidLoad { [super viewDidLoad]; _myImage=[[UIImageView alloc]initWithFrame: ...
- STM32中的位带(bit-band)操作(转)
源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...
- C#索引器的用法
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...
- poj 3641 ——2016——3——15
传送门:http://poj.org/problem?id=3461 题目大意:给你两个字符串p和s,求出p在s中出现的次数. 题解:这一眼看过去就知道是KMP,作为模板来写是最好不过了.... 这道 ...
- 浅谈ServletContext
ServletContext是什么? WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用.ServletConfig对象中维护了Serv ...
- HDU-1994-利息计算
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1994 水题 题目分析 就是两种储存方式,输出所得本金加利息 代码 #include<stdio. ...