Vue+Nodejs项目中碰到的一些问题

Vue SPA + Nodejs项目实战 Vue SPA + Nodejs项目实战文章链接:http://blog.csdn.net/i348018533/article/details/73605176本文主要阐述的是使用了vue spa单页应用的后台管理系统配合nodejs接口代理,并使用webpack打包编译的项目架构分享。 面向对象是有一定前端开发基础对vue nodejs webpack有一定认识的开发。Vue简介介绍 自底向上 阅读详情

Vue+Nodejs项目中碰到的一些问题

1、数据进行CRUD后刷新页面的方法:

  1. 强制刷新:this.$forceUpdate();;
  2. 使用window.reload()或者router.go(0),但会使整个浏览器进行重载,页面闪烁;
  3. 重新调用接口,但性能较差,代码冗长;
  4. provide-inject:
    App.vue中提供provide的this.reload方法:
<template>
    <div id="app">
        <router-view v-if="isRouterAlive" />
        <div class="pop"></div>
    </div>
</template>

<script>
export default{
	data(){
		return{
			isRouterAlive:true,
		}
	},
	provide(){	//全局设置provide
		return{
			reload:this.reload,
		}
	},
	methods:{
		//刷新页面
		reload(){
			this.isRouterAlive=false;
			this.$nextTick(function(){
				this.isRouterAlive=true;
			})
		}
	}
}
</script>

在需要刷新的页面内注入inject:

handleDelete(row){
    const flag=confirm("确认删除该用户?");
    if(flag){
        deleteUser(row.id).then(ret=>{
        	alert("删除成功!");
        	this.reload();
        }).catch(err=>{
        	console.log(err);
    	})
    }
},

2、js的三种提示框:alert,confirm,prompt;

3、element-ui表单解决自动填充账号密码的问题:autocomplete="new-password";

4、将路由模式由hash改成history时要将配置文件中publicPath: './'改成publicPath: '/';

5、输入校验:
内部校验:

rules:{
	userName:[
		{required:true,message:"用户名不能为空",trigger:"blur"},
		{min:2,max:20,message:"用户名在2~20位之间",trigger:"change"},
	],
	password:[
		{required:true,message:"密码不能为空",trigger:"blur"},
		{min:6,max:18,message:"密码在6~18位之间",trigger:"change"},
		{validator:isValidPassword,trigger:"blur"},
	],
	permission:[
		{required:true,message:"权限不能为空",trigger:"blur"},
		{validator:isValidPermission,trigger:"blur"},
	],
	tel:[
		{required:true,message:"联系方式不能为空",trigger:"blur"},
		{validator:isValidPhone,trigger:"blur"},
	]
},

外部校验:

function isValidPhone(rule,value,callback){
	const reg=/^((0\d{2,3}-\d{7,8})|(1[345789]\d{9}))$/;	//校验电话和手机号规则
	if(value==""||value==undefined||value==null){
		callback(new Error("手机号或者电话号码不能为空!"));
	}else{
		if(value!=""&&(!reg.test(value))){
			callback(new Error("请输入正确的电话号码或者电话号码!"));
		}
	}
	callback();
}

function isValidPermission(rule,value,callback){
	const reg=/^((1[0-2])|[1-9])(,((1[0-2])|[1-9]))*$/;	//校验权限规则
	if(value==""||value==undefined||value==null){
		callback(new Error("权限不能为空!"));
	}else{
		if(value!=""&&(!reg.test(value))){
			callback(new Error("请输入正确的权限格式!"));
		}
	}
	callback();
}

function isValidPassword(rule,value,callback){
	const reg=/^([_a-zA-Z])(([_a-zA-Z0-9]){5,17})$/;	//校验密码规则
	if(value==""||value==undefined||value==null){
		callback(new Error("密码不能为空!"));
	}else{
		if(value!=""&&(!reg.test(value))){
			callback(new Error("密码不合法!"));
		}
	}
	callback();
}

export {isValidPhone,isValidPermission,isValidPassword};

6、组件间通信bus总线的off写法:不一定跟on放在一起,必须设定在接收数据组件之后销毁才行,否则发送方发送的数据还未等接收方接收总线事件就被销毁了;

7、修改el-input框中字体样式需要找到elui根文件的form样式进行修改并且去掉style中的scoped样式:

.elFormItem .el-form-item__label{
	color: #ffffff;
}

8、修改用户功能两种传递参数方法($bus和$route),bus总线进行组件间通信传送数据虽然接收方能够接受到但是改不了,而用route的params参数传过去则可以修改;之后又发现一种新的解决办法,就是将需要更新的数据放在$on监听事件之外mounted挂载方法之内执行,大概是由于$on事件执行后会引起一次页面的刷新从而丢失数据:

methods: {
        submitForm(formName){
			this.$refs[formName].validate(valid=>{
				if(valid){
					updateUser(this.ruleForm).then(res=>{
						console.log(this.ruleForm);
						this.$router.go(-1);
					})
				}else return false;
			})
		},
		resetForm(formName){
			this.$refs[formName].resetFields();
		},
		getUserInfoByRoute(){
			const data=this.$route.params.row;
			this.$set(this.ruleForm,"id",data.id);
			this.$set(this.ruleForm,"userName",data.name);
			this.$set(this.ruleForm,"password",data.password);
			this.$set(this.ruleForm,"permission",data.permission);
			this.$set(this.ruleForm,"tel",data.tel);
		},
		getUserInfo(data){
			console.log("updateUser接收到的数据",JSON.stringify(data));
			this.$set(this.ruleForm,"id",data.id);
			this.$set(this.ruleForm,"userName",data.name);
			this.$set(this.ruleForm,"password",data.password);
			this.$set(this.ruleForm,"permission",data.permission);
			this.$set(this.ruleForm,"tel",data.tel);
		}
    },
	mounted(){
//		this.$bus.$off("sendUserInfoToUpdateUser");
//		this.$bus.$on("sendUserInfoToUpdateUser",(data)=>{
//			this.$bus.data=data;
//		});
		this.getUserInfoByRoute();
//		const data=this.$bus.data;
//		this.ruleForm=data;
//		this.ruleForm.userName=data.name;
	},

9、外部引入文件发生变化时Vue需要重新启动,不然不生效;

10、下载文件出错,发现是XLSX包的导入问题,应当由import XLSX from 'xlsx'改成import * as XLSX from 'xlsx';

11、查询对象中是否存在某个键:object.hasOwnProperty("xxx");

12、ES6中若要将变量作为对象的键名则需要加[key];

13、el-autocomplete支持显示的数据格式必须为[{value:xxx},...];
14、监视属性联动解决问题:

  • 情景:A属性改动会影响B和C属性,B属性改动会影响C属性,即A–>B–>C。现想将C清空而不影响到AB监视触发;

  • 解决:AB监视属性中可以通过判断C是否为空进而进入逻辑;

15、el-form中的校验规则必须所有分支都要有callback,否则会导致提交表单时validate进不去的问题;

从零开始搭建自己的VueJS2.0+ElementUI单页面网站(一、环境搭建) 前言VueJS可以说是近些年来最火的前端框架之一,越来越多的网站开始使用vuejs作为前端框架,vuejs轻量、简单的特性使得前端开发变得更加简易,而基于vuejs的前端组件库也越来越多。我们今天使用的ElementUI,是饿了么团队开发的一款基于vuejs的前端组件库,也是众多vuejs组件库里面比较优秀的一款。这里要说一下我们构建网站所需要用到的一些东西: NodeJS(npm) Webstor 阅读详情

相关推荐

前后端分离项目Vue+NodeJS+MongoDB的服务器部署

前几天我的个人网站部署上线,然而一路上遇到的坑不少。所以来写一篇记录一下。 我的网站是前后端分离项目,前端使用的是Vue,后端使用的是NodeJS,数据库使用的是MongoDB,服务器使用的是腾讯云,因为之前购买过阿里云的学生套餐,没有优惠了,所以使用了腾讯云。云服务器的系统是CentOS7。 关于前后端搭建和云服务器和域名购买、备案解析就不多讲了,这些网上教程很多,我们从部署来开始讲起。 准...

OUDUIDUI的博客 2098

springboot-缓存

springboot与缓存 1JSR-107(不常用简单了解) Java Caching定义了5个核心接口,分别是CachingProvider,CacheManager,Cache,Entry 和 Expiry。 CachingProvider:定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。 CacheManager:定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文

ginger_mr的博客 304

Seafile搭建以及onlyoffice在线办公

部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE

dwdcth的专栏 4656

【J2EE】ajax实现页面无刷新完成crud操作

0.首先还是按照惯例,上效果图(no picture, no …) 可以看到使用ajax异步的方式去做crud操作时,整个页面是没有刷新的(参考左上角的刷新按钮),这种体验更像是C/S架构1.AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)——用于创建更好更快以及 交互性 更强的Web应用程序的技术。2.页面代码 emp_list

追寻水中桥 4210

Android 音频源码分析——音量调节流程

