研究了几乎整个express connect 框架不知道Nodejs能做什么。

研究了几乎整个express connect 框架不知道Nodejs能做什么。

研究了几乎整个express connect 框架不知道能做什么。。前提 c,c++ 那部分没看过。

13 回复

研究了几乎整个express connect 框架不知道Nodejs能做什么

背景

你已经深入研究了Express和Connect框架,但仍然不确定Node.js到底能做些什么。Express和Connect是基于Node.js构建的Web应用框架,它们简化了许多常见的Web开发任务。通过深入了解这两个框架,你应该能够更好地理解Node.js的强大之处。

Node.js能做什么?

  1. Web服务器开发

    • 基本HTTP服务器:

      const http = require('http');
      
      const server = http.createServer((req, res) => {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello World\n');
      });
      
      server.listen(3000, () => {
        console.log('Server running at http://localhost:3000/');
      });
      
    • 使用Express搭建Web服务器:

      const express = require('express');
      const app = express();
      
      app.get('/', (req, res) => {
        res.send('Hello World!');
      });
      
      app.listen(3000, () => {
        console.log('App listening on port 3000!');
      });
      
  2. API开发

    • RESTful API:
      const express = require('express');
      const app = express();
      app.use(express.json());
      
      let users = [];
      
      app.post('/users', (req, res) => {
        const user = req.body;
        users.push(user);
        res.status(201).send(user);
      });
      
      app.get('/users', (req, res) => {
        res.send(users);
      });
      
      app.listen(3000, () => {
        console.log('API running on port 3000!');
      });
      
  3. 实时应用(如聊天应用)

    • WebSocket通信:
      const WebSocket = require('ws');
      const wss = new WebSocket.Server({ port: 8080 });
      
      wss.on('connection', ws => {
        ws.on('message', message => {
          console.log(`Received: ${message}`);
          wss.clients.forEach(client => {
            if (client !== ws && client.readyState === WebSocket.OPEN) {
              client.send(message);
            }
          });
        });
      });
      
  4. 文件系统操作

    • 读取文件:
      const fs = require('fs');
      
      fs.readFile('/path/to/file', 'utf8', (err, data) => {
        if (err) throw err;
        console.log(data);
      });
      
  5. 数据库操作

    • 连接MongoDB:
      const MongoClient = require('mongodb').MongoClient;
      const uri = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority";
      const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
      
      client.connect(err => {
        const collection = client.db("test").collection("devices");
        // perform actions on the collection object
        client.close();
      });
      

通过这些示例,你可以看到Node.js不仅适用于简单的HTTP服务器,还可以用于复杂的API、实时应用、文件系统操作以及数据库交互等场景。希望这些示例能够帮助你更好地理解Node.js的强大功能。


也是刚接触,connect里都是一些middleware,用于拦截并处理web请求,类似java servlet里的filter,典型的chain of responsibility pattern,express构建于connect之上,作路由很方便

其实我有点不是很喜欢它的路由机制。express给我的感觉一点没有mvc的感觉。递归太多了。尤其是 express 自己的路由处理,全部是递归组织的。有点担心大规模处理堆栈会受不了。

我也不喜欢express风格的路由。

觉得路由不爽的来试试rainbow

呃,楼主真的明白什么是MVC么…

最近也在研究connect,表示还不错!connect就是一堆中间件的集合,connect负责对这些中间件进行管理,对HTTP请求进行过滤并处理,比较接近底层。区区200多行代码,能实现这样的功能实属不易,楼主还指望connect有更丰富,完善的功能么。

不是,我很欣赏connect 的模式,我是不喜欢express的路由分发机制。

楼主真的看过代码了吗?middleware和middleware之间不是递归调用的,就算你写再多middleware,也不用担心堆栈溢出。

我又看了一下,都是在内部递归的,不全部返回函数是不会退出的。不论是use的,还是get,,post 里面的都一样。

express这东西,初看,觉得很多余,不如用nodejs 的http来得直接了当,用了后,才觉得那作者真是鬼才,小小的一个express,解决了很多问题。

其实我倒是觉得 更是因为有connect 这个插件做基础。刚开始看的时候没注意还以为connect是express的一部分。后来发现不是。connect 里面定义了中间件的处理方式。虽然没有完整的路由,但是开源的东西的确不缺这个。

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。通过 Node.js,你可以构建各种类型的服务器端应用程序和服务。Express 是一个基于 Node.js 的 Web 应用框架,它可以帮助你快速搭建 Web 服务。即使你已经研究了 Express 和 Connect 框架,可能仍然有很多应用场景没有接触到。以下是一些 Node.js 可以做的事情的例子:

  1. Web 服务:使用 Express 框架创建 RESTful API 或 Web 应用。

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
        res.send('Hello World!');
    });
    
    app.listen(3000, () => {
        console.log('Server is running on port 3000');
    });
    
  2. 命令行工具:构建可执行文件,用户可以在命令行中调用这些文件。

    #!/usr/bin/env node
    
    console.log('Hello from CLI!');
    
  3. 实时应用(如聊天室):使用 WebSocket 技术实现客户端与服务器之间的双向通信。

    const http = require('http');
    const WebSocket = require('ws');
    
    const server = http.createServer();
    const wss = new WebSocket.Server({ server });
    
    wss.on('connection', ws => {
        ws.on('message', message => {
            console.log(`Received: ${message}`);
            wss.clients.forEach(client => {
                if (client !== ws && client.readyState === WebSocket.OPEN) {
                    client.send(message);
                }
            });
        });
    });
    
    server.listen(8080, () => {
        console.log('Server is listening on port 8080');
    });
    
  4. 爬虫:抓取网页内容。

    const axios = require('axios');
    const cheerio = require('cheerio');
    
    async function fetchWebsiteContent() {
        try {
            const response = await axios.get('https://example.com');
            const $ = cheerio.load(response.data);
            console.log($('title').text());
        } catch (error) {
            console.error(error);
        }
    }
    
    fetchWebsiteContent();
    
  5. 数据库操作:与 MongoDB、MySQL 等数据库进行交互。

    const MongoClient = require('mongodb').MongoClient;
    const url = 'mongodb://localhost:27017';
    
    MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
        if (err) throw err;
        console.log('Connected to Database');
        const db = client.db('mydb');
        db.collection('customers').insertOne({ name: 'John', address: 'Highway 37' }, (err, res) => {
            if (err) throw err;
            console.log('1 document inserted');
            client.close();
        });
    });
    

以上示例展示了 Node.js 的一些常见用途,但其实它的潜力远不止于此。Node.js 在构建高性能网络应用、实时协作工具、物联网设备管理等方面都有广泛应用。

回到顶部