当前位置: 首页 > news >正文

做网站多少费用昆明网络优化

做网站多少费用,昆明网络优化,酒泉网站建设平台,呼和浩特哪里做网站概念 大量的 if 判断操作#xff0c;逻辑比较复杂#xff0c;并且处理起来相对麻烦。可以采用策略模式来优化分支代码。 策略模式 #x1f4a4;#xff1a;是一种行为设计模式#xff0c;它允许你在运行时根据不同情况选择不同的算法或行为。 设计模式 #x1f90c;逻辑比较复杂并且处理起来相对麻烦。可以采用策略模式来优化分支代码。 策略模式 是一种行为设计模式它允许你在运行时根据不同情况选择不同的算法或行为。 设计模式 就是提前第一次了解全过程第二次直接规划不必要的坑。 我们在写代码亦是如此一定也遇到过许多类似的场景。随着程序员经验的增加我们对于这些常见场景的处理越来越得心应手甚至总结出了针对性的“套路”下次遇到此类问题直接运用“套路”解决省心又省力。这些在软件开发过程中逐渐积累下来的“套路”就是设计模式。 设计模式的目标之一就是提高代码的可复用性、可扩展性和可维护性。正因如此虽然有时候我们不知道某个设计模式但是看了相关书籍或文章后会有一种“啊原来这就是设计模式”的恍然大明白。 例 const game (name) {if (name 原s) {console.log(启动);} else if (name xx精英) {console.log(我先成盒了你们加油);} else if (name 云顶yy) {console.log(这就是我们之间的羁绊);} else if (name 王者zz) {console.log(我再也不买皮肤了);} else {console.log(我啥也没玩);} }; game(原s); // 启动简单优化一下写法 const game (name) {let obj {原s: 启动,xx精英: 我先成盒了你们加油,云顶yy: 这就是我们之间的羁绊,王者zz: 我再也不买皮肤了,};if (obj[name]) {console.log(obj[name]);} else {console.log(我啥也没玩);} }; game(原s); // 启动这种写法只是参考了策略模式的思路将逻辑封装到一个对象中。这种方式使得这个对象能够独立出来只需专注于维护这个对象本身即可。如果要是每个方法都不同那该如何去写呢?接着往下看 const game (name) {let obj {原s: () {console.log(启动);},xx精英: () {console.log(我先成盒了你们加油);},云顶yy: () {console.log(这就是我们之间的羁绊);},王者zz: () {console.log(我再也不买皮肤了);},};if (obj[name]) {obj[name]();} else {console.log(我啥也没玩);} };game(原s); // 启动这种写法就是将对象中的处理逻辑单独封装成一个函数让他内部自己处理自己所用到的逻辑。 下面这种写法代码更加灵活和可扩展也是我比较推荐的写法。 const strategies {原s: () console.log(启动),xx精英: () console.log(我先成盒了你们加油),云顶yy: () console.log(这就是我们之间的羁绊),王者zz: () console.log(我再也不买皮肤了), };function executeStrategy(name) {if (strategies[name]) {strategies[name]();} else {console.log(我啥也没玩);} }executeStrategy(原s);在这个例子里面我们可以将游戏名作为参数传递给函数而不是在函数内部定义多个条件。这样我们就可以将函数封装成一个可复用的策略以便在将来添加更多的游戏名称。 1. 案例 下面看一下使用场景比如我们需要做一个 from 表单验证需要验证手机号和密码 !DOCTYPE html html langenheadmeta charsetUTF-8 /meta nameviewport contentwidthdevice-width, initial-scale1.0 /title表单/titlescript src./src/index.js/script/headbodyform idlogin-form action methodpostlabel foraccount手机号/labelinput typenumber idaccount nameaccount /label forpassword密码/labelinput typepassword idpassword namepassword /button idlogin登录/button/formscriptlet loginForm document.getElementById(login-form);loginForm.onsubmit function (e) {e.preventDefault();let account document.getElementById(account).value;let pwd document.getElementById(password).value;if (account null || account ) {console.log(手机号不能为空);return false;}if (pwd null || pwd ) {console.log(密码不能为空);return false;}if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(account)) {console.log(手机号格式错误);return false;}if (pwd.length 6) {console.log(密码不能小于六位);return false;}// 模拟ajax请求setTimeout(() {console.log(登录成功);}, 1000);};/script/body /html在这里可以发现问题也是很明显的如果你想说他能跑起来吗他也能跑起来但是里面的 if 语句到处都是每次新增一种校验需要整体去调整这个 loginForm.onsubmit 代码复用性也很差只能手动矫正 2. 优化 先将此方法抽离出来 let obj {isNonEmpty: function (value, errorMsg) {if (value || value null) {return errorMsg;}},isMobile: function (value, errorMsg) {// 手机号码正则if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(value)) {return errorMsg;}},minLength: function (value, errorMsg) {if (value.length length) {return errorMsg;}}, };修改 Context 内容部分 let loginForm document.getElementById(loginForm);loginForm.onsubmit function (e) {e.preventDefault();let phone strategies.isMobile(account, 手机号格式错误);let pwdMinLength strategies.minLength(pwd, 密码不能小于六位);let error accountIsMobile || pwdMinLength;if (error) {console.log(error);return false;} };完整代码如下 divform idloginform action methodpostlabel foraccount手机号/labelinput typenumber idaccount nameaccount /label forpassword密码/labelinput typepassword idpassword namepassword /button idlogin登录/button/form /divlet account ; // 这里的变量需要初始化一下不然无法获取到value let pwd ;let loginForm document.getElementById(loginform); let strategies {isNonEmpty: function (value, errorMsg) {if (value || value null) {return errorMsg;}},isMobile: function (value, errorMsg) {// 手机号码格式if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(value)) {return errorMsg;}},minLength: function (value, length, errorMsg) {console.log(value);if (value.length length) {return errorMsg;}}, };loginForm.addEventListener(submit, (e) {account document.getElementById(account).value;pwd document.getElementById(password).value;e.preventDefault();let phonenull strategies.isNonEmpty(account, 手机号不能为空);let phone strategies.isMobile(account, 手机号格式错误);let pwdMinLength strategies.minLength(pwd, 6, 密码不能小于六位);let error phonenull || phone || pwdMinLength;if (error) {console.log(error);return false;} else {console.log(提交成功);} });
http://www.dnsts.com.cn/news/201016.html

