Nodejs Expressjs 4.x 与 3.x 区别有多大?
Nodejs Expressjs 4.x 与 3.x 区别有多大?
说是 4.x 有很好的提升 可是 4.x 默认就不支持 files了 还需要中间件 expressjs是"闹的"哪一出?
有有经验的朋友 分享一下吧~~~
Node.js Express.js 4.x 与 3.x 的区别有多大?
引言
Express.js 是一个流行的 Node.js 框架,用于构建 Web 应用程序。从 Express 3.x 到 4.x,框架经历了一些重要的变化,这些变化影响了开发者的使用方式。
主要变化
-
路由中间件的变化
- 在 Express 3.x 中,
app.router()
不再被自动调用。你需要显式地引入中间件来处理路由。 - 示例代码:
// Express 3.x 示例 var express = require('express'); var app = express(); app.use(express.router()); app.get('/', function(req, res) { res.send('Hello World!'); }); // Express 4.x 示例 var express = require('express'); var app = express(); app.get('/', function(req, res) { res.send('Hello World!'); });
- 在 Express 3.x 中,
-
中间件的变化
- Express 4.x 移除了内置的中间件(如
bodyParser
、cookieParser
等),开发者需要单独安装这些中间件。 - 示例代码:
// Express 4.x 示例 var express = require('express'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.get('/', function(req, res) { res.send('Hello World!'); });
- Express 4.x 移除了内置的中间件(如
-
静态文件服务
- 在 Express 4.x 中,静态文件服务不再默认启用。你需要手动配置
express.static
中间件。 - 示例代码:
// Express 4.x 示例 var express = require('express'); var path = require('path'); var app = express(); app.use(express.static(path.join(__dirname, 'public'))); app.get('/', function(req, res) { res.sendFile(path.join(__dirname, 'views', 'index.html')); });
- 在 Express 4.x 中,静态文件服务不再默认启用。你需要手动配置
结论
虽然 Express 4.x 相比 3.x 有一些显著的变化,但这些变化主要是为了提高灵活性和模块化。开发者可以通过安装所需的中间件来实现相同的功能。这使得应用可以根据具体需求进行更灵活的配置。
希望这些信息对你有所帮助!如果你有任何其他问题或需要进一步的帮助,请随时提问。
node.js 是专业程序员用的,需要专业扎实的基础知识。。。。 很多东西需要自己实现,很多库需要自己再次封装。 各类库的api 的使用,是在理解原理的基础上才能用得更好。 不理解原理,就只是玩具。
4.x 其实只是更纯粹了而已…
以前只是内置了一些中间件…现在独立出来…
核心的东西其实都没变…
4.X 源代码更清晰,文档更全面了,把connect模块替换成更简单的自己实现router http请求流程控制,原理还是一样,用数组储存中间件,其实就是(path,fn)对,然后http按次序进入各个中间件,执行完后返回。
我觉得你最好别用express, nodejs最重要的就是route, 如果你不会自己写find route, 你是没法搞懂nodejs为什么能运行的。
而且我感觉作者的面向对象已经把request, response给糊的面目全非了,什么东西毫无关联的你都可以通过req.xxx来访问。
新版对于懒人确实不太友好;相反却很灵活,给你乐高积木,自己搭,爱咋咋样!
Node.js 的 Express 4.x 相比于 3.x 确实有一些重要的变化。这些变化主要体现在路由、中间件处理以及默认功能上。以下是一些关键点:
-
路由简化:
- Express 3.x 使用
app.route
方法来定义路由路径。app.get('/user', function(req, res) { // 处理逻辑 });
- Express 4.x 继续支持上述语法,但你可以更简洁地使用路由中间件。
const express = require('express'); const app = express(); app.get('/user', (req, res) => { res.send('User Page'); });
- Express 3.x 使用
-
中间件变化:
- Express 3.x 中间件直接通过
app.use
安装,比如bodyParser
和methodOverride
是内置中间件。var bodyParser = require('body-parser'); var methodOverride = require('method-override'); app.use(bodyParser.urlencoded({ extended: false })); app.use(methodOverride());
- Express 4.x 移除了这些内置中间件,你需要手动安装它们。
npm install --save body-parser method-override
const bodyParser = require('body-parser'); const methodOverride = require('method-override'); app.use(bodyParser.urlencoded({ extended: false })); app.use(methodOverride());
- Express 3.x 中间件直接通过
-
静态文件服务:
- Express 3.x 中静态文件服务是内置的。
app.use(express.static(path.join(__dirname, 'public')));
- Express 4.x 继承了这一功能,并且没有改变。
app.use(express.static(path.join(__dirname, 'public')));
- Express 3.x 中静态文件服务是内置的。
-
模板引擎:
- Express 3.x 默认使用
jade
模板引擎。app.set('view engine', 'jade');
- Express 4.x 允许你选择任何模板引擎,而不仅仅是
jade
。app.set('view engine', 'ejs'); // 或者任何其他模板引擎
- Express 3.x 默认使用
总结来说,Express 4.x 更加模块化和灵活,使得开发者可以自由选择所需的中间件。虽然需要一些额外的配置,但这也提供了更高的灵活性和更好的性能。