【前端开发选择】提醒设计决策:弹窗与Toast通知,哪个更适合?

简介: 本文讨论了前端开发中弹窗与Toast通知的选择,通过实际案例比较了两者在用户体验上的差异,并分享了如何使用Toast通知在当前页面提供更友好的交互反馈。

一、你原来的样子,真的很丑!

当题主接到雇主的需求时,连他自己看到注册/登录的页面,都不敢相信长这样,还一度想让我给完善一下,心想:题主作为一名测试,对前端的东西多少有点捉襟见肘,而且钱也不到位,只够实现一个功能啊;还有就是,当出现这个提示的时候,题主的内心都是万马奔腾,因为啥呢,在python+Django后台是这样写的:messages.success();但是在html前端需要script来接收,重要的是这种交互有点点low;所以才需要改进:

{
   
   % if messages %}
<script>
        {
   
   % for msg in messages %}
            alert('{
   
   { msg.message }}');
        {
   
   % endfor %}
</script>
{
   
   % endif %}
  • 登录html效果如下:
    在这里插入图片描述

二、前端也要看后端如何实现

再来看后端,一般公司都有前后端,一般也是分离开发,好一点的流程呢:在需求评审确认之后,前后端会约定多少个接口实现并且给出固定交互数据格式,方便前端写完页面之后,可以自己mock数据来自测;那么对于开发自己来说,内部实现逻辑就不关前端的事情了,所以先既定后端给提示,而不是返回json对象由前端提取,既然有了消息,前端自然就要接收,其实啊,题主还是喜欢对数据进行处理来展示提醒会好很多,毕竟可控。

def login(request):
    # 一开始不要判断GET,直接return一个html模版即可
    if request.method == 'POST':
        # 如果登录成功,返回baidu界面  # 修改了,登录成功去/根路径
        name = request.POST.get('name')
        password = request.POST.get('password')
        # 查询用户是否在数据库中
        if len(Users.objects.filter(u_name=name)) == 1:  # 源码Users.objects.filter(u_name=name).exists()
            user = Users.objects.get(u_name=name)
            if check_password(password, user.u_password):
                request.session['user_name'] = name  # 这行代码就是给base用的,需要将登录成功的用户名放在session里
                return HttpResponseRedirect('/')  # 这个是路径问题,你的base模版需要到哪里去,
            else:
                messages.success(request, "帐号或密码错误")
                return render(request, './login.html')
        elif not len(Users.objects.filter(u_name=name)):
            messages.success(request, "用户不存在,请注册!")

    return render(request, './login.html')

三、提醒还是在当前页toast

前面难看的是啥,是js,凭空弹出然后需要用户手动关闭一次,无疑这种交互是没必要的,因为是用户与系统之间的对弈,如果是用户与用户或用户自己对弈,题主建议是弹窗的交互会比较友好,对于这个思维,有兴趣的可以跟产品经理探讨一下。

  • 题主的期望如下图所示,以注册为例,无论怎么测试,只需要停留在当前页,有醒目的提示就好过js弹窗处理消息,你说呢?
    在这里插入图片描述

前端实现,题主遇到了点困难;再看前端写的代码;注意看了{ { messagesbox }}变量是哪里来的?在后台是这样写的:
return render(request, ‘./regist.html’, {“messagesbox”: “×帐号或密码不能为空,请重新输入!”})
返回一个html页面,然后还有个json对象,在html中接收一下,需要处理toast,它是需要消失的,不能一直显示,所以又要用到js,看到了没,style给了toast样式,并且function给了它功能,x秒之后隐藏toast。

<script>
    function myfun(){
    document.getElementById("mydiv").style.display="none";
    }
    setTimeout(myfun,3000); <!--3s后隐藏-->

</script>

<!--给标签加样式-->
<style type="text/css">
    .mystyle{
    
    
    color:red;
    padding:10px
    }
</style>

/** 注册form表单 **/
<div id="mydiv">
    <span class="mystyle"> {
  
  { messagesbox }} </span> 
    <!--变量要与函数返回的名字保持一致-->
</div>
<input type="submit" value="提交">
  • 注册效果如下,是不是比单纯的js弹窗美观多了:
    在这里插入图片描述

四、总结:测试挑战前端的后果

前面说了,题主是一枚测试,尽管对于前端的知识涉猎不深,但也不是一无所知,至少需要有自己的想法,来完善不合理的需求,总不能坐以待毙,就算不能解决问题,但一定要懂得如何提问,毕竟在cc+cv的世界里,有多少事情是百度/谷歌不能办到的呢?


不过话说回来,开发技能也一直是题主想要突破的屏障,先从开发语言入手,接触了一些常用的开发框架,会一点点开发技能,然后再结合前端练手,是不是很有感觉?曾面试被问到职业规划,题主心想:不再是单纯的想要技能进阶,除此之外还需要有管理能力,然而这个管理能力又特别需要技能的衬托,否则难以服众,毕竟不是纯粹的项目经理;没想到这样的回到并没有得到100%的肯定,反而是劝自己不要有太大压力;没毛病,就现在开源的世界,你想做什么事情,哪一件又不是在重复造轮子呢?


最后呢,勉励自己,就算是重复造轮子,那不也是一种能力的体现吗?共勉吧,打工人。
日拱一卒无有尽,功不唐捐终入海!

相关文章
|
2月前
|
前端开发
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
108 6
|
20天前
|
前端开发 JavaScript 开发者
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
本文提供了一个前端JS按钮点击事件、弹出式窗口和遮罩层的实战示例,包括HTML、CSS和JavaScript的具体实现代码,以及功能解析,演示了如何实现按钮点击后触发弹窗显示和遮罩层,并在2秒后自动关闭或点击遮罩层关闭弹窗的效果。
前端JS按钮点击事件、跳出弹窗、遮罩的实战示例
|
10月前
|
移动开发 前端开发 JavaScript
做前端技术方案选型的时候,你是怎么做决策的?
做前端技术方案选型的时候,你是怎么做决策的?
135 0
|
4月前
|
前端开发 JavaScript 开发者
探讨前端框架选择的决策因素
【2月更文挑战第2天】在选择合适的前端框架时,开发者需要考虑诸多因素,包括项目需求、团队技术栈、社区支持等。本文将从实际案例出发,分析不同前端框架的特点以及如何根据具体情况做出最佳选择。
|
4月前
|
前端开发
前端如何创建好看的简洁的蒙版弹窗
前端如何创建好看的简洁的蒙版弹窗
|
4月前
|
前端开发
前端知识笔记(二十)———简易弹窗制作
前端知识笔记(二十)———简易弹窗制作
52 0
|
移动开发 前端开发 HTML5
前端:HTML5中dialog弹窗标签
前端:HTML5中dialog弹窗标签
202 0
前端:HTML5中dialog弹窗标签
|
前端开发
前端列表页+element-puls实现列表数据弹窗功能
前端列表页+element-puls实现列表数据弹窗功能
352 0
|
前端开发
前端hook项目moblie总结笔记-ant design mobile Toast轻提示
前端hook项目moblie总结笔记-ant design mobile Toast轻提示
116 0
|
4天前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架