vue前端+nodejs后端通信-简单demo

news2024/10/7 16:22:17

本文记录vue前端+nodejs后端通讯最简单的方法,供广大网友最快速进入全栈开发。
技术架构
前端 vue + axios
后端 nodejs + express

一、前端部分-搭建VUE 项目

vue create Vnode

npm run serve 启动;
具体操作步骤,请自行百度,这里没什么难度昂。

二、后端-node

1、 在vue项目,src同级目录下,创建app.js 文件

在这里插入图片描述

app.js

// 引入express模块
const express=require("express");

// 引入bodyParser模块
const bodyParser=require("body-parser");

// 创建web服务器
var server=express();
server.listen(3001);

// 托管静态资源到public
server.use(express.static('public'));

// 配置post请求第三方中间件
server.use(bodyParser.urlencoded({ extended:false })) //formData格式解析
server.use(bodyParser.json()) //json解析


// 引入路由模块
const login=require("./src/router/login.routers");//用户登录
const user = require("./src/router/user.routers")
server.use('/login',login);//用户登录
server.use('/user',user);//用户信息

server.listen(82, () => {
    console.log('服务器启动:'+'http://127.0.0.1')
  })

 

2、 在routers文件夹下新建login.routers.js,里面含有各路由信息

// 引入express模块
const express=require('express');
// 创建一个空的路由对象
const router=express.Router();
// 引入连接池模块
const pool=require('./pool');
//post请求是req.body,get请求是req.query
 router.post('/',(req,res)=>{
    var name=req.body.name;
    // console.log(name);
    var pwd=req.body.pwd;
    // console.log(pwd);
    if(!name){
        res.send("您输入的用户名不存在");
        return;
    }
    if(!pwd){
        res.send("您输入的密码不存在");
        return;
    }
    pool.query('select * from user where  name=? and pwd=?',[name,pwd],(err,result)=>{
        if(err) throw err;
         console.log(result);
         console.log(result.length);

         if(result.length>0){
            res.send({status:1,rel:result,msg:'登录成功'});
        }else{
          res.send({status:0,msg:"用户名或密码不正确"});
        }
     })       
 })
 module.exports=router;

3、在routers文件夹下新建user.routers.js,获取用户信息

var express = require('express');
var router = express.Router();
router.get('/getInfo', function (req, res) {
	var user = {
		name: '李四',
		age: 30,
		sex: 'woman',
	};
	var response = { status: 1, data: user };
	res.send(JSON.stringify(response));
});

module.exports = rouçter;

4、.同级目录下新建pool.js(文件名自定义)

//创建连接池
const mysql=require('mysql');
var pool=mysql.createPool({
    host:'127.0.0.1',
    port:'3306', // 数据库端口号
    user:'root', // 数据库用户名
    password:'root', // 数据库密码
    database:'mydatabase', // 数据库名称
    connectionLimit:20 // 最大连接活跃数
});
module.exports=pool;

5、 vue中使用接口

安装axios

npm install axios --save-dev  

main.js

//讲axios绑定到vue原型上
import axios from 'axios'
Vue.prototype.$axios = axios

App.vue文件(具体业务具体写,暂时放这里,测试数据通信)

created() {
	this.$axios.get('/api/users/getInfo').then((res) => {
		console.log(res, 'res-----');// 
	});
},

请求地址后会出现跨域的问题可在前端或者node服务端处理

前端配置代理
在vue根目录下新建vue.config.js文件

module.exports = {
	devServer: {
		proxy: {
			'/api': {
				target: 'http://127.0.0.1:3001', //node.js服务器运行的地址
				ws: true,
				changeOrigin: true,
				pathRewrite: {
					'^/api': 'http://127.0.0.1:3001', //路径重写
				},
			},
		},
	},
};

在node服务端的app.js中设置域名可访问

// 采用设置所有均可访问的方法解决跨域问题
server.all('*', function(req, res, next) {
  // 设置允许跨域的域名,*代表允许任意域名跨域
  res.header('Access-Control-Allow-Origin', '*');
  // 允许的header类型
  res.header('Access-Control-Allow-Headers', 'content-type');
  // 跨域允许的请求方式
  res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS');
  if (req.method.toLowerCase() === 'options') {
    res.send(200); // 让options尝试请求快速结束
  } else {
    next();
  }
});

到此vue中即可访问node写的接口了。
终端,启动服务:node app.js
终端,启动前端: npm run serve
如果过程报错,缺少什么依赖,依次安装即可;
遇到问题,一步步解决,别气馁。

源代码地址:github代码
初写node,一起学习!!

参考文章地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1433367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL-----约束

目录​​​​​ 约束 一 主键约束 1-1 操作-添加单列主键 1-2 操作-添加多列主键 1-3 修改表结构添加主键 1-4 删除主键约束 二 自增长约束 2-1 指定自增长字段的初始值 2-2 删除自增列 三 非空约束 3-1 创建非空约束 3-2 删除非空约束 四 唯一约束…

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10(HJ64 - HJ69) HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲&a…

ffmpeg的使用,安装,抽帧,加水印,截图,生成gif,格式转换,抓屏等

实际使用中总结的关于ffmpeg对视频的处理的记录文档 具体信息: http://ffmpeg.org/download.html 官网下载ffmpeg 关于ffmpeg的安装详细步骤和说明 装ffmpeg 方式,Linux和windows下的 http://bbs.csdn.net/topics/390519382 php 调用ffmpeg , http://bbs.csdn.net/t…

