最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了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应用的更多相关文章

  1. node.js入门及express.js框架

    node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...

  2. Node.js构建可扩展的Web应用1

    <Practical Node.js:Building Real-World Scalable Web Apps>[美]Azat Mardan(电子工业出版社) 安装node.js和NPM ...

  3. 《Pro Express.js》学习笔记——概述

    要学Node.js,先学Express.js. Express.js是Node.js官方推荐的基础框架. Express.js框架经过一系列的发展,已经到了4.x版本.新的版本解决了3.x之前版本的依 ...

  4. node.js Web应用框架Express.js(一)

    什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随 ...

  5. node.js框架express的安装

    node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...

  6. [转]Node.js框架对比:Express/Koa/Hapi

    本文转自:https://www.cnblogs.com/souvenir/p/6039990.html 本文翻译自: https://www.airpair.com/node.js/posts/no ...

  7. [译]Node.js框架对比:Express/Koa/Hapi

    本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1.介绍 直至今日, ...

  8. Node.js 框架对比之 Express VS Koa

    背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣. Node 服务层作用: 请求代理 传统做法 ...

  9. nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点

    nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...

随机推荐

  1. Jsp页面获取项目名称

    方式一: ${pageContext.request.contextPath} 方式二: <%= this.getServletContext().getContextPath() %>

  2. Android SQLite总结[转载]

    [转载] :http://blog.163.com/zqy216_2008/blog/static/4119371820119954812509/ 最近在做的项目涉及到了SQLite,大学时没有好好学 ...

  3. iOS开发——设备信息小结(未完待续...)

    1.获取设备的信息  UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name;       //获取设备所有者 ...

  4. HDU 3501 Calculation 2 ——Dirichlet积

    [题目分析] 卷积太有趣了. 最终得出结论,互质数和为n*phi(n)/2即可. 计算(n*(n+1)/2-n-n*phi(n)/2)%md,用反正法即可证明. [代码] #include <c ...

  5. 【转】人工智能(AI)资料大全

    这里收集的是关于人工智能(AI)的教程.书籍.视频演讲和论文. 欢迎提供更多的信息. 在线教程 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程 人工智能入门 – 人工智能基础学习.Peter ...

  6. “&”详解

    1.引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. &作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错. 2.取地址 &作为取地 ...

  7. 微信小程序之----底部菜单action-sheet

    action-sheet action-sheet是从底部弹出的选择菜单,子菜单通过action-sheet-item和action-sheet-cancel指定,action-sheet-item是 ...

  8. c#中反射

    在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例. MSDN解释 ...

  9. poi2007

    序:为什么写poi,zy说poi都是思路题目,不像hnoi妈的数据结构队..... 1.bzoj1102 题目大意:定义了一个山谷和山峰,求他们数量. 题解:这种题bfs咯,在bfs的时候记录一下相邻 ...

  10. Python3基础 用 函数递归求解 一个数字的阶乘

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...