Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源、跨平台运行时环境。它使开发者可以在服务器端运行 JavaScript,从而实现全栈开发,即在客户端和服务器端都使用同一种编程语言。
可以从 Node.js 官方网站下载并安装适用于你操作系统的版本。
创建项目目录并进入该目录:
mkdir mynodeapp
cd mynodeapp
初始化项目:
npm init -y
创建一个服务器脚本文件,例如 server.js:
// server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
运行服务器:
node server.js
访问服务器:在浏览器中访问 http://127.0.0.1:3000,你应该会看到 “Hello World” 消息。
使用 Express 框架:Express 是一个简洁而灵活的 Node.js Web 应用框架,提供了一系列强大的功能。
npm install express
然后可以这样使用 Express 来创建一个服务器:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
数据库交互:Node.js 可以与多种数据库(如 MongoDB、MySQL、PostgreSQL 等)进行交互。以下是使用 mongoose 连接 MongoDB 的示例:
npm install mongoose
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to the database');
});
好的,我们可以通过一个简单的实时聊天室示例,来展示如何使用 Node.js 和 Socket.io 实现实时交互应用。
首先,确保你已经安装了 Node.js 和 npm(Node 包管理器)。
创建项目目录并进入该目录:
mkdir chat-app
cd chat-app
初始化项目:
npm init -y
安装必要的包:
npm install express socket.io
创建一个服务器脚本文件 index.js:
// index.js
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
const port = 3000;
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
});
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
创建一个 HTML 文件 index.html:
DOCTYPE html>
<html>
<head>
<title>Chat Roomtitle>
<style>
ul { list-style-type: none; margin: 0; padding: 0; }
li { padding: 8px; margin-bottom: 10px; background-color: #f4f4f4; }
input { padding: 10px; width: 80%; margin-right: .5%; }
button { padding: 10px; width: 18%; }
style>
head>
<body>
<ul id="messages">ul>
<form id="form" action="">
<input id="input" autocomplete="off" /><button>Sendbutton>
form>
<script src="/socket.io/socket.io.js">script>
<script>
var socket = io();
var form = document.getElementById('form');
var input = document.getElementById('input');
var messages = document.getElementById('messages');
form.addEventListener('submit', function(e) {
e.preventDefault();
if (input.value) {
socket.emit('chat message', input.value);
input.value = '';
}
});
socket.on('chat message', function(msg) {
var item = document.createElement('li');
item.textContent = msg;
messages.appendChild(item);
window.scrollTo(0, document.body.scrollHeight);
});
script>
body>
html>
启动服务器:
node index.js
访问应用:在浏览器中打开 http://localhost:3000。你将看到一个简单的聊天界面,可以输入消息并发送。
服务器端 (index.js):
express 创建 HTTP 服务器并处理静态文件请求。socket.io 监听客户端连接,接收和广播聊天消息。客户端 (index.html):
socket.io 与服务器通信,发送和接收消息。这个示例展示了如何使用 Node.js 和 Socket.io 创建一个实时聊天应用。你可以在此基础上进行扩展,添加用户管理、消息存储等功能,构建更复杂的实时应用。
通过 Node.js,开发者可以在服务器端充分利用 JavaScript 的优势,构建出高效、可扩展的网络应用。