『 C++ - Hash 』闭散列与开散列哈希表详解及其实现 ( 万字 )

文章目录 👾 哈希表概念👾 常见哈希函数🎏 直接定址法🎏 除留余数法 👾 哈希冲突的解决方案🎏 闭散列与闭散列哈希表的实现🎐 闭散列哈希表的节点设置与基本架构🎐 闭散列哈希表的插…

【Linux系统 01】Vim工具

目录 一、Vim概述 1. 文件打开方式 2. 模式切换 二、命令模式 1. 移动与跳转 2. 复制与粘贴 3. 剪切与撤销 三、编辑模式 1. 插入 2. 替换 四、末行模式 1. 保存与退出 2. 查找与替换 3. 分屏显示 4. 命令执行 一、Vim概述 1. 文件打开方式 vim 文件路径&#…

jmeter设置关联

一、为什么要设置关联? http协议本身是无状态的,客户端只需要简单向服务器请求下载某些文件,无论是客户端还是服务端都不去记录彼此过去的行为,每一次请求之间都是独立的。如果jmeter需要设置跨线程组脚本,就必须设置…

【代码随想录-哈希表】有效的字母异位词

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

flutter开发实战-ijkplayer视频播放器功能

flutter开发实战-ijkplayer视频播放器功能 使用better_player播放器进行播放视频时候,在Android上会出现解码失败的问题,better_player使用的是video_player,video_player很多视频无法解码。最终采用ijkplayer播放器插件,在flutt…

C# OMRON PLC FINS TCP协议简单测试

FINS(factory interface network service)通信协议是欧姆龙公司开发的用于工业自动化控制网络的指令/响应系统。运用 FINS指令可实现各种网络间的无缝通信,包括用于信息网络的 Etherne(以太网),用于控制网络的Controller Link和SYSMAC LINK。…

前端框架学习 Vue(3)vue生命周期,钩子函数,工程化开发脚手架CLI,组件化开发,组件分类

Vue 生命周期 和生命周期的四个阶段 Vue生命周期:一个Vue实例从创建 到 销毁 的整个过程 生命周期四个阶段 :(1)创建 (2)挂载 (3)更新 (4)销毁 Vue生命周期函数(钩子函数) Vue生命周期过程中,会自动运行一些函数,被称为[生命周期钩子] ->让开发者可以在[特定阶段] 运行自…

[MFC] MFC消息机制的补充

之前写了[MFC] 消息映射机制的使用和原理浅析,还有些需要补充的,都记在这里。 MFC 消息的分类 MFC消息分为系统消息和自定义消息。 图片来源:C语言/C教程 大型源码案例分析:MFC消息系统的代码解析 易道云编程 系统消息分为窗口…

【SpringBoot】SpringBoot的web开发

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 Wbe开发 使用Springboot 1)、创建SpringBoot应用,选中我们需要的模块; 2)、SpringBoot已经默…

用友GRP-U8 listSelectDialogServlet SQL注入漏洞复现

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 listSelectDialogServlet 接口处存在SQL注入…

chisel RegInit/UInt/U

val reg RegInit(0.U(8.W)) //ok val reg RegInit(0.UInt(8.W)) //errU 使用在数字 . 后边50.U UInt 使用在IO(new Bundle val a Input(UInt(8.W)) 或者 def counter(max:UInt, a1:UInt) package emptyimport chisel3._ import chisel3.util._class MyCounter extends …

操作系统-【预备学习-1】(Linux 文件目录)

文章目录 相关知识目录结构进入目录补充查看目录创建文件删除文件创建文件夹删除文件夹文件和文件夹拷贝文件和文件夹移动/重命名 任务要求 相关知识 目录结构 Linux 文件系统是树形层次结构,具体如下图所示,最重要的是根目录(/&#xff09…

06 - python操作xml

认识XML 与HTML很像,是一种将数据存储在标记之间的标记语言,用户可以自定义自己的标记。 XML文件可以表示称为:XML树。这个XML树从根元素开始,根元素进一步分支到子元素。XML文件的每个元素都是XML树的一个节点,没有…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展,越来越多的企业开始选择使用云服务器来存储和处理数据。然而,对于一些企业来说,他们可能更倾向于使用传统的服务器。在这种情况下,安全性成为了一个重要的考虑因素。那么,服务器和云服务器哪…

arm 汇编积累

C语言函数与汇编对应关系 一、MOV 系列指令 1、指令格式 MOV{条件}{S} 目的寄存器,源操作数 2、含义解析: (1):mov 指令传送数据 案例: MOV R0,R1 ; R0 R1; MOV PC,R14 ;PC R14; MOV R0,R…

[Angular 基础] - 数据绑定(databinding)

[Angular 基础] - 数据绑定(databinding) 上篇笔记,关于 Angular 的渲染过程及组件的创建&简单学习:[Angular 基础] - Angular 渲染过程 & 组件的创建 Angular 之中的 databinding 是一个相对而言更加复杂,以及我个人觉得相对而言比…

Java on Azure Tooling 2024年1月更新|Azure Key Vault 支持、示例项目创建支持及更多

作者:Jialuo Gan - Program Manager, Developer Division At Microsoft 排版:Alan Wang 大家好,欢迎来到 2024 年 Java on Azure 工具的首次更新。在本次更新中,我们将介绍对于 Azure Key Vault 支持、基于 Azure 示例项目的创建支…