20201113 - 前端业务项目的日常记录

1. 记住密码功能

     data () {
           return {
             userName: '', // 账号
             password: '', // 密码
             checked: false // 是否记住密码
           }
         },
         methods: {
           login () { // 点击登录后事件
             if (!this.userName || !this.password) {
               this.$message({
                 message: '请输入账号密码',
                 type: 'warning'
               })
               return
             }
             if (this.checked === true) {
               // 传入账号名,密码,和保存天数3个参数
               this.setCookie(this.userName, this.password, 7)
             } else {
               // 清空Cookie
               this.clearCookie()
             }
             this.$message({
               message: '登录成功',
               type: 'success'
             })
             this.$router.replace({path: '/home'})
           },
           // 设置cookie
           setCookie (c_name, c_pwd, exdays) {
             var exdate = new Date() // 获取时间
             exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays) // 保存的天数
             // 字符串拼接cookie
             window.document.cookie =
               "userName" + "=" + c_name + ";path=/;expires=" + exdate.toGMTString()
             window.document.cookie =
               "userPwd" + "=" + c_pwd + ";path=/;expires=" + exdate.toGMTString()
           },
           // 获取cookie
           getCookie () {
             if (document.cookie.length > 0) {
               var arr = document.cookie.split("; ") // 这里显示的格式需要切割一下自己可输出看下
               for (var i = 0; i < arr.length; i++) {
                 var arr2 = arr[i].split("=") // 再次切割
                 // 判断查找相对应的值
                 if (arr2[0] === "userName") {
                   this.userName = arr2[1] // 保存到保存数据的地方
                   this.checked = true
                 } else if (arr2[0] === "userPwd") {
                   this.password = arr2[1]
                   this.checked = true
                 }
               }
             }
           },
           // 清除cookie
           clearCookie () {
             this.setCookie("", "", -1) // 修改2值都为空,天数为负1天就好了
           }
         },
         created () {
           this.$nextTick(() => {
             // 进入登录页面自动聚焦输入框
              document.querySelector('input').focus()
           })
         },
         mounted () {
           this.getCookie()
         }

2. vue-cli4配置问题

vue.config.js:

     // vue.config.js 在cli4项目创建的时候不会自动生成,需要手动创建
     
     module.exports = {
       productionSourceMap: true, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建
       configureWebpack: {
         // 报错:Invalid options in vue.config.js: “devtool“ is not allowed
         // 解决:devtool在cli4版本中应该放在configureWebpack对象中
         devtool: 'source-map' // 解决F12无法找到提示所在文件的问题。其可以添加F12内的映射关系,可以映射所有提示所对应项目内在什么路径下的某一个具体文件,方便调试
       },
       pwa: {
         // 用于cli4替换项目的页面图标
         iconPaths: {
           favicon32: 'favicon.ico',
           favicon16: 'favicon.ico',
           appleTouchIcon: 'favicon.ico',
           maskIcon: 'favicon.ico',
           msTileImage: 'favicon.ico'
         }
       },
       css: {
         sourceMap: true, // 开启 CSS source maps, 解决F12无法找到样式所在文件的问题,可以映射某一条样式所在的文件和行数,方便调试。设置为 true 之后可能会影响构建的性能
       }
     }
     

3. el-form 表单验证

html:

     <el-form :model="ruleForm" :inline="true" :rules="rules" ref="ruleForm" label-width="102px" class="demo-ruleForm">
         <el-form-item label="原始密码 :" prop="oldpass">
           <el-input v-model="ruleForm.oldpass" ref="password" placeholder="请输入原始密码">
           </el-input>
         </el-form-item>
           <el-form-item label="新密码 :" prop="pass">
           <el-input v-model="ruleForm.pass"  placeholder="由大小写英文字母、数字组成,长度8-20位">
           </el-input>
         </el-form-item>
         <el-form-item label="确认密码 :" prop="newpass">
           <el-input v-model="ruleForm.newpass"  placeholder="请再次输入密码">
           </el-input>
         </el-form-item>
       </el-form>
     
     <el-button class="saveButton" @click="savePassword('ruleForm')">保存</el-button>

