实现动态服务器一般需要掌握以下几个方面的知识:
-
Node.js的基础语法和模块
-
Http模块的使用
-
路由功能的实现
-
模板引擎的使用
-
数据库的连接及操作
下面将采用一个简单的示例来讲解如何使用Node.js实现一个动态服务器。
- 搭建基础框架
首先在本地创建一个文件夹作为项目的根目录,并在该目录下创建一个主文件index.js。在index.js中导入http模块,并搭建简单的服务器框架,代码如下:
const http = require('http');
const server = http.createServer(function(req, res){
//TODO:这里添加代码
});
server.listen(3000);
console.log('Server is running at http://127.0.0.1:3000/');
- 添加路由功能
当用户访问网站时,服务器需要根据请求的URL路径,选择相应的处理方式。所以我们需要添加一个简单的路由功能。在index.js文件中,添加以下代码:
const http = require('http');
const server = http.createServer(function(req, res){
if(req.url == '/'){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}else if(req.url == '/about'){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('About Page\n');
}else{
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Page Not Found\n');
}
});
server.listen(3000);
console.log('Server is running at http://127.0.0.1:3000/');
在以上代码中,我们判断请求的URL路径,选择相应的处理方式。例如,如果请求的是网站的首页,就返回“Hello World”,如果请求的是关于页面,就返回“About Page”,如果请求的是其他页面,就返回“Page Not Found”。
- 添加模板引擎
模板引擎可以让我们更方便地生成HTML文件,这里我们选用ejs作为模板引擎。首先需要安装ejs模块,命令为:
npm install ejs --save
安装完成后,在index.js中添加以下代码:
const http = require('http');
const ejs = require('ejs'); //导入ejs模块
const server = http.createServer(function(req, res){
if(req.url == '/'){
//渲染首页模板文件
let html = ejs.render("<h1>Hello <%= name %></h1>", {name: "Node.js"});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
}else if(req.url == '/about'){
//渲染关于页面模板文件
let html = ejs.render("<h1>About page</h1><p><%= content %></p>", {content: "This is about page."});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
}else{
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Page Not Found\n');
}
});
server.listen(3000);
console.log('Server is running at http://127.0.0.1:3000/');
以上代码中,我们使用ejs.render()函数来渲染模板文件,并将渲染结果作为HTML返回客户端。
- 连接数据库
在实际开发中,我们通常需要使用数据库,这里以MySQL为例,需要使用mysql模块来连接数据库。首先需要安装mysql模块,命令为:
npm install mysql --save
安装完成后,在index.js中添加以下代码:
const http = require('http');
const ejs = require('ejs');
const mysql = require('mysql'); //导入mysql模块
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '123456',
database: 'test'
}); //创建连接
const server = http.createServer(function(req, res){
if(req.url == '/'){
//从数据库中查询数据并渲染首页模板文件
connection.query('SELECT * FROM users', function(err, rows, fields) {
if (err) throw err;
let html = ejs.render(`
<h1>User List</h1>
<ul>
<% users.forEach(function(user){ %>
<li><%= user.name %></li>
<% }); %>
</ul>
`, {users: rows});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
});
}else if(req.url == '/about'){
let html = ejs.render("<h1>About page</h1><p><%= content %></p>", {content: "This is about page."});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
}else{
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Page Not Found\n');
}
});
connection.connect(); //连接数据库
server.listen(3000);
console.log('Server is running at http://127.0.0.1:3000/');
以上代码中,我们使用mysql.createConnection()函数创建数据库连接,并使用connection.query()函数从数据库中查询数据。
综上所述,以上为用Node.js实现原理和搭建服务器(动态)的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用nodejs的实现原理和搭建服务器(动态) - Python技术站