Nodejs Expressjs 4.x 与 3.x 区别有多大?

Nodejs Expressjs 4.x 与 3.x 区别有多大?

说是 4.x 有很好的提升 可是 4.x 默认就不支持 files了 还需要中间件 expressjs是"闹的"哪一出?

有有经验的朋友 分享一下吧~~~

7 回复

Node.js Express.js 4.x 与 3.x 的区别有多大?

引言

Express.js 是一个流行的 Node.js 框架,用于构建 Web 应用程序。从 Express 3.x 到 4.x,框架经历了一些重要的变化,这些变化影响了开发者的使用方式。

主要变化

  1. 路由中间件的变化

    • 在 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!');
      });
      
  2. 中间件的变化

    • Express 4.x 移除了内置的中间件(如 bodyParsercookieParser 等),开发者需要单独安装这些中间件。
    • 示例代码:
      // 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!');
      });
      
  3. 静态文件服务

    • 在 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 相比 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 确实有一些重要的变化。这些变化主要体现在路由、中间件处理以及默认功能上。以下是一些关键点:

  1. 路由简化

    • 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');
      });
      
  2. 中间件变化

    • Express 3.x 中间件直接通过 app.use 安装,比如 bodyParsermethodOverride 是内置中间件。
      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());
      
  3. 静态文件服务

    • Express 3.x 中静态文件服务是内置的。
      app.use(express.static(path.join(__dirname, 'public')));
      
    • Express 4.x 继承了这一功能,并且没有改变。
      app.use(express.static(path.join(__dirname, 'public')));
      
  4. 模板引擎

    • Express 3.x 默认使用 jade 模板引擎。
      app.set('view engine', 'jade');
      
    • Express 4.x 允许你选择任何模板引擎,而不仅仅是 jade
      app.set('view engine', 'ejs'); // 或者任何其他模板引擎
      

总结来说,Express 4.x 更加模块化和灵活,使得开发者可以自由选择所需的中间件。虽然需要一些额外的配置,但这也提供了更高的灵活性和更好的性能。

回到顶部