使用Node.js+express+Ajax实现前后段分离开发

🌵 前言介绍:以下👇 内容都是我个人对于知识的总结,会定期更新欢迎持续关注!

🌵 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

1、什么是node

Node全称NodeJS,是一个基于Chrome V8引擎的JavaScript运行环境;一个让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl等服务端语言平起平坐的脚本语言。

1.1安装node

去node官网下载LTS,长期稳定版本:
Node官网
在这里插入图片描述
安装完成后打开命令行输入

node -v
如果出现版本号证明安装成功,如果不出现,再安装一次,可以考虑选择repair

在这里插入图片描述
然后打开代码编辑软件配置淘宝镜像,这里使用的是webstrom进行演示:

npm get registry
如果出现的网址,不是https://registry.npmmirror.com/
则需要改成淘宝镜像地址,命令如下:

 npm set registry https://registry.npmmirror.com/

2、创建项目

在控制台使用cd +tab键切换文件夹到你想要的目录文件下
然后进行初始化:

npm init -y 

在这里插入图片描述
在package.json里面会生成配置信息。

3、什么是express

Express 是一个基于 Node平台的Web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。express提供了简洁的路由定义方式,对获取 http 请求参数进行了简化处理,对模板引擎支持程度高,方便渲染动态HTML页面,拥有中间件机制有效控制 HTTP 请求,拥有大量第三方中间件对功能进行扩展。

3.3、安装express

cd 目标文件夹
npm i express
npm i express-art-template

在这里插入图片描述
同样会在package.json里面生成配置信息。
然后在控制台输入:

node 文件名

启动服务器

4、功能实现

搭建基础登录注册页面。在这里插入图片描述在这里插入图片描述

const express = require('express')

const app = express()

app.engine('html', require('express-art-template'))

//配置body-parser
app.use(express.urlencoded({extended: false}))
app.use(express.json())

app.get('/register.html', (req, res) => {
    res.render('register.html')
})

app.get('/login.html', (req, res) => {
    res.render('login.html') 
})

上述代码通过引入express框架创建了一个服务器应用程序,监听客户端的HTTP请求并响应,node中使用cmd,也叫commonJs模块化方式,用require导入。

app.engine(‘html’, require(‘express-art-template’))

这里使用的是express-art-template模块,用于解析HTML文件。

app.get(‘/register.html’, (req, res) => {
res.render(‘register.html’) })

定义一个GET路由,当客户端请求/register.html时,服务器会响应一个HTML页面。res.render()方法用于渲染HTML模板,将模板中的变量替换为具体的值。

app.get(‘/login.html’, (req, res) => {
res.render(‘login.html’) })

定义一个GET路由,当客户端请求/login.html时,服务器会响应一个HTML页面。与上面的/register.html路由类似。

app.get('/test_email', (req, res) => {
    console.log(req.query)
    if (req.query.email === '2028076332@qq.com') {
        res.send('账号已注册')
    } else {
        res.send('')
    }
})

app.post('/login', (req, res) => {
    console.log(req.body)
    if (req.body.email === '2028076332@qq.com' && req.body.password === 'admin')
        //post向后端发送用body接收
        res.render('index.html')  //渲染页面
    else res.send('账号密码错误')
})

app.get('/text_email', (req, res) => {
    console.log(req.query)
    if (req.query.email === '2028076332@qq.com') {
        res.send('账号已注册')
    } else {
        res.send('查无此号')
    }
})

app.listen(3000, () => console.log('app is running'));

我们使用了POST和GET路由来处理用户提交的数据和请求,并使用模板引擎来渲染页面。我们实现了一个登录功能,当用户输入正确的账号密码时,进入主页,否则提示账号密码错误;还实现了一个邮箱验证功能,当用户输入已注册的邮箱时,返回账号已注册,否则返回查无此号。

