21xrx.com
2024-11-22 07:42:54 Friday
登录
文章检索 我的文章 写文章
NodeJS网站实例教程
2023-06-28 21:20:27 深夜i     --     --
NodeJS 网站实例 教程 Web开发 前端技术

NodeJS是一个开源的跨平台运行时环境,是基于Chrome V8引擎构建的JavaScript运行时,它使得我们能够使用JavaScript开发后端服务和应用程序。本文将介绍一个使用NodeJS开发的网站实例教程。

1.安装NodeJS和npm

要使用NodeJS,我们首先需要在我们的计算机上安装NodeJS,可以在NodeJS官方网站http://nodejs.org/下载和安装NodeJS,此外,NodeJS安装时会自带npm(Node Package Manager),npm是一种用于共享和安装JavaScript模块的工具。

2.创建项目并安装依赖模块

在命令行中运行以下命令:

$ mkdir mywebsite

$ cd mywebsite

$ npm init

该命令将使用npm初始化我们的项目,并根据提示为我们生成package.json文件,该文件包含项目的基本信息和依赖模块的列表。

接下来,我们需要安装一些需要用到的npm模块:

$ npm install express --save

$ npm install body-parser --save

$ npm install mongoose --save

$ npm install bcrypt --save

$ npm install jsonwebtoken --save

3.配置Express应用程序

我们将使用Express框架构建我们的应用程序。

在项目根目录下创建app.js文件,输入以下代码:


const express = require('express');

const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.json());

app.get('/', (req, res) => {

 res.send('Hello World!');

});

app.listen(3000, () => {

 console.log('Listening on port 3000');

});

4.连接数据库

我们将使用MongoDB作为我们的数据库,使用Mongoose模块来与数据库进行交互。在app.js文件中添加以下代码:


const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/my_database',

 useNewUrlParser: true);

5.创建模型

我们需要创建一系列模型来与数据库进行交互。在models目录下创建user.js和post.js文件,代码如下:

user.js:


const mongoose = require('mongoose');

const bcrypt = require('bcrypt');

const UserSchema = new mongoose.Schema({

 email:

  unique: true,

 password:

  required: true

 

});

UserSchema.pre('save', function(next) {

 const user = this;

 bcrypt.hash(user.password, 10, (err, hash) => {

  if (err) {

   return next(err);

  }

  user.password = hash;

  next();

 });

});

module.exports = mongoose.model('User', UserSchema);

post.js:


const mongoose = require('mongoose');

const PostSchema = new mongoose.Schema({

 title:

  type: String,

 content:

  type: String,

 author:

  type: mongoose.Schema.Types.ObjectId

});

module.exports = mongoose.model('Post', PostSchema);

6.路由

我们需要创建不同的路由来处理不同的HTTP请求。在routes目录下创建auth.js和post.js文件,代码如下:

auth.js:


const express = require('express');

const jwt = require('jsonwebtoken');

const User = require('../models/user');

const router = express.Router();

router.post('/signup', (req, res) => {

 const user = new User(req.body);

 user.save((err) => {

  if (err) {

   res.status(500).send(err);

  } else {

   res.status(200).send('Sign up successful!');

  }

 });

});

router.post('/login', (req, res) => {

 User.findOne(

  email: req.body.email

 , (err, user) => {

  if (err) {

   res.status(500).send(err);

  } else if (!user) {

   res.status(401).send('Authentication failed. User not found.');

  } else {

   user.comparePassword(req.body.password, (err, isMatch) => {

    if (isMatch && !err) {

     const token = jwt.sign(user.toJSON(), 'mywebsitekey');

     res.status(200).send({ token });

    } else {

     res.status(401).send('Authentication failed. Wrong password.');

    }

   });

  }

 });

});

module.exports = router;

post.js:


const express = require('express');

const jwt = require('jsonwebtoken');

const Post = require('../models/post');

const router = express.Router();

router.post('/', (req, res) => {

 const token = req.headers.authorization.split(' ')[1];

 const data = jwt.verify(token, 'mywebsitekey');

 const post = new Post(

  title: req.body.title);

 post.save((err) => {

  if (err) {

   res.status(500).send(err);

  } else {

   res.status(200).send('Post created.');

  }

 });

});

router.get('/', (req, res) => {

 Post.find({})

  .populate('author')

  .exec((err, posts) => {

   if (err) {

    res.status(500).send(err);

   } else {

    res.send(posts);

   }

  });

});

module.exports = router;

7.启动服务器

在命令行中输入以下命令来启动服务器:

$ node app.js

浏览器中输入http://localhost:3000可以看到“Hello World!”的输出,随后使用Postman工具测试我们的API接口是否正常工作。

至此,一个使用NodeJS开发的网站实例就已经完成了。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复