data:

     ruleForm: {
       oldpass: '',
       pass: '',
       newpass: ''
     },
     rules: {
       pass: [
         { required: true, message: '请输入新密码', trigger: 'blur' },
         {
           validator (rule, value, callback, source, options) {
             const errors = []
             const reg = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z~!@#$%^&*()+-]{8,20}$/
             if (value) {
               if (!reg.test(value)) {
                 errors.push('包含数字、字母及特殊字符的8~20位密码')
               }
             }
             callback(errors)
           }
         }
       ],
       oldpass: [
         { required: true, message: '请输入原始密码', trigger: 'blur' },
         {
           validator (rule, value, callback, source, options) {
             const errors = []
             const reg = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z~!@#$%^&*()+-]{8,20}$/
             if (value) {
               if (!reg.test(value)) { errors.push('包含数字、字母及特殊字符的8~20位密码') }
             }
             callback(errors)
           }
         }
       ],
       newpass: [
         { required: true, message: '请输入确认密码', trigger: 'blur' },
         {
           validator (rule, value, callback, source, options) {
             const errors = []
             const reg = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z~!@#$%^&*()+-]{8,20}$/
             if (value) {
               if (!reg.test(value)) { errors.push('包含数字、字母及特殊字符的8~20位密码') }
             }
             callback(errors)
           }
         }
       ]
     }    

保存时的验证事件:

      // 更改密码 - 保存按钮事件
         savePassword (formName) {
           this.$refs[formName].validate((valid) => {
             if (valid) {
               this.$message({
                 message: '更改成功',
                 type: 'success'
               })
               this.passwordDialog = false
             } else {
               return false
             }
           })
         },

清空上次操作留下的表单效验提示语:

     this.$nextTick(() => {
         this.$refs.ruleForm.clearValidate()
       })

Smile and let everyone know that today you’re a lot stronger than you were yesterday.
用微笑告诉世人,今天的你比昨天更加强大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于Spring Boot的校园二手交易系统项目分析需要考虑以下几个方面: 1. 需求分析:明确该系统的功能需求,确定用户群体,研究用户需求。 2. 技术选型:选择使用Spring Boot作为项目的框架,确定使用的技术栈,如数据库、缓存等。 3. 架构设计:设计系统的总体架构,确定模块划分,设计各模块之间的交互方式。 4. 功能实现:实现各个模块的功能,包括用户管理、物品管理、交易管理等。 5. 测试:对整个系统进行测试,保证系统的正确性和稳定性。 6. 部署与维护:将系统部署到生产环境,定期维护和升级系统。 ### 回答2: 基于Spring Boot的校园二手交易系统项目分析 校园二手交易系统是一个方便学生在校园内进行二手物品交易的平台。基于Spring Boot的开发框架可以帮助我们快速构建一个稳定高效的系统。以下是对该项目的分析: 1. 功能需求: - 用户注册与登录:学生可以通过注册账号和登录自己的账号来使用系统。 - 商品发布与浏览:学生可以发布自己要出售的二手物品,并浏览其他学生发布的二手物品。 - 聊天交流:学生可以通过系统内置的聊天工具与对方沟通交流。 - 交易成交与评价:学生可以进行交易,并给交易过程进行评价,以增加信用度。 - 系统管理:管理员可以管理用户账号、商品信息和交易记录等。 2. 技术架构: - 前端技术:可以选择使用HTML、CSS、JavaScript等前端技术进行页面的开发和设计,采用Vue.js或React.js进行页面交互。 - 后端技术:使用Java语言和Spring Boot框架开发后端接口,处理数据请求与业务逻辑。 - 数据库:采用MySQL或其他关系型数据库存储用户信息、商品信息和交易记录等数据。 - 消息中间件:使用RabbitMQ或Kafka等消息中间件实现聊天工具的消息传递功能。 - 服务器部署:可以选择使用Nginx作为反向代理服务器,将请求分发给后端应用程序。 3. 开发流程: - 分析需求并设计数据库表结构,包括用户表、商品表、交易表等。 - 搭建开发环境,配置Spring Boot框架和数据库连接等。 - 开发后端接口,实现用户注册与登录、发布与浏览商品、聊天交流、交易成交与评价等功能。 - 开发前端页面,实现用户界面和交互逻辑。 - 进行单元测试和集成测试,确保系统稳定可靠。 - 部署系统到服务器,上线运行。 4. 需要考虑的问题: - 用户身份验证:用户注册与登录需要进行身份验证,确保安全性。 - 数据一致性:对于交易过程中的数据操作,需要保证数据的一致性和完整性。 - 平台信用度评价:为了减少交易风险,可以引入信用度评价系统,将评价结果展示给其他用户参考。 - 平台运维与管理:对系统进行日常维护和管理,监控系统状态和性能。 基于Spring Boot的校园二手交易系统可以帮助学生方便地进行二手物品交易,提供了良好的用户体验和安全性。通过合理的技术架构和开发流程,能够快速构建一个可靠高效的系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值