源码分析基于android9.0 一、声音类型 对于大多数手机用户来说,操作手机音量按键可以看到,声音类型分为四种:媒体、铃声、闹钟、通话,但是其系统内部则分为十几种类型。 声⾳类型用来区分不同播放用途及播放设备,包含11中类型 定义在 frameworks/base/media/java/android/media/AudioSystem.java中 /** Used to identify the default audio stream volume */ public static final in

奋斗的菜鸟ing 3818

学习记录-Simpack生成车轮不圆的几种示例

单阶、多阶和实测车轮多边形的添加教程

weixin_51965897的博客 3706

Avue--crud组件,分页中page属性根据接口返回的数据改变,页面没更新问题

avue的crud组件,走后台请求了数据,根据后台返回的page数据修改crud的page数据后,发现页面的总条数、页码等数据并没有变化。 由于请求数据走了异步方法,所以需要在page后加一个sync事件修饰符: <avue-crud ref="dytttcrud" //:page="page" :page.sync="page" :data="listData" @size-change="sizeCh

前端-卡布达的博客 9339

SDK报错(1)undefined reference to `f_mount‘

按文中说法是ff.c文件中用了一个if语句来判断是否启用ff.h头文件,但是却没有地方进行宏定义来满足这个if条件。利用SDK读取sd卡时,添加了xilffs库,而且包含了ff.h头文件,还是对fat库的函数报错。网上有的说在ARM v7 gcc linker中添加xilffs的方法可以解决,但我试了没有用。如下图,我们可以在ff.c中自己添加一个宏定义来实现这个条件。最后在赛灵思论坛找到了一个解决方法,原文连接如下。这时候保存编译之后,报错就消失了。ff.c 文件在bsp工程下。

EfunStudy的博客 1481

AJAX:无刷新CRUD操作

以一个部门管理程序为例(deptno,dname,loc),最早的时候如果要进行CRUD则需要执行如下的流程: 增加:编写一个增加数据的表单,而后表单进行提交,提交到JSP/Servlet处理完成之后再跳转回增加页面; 修改:在表单上进行内容的修改,而后提交之后再重新列表; 删除:在表单上选择要删除的数据内容,而后进行提交后再重新列表。 现在要求只建立一个dept_list.jsp页面(dep...

抛弃幻想,准备斗争 615

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件。长脚为阳极短脚为阴极电流必须从长脚流入从短脚流出方可点亮LED##杜邦线杜邦线:是导线中的一种,杜邦线端部有两种接头形式:带针的一种称为公头,带孔的一种称为母头,如下图所示:说明:与电源相连接时,一般采用红色杜邦线,与地连接时采用黑色杜邦线。

qwsbcjendb的博客 1130

IC 时钟设计核心问题与高质量系统设计指南(附源码)

本文深入探讨了IC时钟设计的核心问题与高质量系统设计方法。时钟系统作为IC的"心脏",其性能直接影响时序稳定性、功耗效率和可靠性。文章从五个维度展开分析:时钟源选择与性能匹配、时钟分配网络设计、抖动抑制、多时钟域管理和功耗优化。针对高质量时钟系统设计,提出了时钟源优化、时钟树结构优化、干扰抑制与仿真验证等具体方法。同时,系统阐述了时钟与复位的协同设计关系,强调异步复位同步释放等技术的重要性。文章还总结了高质量IC系统设计的综合要点,包括电源/信号完整性、时序功耗平衡、可靠性设计及全流程验

Open 1060

vue+nodejs前后端分离模式详细使用说明

当你在Vue组件中调用方法时,axios会发送HTTP请求到Node.js服务器上的接口,并将接口返回的数据传递给你的Vue组件进行处理。在这种场景下,Vue.js可以直接与Node.js进行通信,而Node.js负责与后端服务器进行交互,并将数据返回给Vue.js。Vue.js的开发生态也依赖于Node.js的工具链,通过Node.js可以更方便地进行前端项目的开发和部署。这些只是Node.js和Vue.js的一些常见使用场景,实际上它们的应用领域非常广泛,可以根据具体的需求和项目来选择合适的技术栈。

一步一个脚印,踏实努力,向着目标前进 5568

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3929

ubuntu16.04从安装vue到vscode运行项目成功,一连串的问题产生和解决过程

安装vue出现 /usr/bin/env: "node": 没有那个文件或目录 sudo ln -s /usr/bin/nodejs /usr/bin/node 后,又出现问题 let session = require('express-session'); ^^^ SyntaxError: Block-scoped declarations (let, const, function, cl...

yn7901的博客 415

Cadence SPB16. 6 安装流程

1.首先下载CadenceAllegroSPBorCAD16.6安装包 下载之后运行其中的setup.exe,然后先安装第一项LicenseManager 一直按next或install, 直到被询问license时,单击cancel,然后选是和finish。 2,安装Product Installtion 直接点next跳过这一步 安装完成后,点Exit退出 3.按ctrl+alt+delete打开任务管...

wangjie36的博客 5148

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NVM安装NodeJS与Vue项目搭建

NVM安装NodeJS与Vue项目搭建

weixin_45496087的博客 3417

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Nodejs -- Nodejs Express搭建 + vue搭建打包 + 将vue打包后的文件放到express项目中运行

一. Nodejs Express搭建 后面都称为“express项目” 1. 全局安装(-g)express-generator npm install express-generator -g 2. 项目初始化(这里把项目名设置为server) express -e server 如上,根据提示输入相应命令: cd server //进入项目目录下 npm...

Emily 7721

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VueJS + NodeJS Evergreen Cookbook 常见问题解决方案

VueJS + NodeJS Evergreen Cookbook 常见问题解决方案 1. 项目基础介绍 VueJS + NodeJS Evergreen Cookbook 是一个开源项目,旨在提供一个基于 Vue.js 和 Node.js 的现代化开发模板。这个项目包含了用于快速启动和开发的模板和库,它遵循可更新模板和可管理共享的原则,帮助开发者构建高效且易于维护的应用程序。主要使用的编程语言包...

gitblog_00912的博客 386

vuejs和nodejs_将Python,NodeJS和VueJS部署为微服务

vuejs和nodejsIn this article I cover a number of different concepts and technologies; Web Sockets, Python, Node, Vue JS, Docker, and bring them all together in a microservice architecture. 在本文中,我介绍了许多不...

weixin_26738395的博客 819

vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版

vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版 vuejs技术交流QQ群:458915921 有兴趣的可以加入  vuejs 目录结构 build build.js check-versions.js utils.js vue-loader.conf.js webpack.base.conf.js webpack.dev.conf.js wepa...

weixin_33830216的博客 207

NodeJS的安装 npm 配置和使用 Vue-cli安装 Vue项目介绍

前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环 境,可以使 JavaScript 运行在服务器端。使用 Node.js,可以 方便地开发服务器端应用程序,如 Web 应用、API、后端服 务,还可以通过 Node.js 构建命令行工具等。NodeJS 安装完毕后,会自动配置好环境变量,我们验证一 下是否安装成功,通过: node -v NPM全

2401_86102746的博客 1313

nodejs 跑 vue项目

nodejs 跑 vue项目 2018年07月10日 10:24:19qq_41588568阅读数:1805 原文章链接:https://www.jianshu.com/p/4f744c935e1c 这是我看着大神的文章自己摸索着学习nodejs的,以免以后自己忘记,就记一下笔记。 1,首先安装node.js 从node.js官网下载并安装node,安装过程比较简单,基本...

Duan_Super的博客 923

VUE+NodeJs初始化项目

1、安装nodejs,目录D:\Program Files\nodeJS; 2、cmd 命令窗口, 如果是 Window 系统使用以下命令即可: npm install npm -g (全局) 使用淘宝镜像的命令: cnpm install npm -g npm install -s n...

chuosuikuai8063的博客 1262

使用nodejs创建Vue项目

使用nodejs创建Vue项目nodejs安装验证安装成功更换淘宝镜像全局安装 vue-cli创建 nodejs 安装 nodejs安装 https://nodejs.org/en/. 验证安装成功 更换淘宝镜像 npm使用的是国外的镜像,可能会出现很慢的情况,网上都推荐使用淘宝镜像 npm install cnpm -g --registry=https://registry.npm.taobao.org 全局安装 vue-cli cnpm install -g vue-cli 创建 切换到

weixin_42349143的博客 1175

前端项目:基于Nodejs+vue开发实现酒店管理系统

本项目使用纯前端技术开发实现一个酒店管理系统,前端采用VUE开发实现,后台通过NODEJS作为服务器开发实现,主要实现了酒店管理系统中的:房型管理、房间管理、顾客管理、订单管理等,用户可以注册并登陆后进行相应的管理操作

软件开发实战项目分享 5611

【vue】Nodejs & Vue的安装教程(2025)

【前端开发】Nodejs & Vue的安装教程(2025)

taobinjiao的博客 1776
上一篇: PAT 甲级 1066 Root of AVL Tree
下一篇: Vue3踩坑记录
zerohawk
博客等级 码龄8年 3粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值