研究了几乎整个express connect 框架不知道Nodejs能做什么。
研究了几乎整个express connect 框架不知道Nodejs能做什么。
研究了几乎整个express connect 框架不知道能做什么。。前提 c,c++ 那部分没看过。
研究了几乎整个express connect 框架不知道Nodejs能做什么
背景
你已经深入研究了Express和Connect框架,但仍然不确定Node.js到底能做些什么。Express和Connect是基于Node.js构建的Web应用框架,它们简化了许多常见的Web开发任务。通过深入了解这两个框架,你应该能够更好地理解Node.js的强大之处。
Node.js能做什么?
-
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!'); });
-
-
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!'); });
- RESTful API:
-
实时应用(如聊天应用)
- 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); } }); }); });
- WebSocket通信:
-
文件系统操作
- 读取文件:
const fs = require('fs'); fs.readFile('/path/to/file', 'utf8', (err, data) => { if (err) throw err; console.log(data); });
- 读取文件:
-
数据库操作
- 连接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(); });
- 连接MongoDB:
通过这些示例,你可以看到Node.js不仅适用于简单的HTTP服务器,还可以用于复杂的API、实时应用、文件系统操作以及数据库交互等场景。希望这些示例能够帮助你更好地理解Node.js的强大功能。
也是刚接触,connect里都是一些middleware,用于拦截并处理web请求,类似java servlet里的filter,典型的chain of responsibility pattern,express构建于connect之上,作路由很方便
我也不喜欢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 可以做的事情的例子:
-
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'); });
-
命令行工具:构建可执行文件,用户可以在命令行中调用这些文件。
#!/usr/bin/env node console.log('Hello from CLI!');
-
实时应用(如聊天室):使用 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'); });
-
爬虫:抓取网页内容。
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();
-
数据库操作:与 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 在构建高性能网络应用、实时协作工具、物联网设备管理等方面都有广泛应用。