相关文章:

  • 网站的注册和登录怎么做烟台快速建站有哪些公司
  • 商城型网站建设怎么创建自己的网络平台
  • 找网络公司做的网站可以出售吗英文 网站 字体
  • 兴义网站建设公司无锡网站推广电话
  • 微网站建站平台天津市建设信息网官网
  • 闵行网站制作公司ppt模板免费下载第一ppt
  • 手机网站的优势个人网站空间
  • 抚州市建设局网站查询免费下载百度
  • 鹤山市网站建设公司免费建站平台官网
  • 旅游网站内容规划特点资金盘网站怎么建设
  • 做外贸 网站深圳一元购网站建设
  • 住房和城乡建设部网站干部学院北京网站设计学习
  • 做私活的网站承德网站建设电话
  • 建筑招工人在哪个网站比较好找建设旅游网站的意义
  • 郧阳网站建设网站域名备案主机名
  • 济南品质网站建设哪家好伪静态 wordpress
  • 网站建设目录广州网站设计公司vi设计公司
  • 网站建设提供的网站资料html5网站制作实战
  • 浙江省建设工程监理协会网站做销售的网站
  • 表格网站怎么做的上海网站seo策划
  • php网站发送邮件wordpress邮箱汉化插件
  • 阿里云云主机做网站wordpress 3d云标签
  • 网站开发应如何入账合肥做网页的网络公司
  • 装修网站线怎样做开通网站需要什么手续
  • 自己建的网站地址多合一网站建设
  • 做网站难度女生学建筑专业好吗
  • 婚恋网站系统宝塔wordpress公网访问
  • 电脑版网站建设合同情侣建站的wordpress主题
  • 深圳建站公司品牌网站建设wordpress页面内容调用
  • dreamwearver做网站地图wordpress非插件使用七牛云存储