account.onblur=()=>{
    const xhr = new XMLHttpRequest() //创建一个XMLHttpRequest对象,用于向后端发送请求
    // const params = `/test_account?account=' + account.value
    const params = `/test_account?account=${account.value}`
    xhr.open('GET',params,true)//设置请求方式和url
    xhr.onreadystatechange = ()=>{//监听XMLHttpRequest对象的onreadystatechange事件,当状态改变时触发回调函数。
        if (xhr.readyState===4&& xhr.status===200){
            //当后端的response成功回传后,readyState将变成4.status将变成200
            console.log(xhr.responseText)
            //打印XMLHttpRequest对象的响应内容,也就是后端返回的数据。xhr.responseText是XMLHttpRequest对象的一个属性,			表示后端返回的响应内容。
        }
    }
        xhr.send()  //发送请求
}

当输入框失去焦点时,会向后端发送一个GET请求,并将输入框中的值作为参数传递给后端。同时,通过监听XMLHttpRequest对象的状态变化,在后端成功响应后,将响应内容打印到控制台中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例的代码,实现了用户注册、登录和其他接口的编写。 首先需要安装MongoDB、Node.jsExpress框架,可以使用以下命令: ``` sudo apt install mongodb sudo apt install nodejs sudo apt install npm sudo npm install express ``` 接下来创建一个名为`server.js`的文件,这是我们的服务端代码。 ``` const express = require('express'); const bodyParser = require('body-parser'); const MongoClient = require('mongodb').MongoClient; const assert = require('assert'); // 连接MongoDB数据库 const url = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; const client = new MongoClient(url, { useNewUrlParser: true }); client.connect(function(err) { assert.equal(null, err); console.log("Connected successfully to server"); }); const app = express(); const port = 3000; app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 用户注册接口 app.post('/register', function(req, res) { const db = client.db(dbName); const collection = db.collection('users'); const user = req.body; collection.insertOne(user, function(err, result) { if (err) { res.status(500).send('Error inserting user'); } else { res.status(200).send(result.ops[0]); } }); }); // 用户登录接口 app.post('/login', function(req, res) { const db = client.db(dbName); const collection = db.collection('users'); const user = req.body; collection.findOne({ email: user.email, password: user.password }, function(err, result) { if (err) { res.status(500).send('Error finding user'); } else if (result) { res.status(200).send(result); } else { res.status(401).send('Invalid email or password'); } }); }); // 其他接口 app.get('/api/data', function(req, res) { res.send('Data from server'); }); app.listen(port, function() { console.log('Server listening on port ' + port); }); ``` 上面的代码实现了以下功能: - 连接MongoDB数据库 - 解析请求体中的JSON数据 - 用户注册接口:将用户信息插入到MongoDB数据库中 - 用户登录接口:查找MongoDB数据库中是否存在用户名和密码匹配的记录 - 其他接口:返回简单的字符串数据 然后创建一个名为`index.html`的文件,这是我们的客户端代码。 ``` <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <h1>Example</h1> <form id="register-form"> <label>Email:</label> <input type="email" name="email" required><br> <label>Password:</label> <input type="password" name="password" required><br> <button type="submit">Register</button> </form> <form id="login-form"> <label>Email:</label> <input type="email" name="email" required><br> <label>Password:</label> <input type="password" name="password" required><br> <button type="submit">Login</button> </form> <div id="data"></div> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> $(document).ready(function() { $('#register-form').submit(function(event) { event.preventDefault(); $.ajax({ url: '/register', method: 'POST', data: $(this).serialize(), success: function(data) { alert('User registered successfully'); }, error: function() { alert('Error registering user'); } }); }); $('#login-form').submit(function(event) { event.preventDefault(); $.ajax({ url: '/login', method: 'POST', data: $(this).serialize(), success: function(data) { alert('User logged in successfully'); }, error: function() { alert('Invalid email or password'); } }); }); $.ajax({ url: '/api/data', method: 'GET', success: function(data) { $('#data').text(data); } }); }); </script> </body> </html> ``` 上面的代码实现了以下功能: - 用户注册表单:向服务端发送POST请求来注册用户 - 用户登录表单:向服务端发送POST请求来登录用户 - 数据展示区域:向服务端发送GET请求来获取数据 最后在终端中运行服务端代码: ``` node server.js ``` 然后在浏览器中打开`index.html`文件,就可以进行用户注册、登录和其他接口的测试了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值