Supermarket 开发过程中js遇到的问题及一些基础知识恶补

  • 函数相关问题
  • DOM元素相关操作
  • 变量操作
  • 异常捕获
  • 开发过程中关于条形码识别
  • 开发结束关于前端板块思路

函数相关问题

  1. (function(){})() 这种形式定义即被执行,即自调用函数

  2. 隐式参数可通过方法内置的arguments获取(arguments为数组对象)

  3. setInterval(method,time) //method只写名称,即表示引用函数对象(method()表示的是函数结果)

DOM元素相关操作

  1. 除了querySelector,还可以可通过获取getElemrntby+ id、name、Tagname、classname获取元素节点

  2. document.querySlector(key) 若获取为空,会返回null.null是作为一个Object来存在的。

  3. onload 是在document加载完成后执行的,它属于dom的event事件,类似的还有鼠标焦点事件,点击事件,dom加载事件

  4. 标签创建:createElement(‘’) -> 标签写入:element.append()

  5. addEventListinor可对dom的相关事件进行监听

  6. 还有MutationObserver对象,可用来监听元素属性,元素子节点,元素的结构变化

         let MutationObserver =window.MutationObserver ||window.WebKitMutationObserver ||window.MozMutationObserver;let observer = new MutationObserver(mutationList => {//这里是观察到标签样式改变就会执行的函数console.log('change1');});observer.observe(dom, {// attributes: true,//监听属性attributeFilter: ["style"],//监听样式// attributeOldValue: true,// childList: true,//子元素的变动// subtree: true, //所有下属节点(包括子节点和子节点的子节点)的变动//characterData:true //节点内容或节点文本的变动});
    

变量操作

  1. 变量基本操作是从左向右

     911+7+'test' //918test ; 'test'+911+7 //test9117
  2. 基本数据类型;string,number,boolean,undefined

  3. null属于Object

  4. ‘==’:值判断; ‘===’: 值与类型均判断。eg. undefined == null //true; undefined===null //false

  5. 对于Object类型的判断 ——>
    可通过constructor返回构造函数,构造函数包含Object类型的相关关键字,可通过字符串转换结果后截取

  6. 默认undefined的Boolean为false

  7. forEach中function有三个参数(item,index,array);
    forEach不可用break与continue

  8. 对于blob(二进制大对象),可用来接收媒体类、文档类及相关应用数据

异常捕获

try{}catch(err){console.log(err.message)}try{if(errflag) throw 'errr mine'}catch(err){console.log(err);//print 'errr mine'}

开发过程中关于条形码识别

当时的思路是使用前端的JS库来完成条形码识别任务,当时选用的的是quaggaJS,调用也特别简单,想法是使用两种模式来进行条形码识别:

  1. 调用设备摄像头,对媒体流进行捕捉,quaggaJS有这种想法的API,但是识别效率较低;
  2. 调用前端的input标签获取静态图像,进行相关识别,quaggaJS中命名的是static image,照片输入分辨率调了很久,依旧识别效率不高。
  3. 这个库使用起来相对比较好理解,细节不赘述,流程是 初始化(设置照片处理的分辨率、照片识别块的大小,使用的处理器个数,图片处理事件初始化,一些DOM event触发事件初始化,其中,前几个照片参数得调教)-> 输入图片->图片经过UrlObject相关方法处理输入识别api ->这里有几个函数接口一个是过程函数progress,一个是结果函数都会获取识别结果,看需求增加相应的响应函数体

但是参数没调教好,识别效果不太理想,满足不了正常需求,好在正式环境基本没有并发量,后来使用了python的pyzbar,后端直接处理相应的需求。

开发结束关于前端板块思路

首先,对于请求可以通过后端的模板渲染得到网页尽量减少api的暴露,xhr请求可适当的改变,可返回后端渲染后的结果,以确保页面加载逻辑不被破环;也可以进行加密等等,例如可通过MD5对一些标志进行对等判断等等

其次,js对于在加载时不触发的js加入defer,可预先加载,但不执行
可返回后端渲染后的结果,以确保页面加载逻辑不被破环;也可以进行加密等等,例如可通过MD5对一些标志进行对等判断等等

开发过程中js遇到的问题及一些基础知识恶补相关推荐

  1. 论文浅尝 - WWW2020 | 通过对抗学习从用户—项目交互数据中挖掘隐含的实体偏好来用于知识图谱补全任务...

    笔记整理 | 陈湘楠,浙江大学在读硕士. 现有的知识图谱补全方法都在试图设计全新的学习算法,来使用已知的事实信息去推理知识图谱中的潜在语义.但随着知识图谱的广泛使用,知识图谱中的许多实体对应着应用程序 ...

  2. python的知识点运用_程序猿在Python编程中不得不使用的十二种基础知识

    Python编程中常用的12种基础知识,其中肯定有你不会的! 人生苦短,我用Python 1.正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串. 人生苦短,我用 ...

  3. 计算机中常用术语CAD是指,计算机基础知识理论复习题及答案

    计算机基础知识理论复习题及答案 基础知识复习题及答案 一. 选择题 1. 第三代计算机所使用的电子器件是( ). A)晶体管 A)科学计算 A)存储记忆 A)计算机辅助设计 A)体积大 A)8位 A) ...

  4. lsdyna如何设置set中的node_list_ANSA中进行二次开发的Python基础知识

    ANSA.META的二次开发均基于Python开发.本文基于ANSA的帮助文档<Introduction to Python>进行一定的扩展,希望能帮助大家快速掌握这门语言. 首先来介绍下 ...

  5. java easing_[译] 动画中缓动(easing)的基础知识

    自然界中没有东西是从一个点线性地移动到另一点. 在现实中,事物在运动时可能加速或减速. 我们的大脑习惯于期待这种运动,因此在做动画时,应利用此规律. 自然的运动会让用户对你的应用感觉更舒服,从而产生更 ...

  6. spidermonkey php,javascript SpiderMonkey中的函数序列化如何进行_基础知识

    在Javascript中,函数可以很容易的被序列化(字符串化),也就是得到函数的源码.但其实这个操作的内部实现(引擎实现)并不是你想象的那么简单.SpiderMonkey中一共使用过两种函数序列化的技 ...

  7. 在html中列表是块元素还是,HTML基础知识4-列表及表单的写法、块级元素和内联(行内)元素的区别...

    一.有序列表.无序列表.自定义列表如何使用?写个简单的例子.三者在语义上有什么区别?在哪些情况下使用哪种(重要)? 如何嵌套? 1.简单例子如下: Document div.div1 { backgr ...

  8. 中点和中值滤波的区别_滤波器基础知识简介

    从图1中可以看到,滤波器广泛应用在接收机中的射频.中频以及基带部分.虽然对这数字技术的发展,采用数字滤波器有取代基带部分甚至中频部分的模拟滤波器,但射频部分的滤波器任然不可替代.因此,滤波器是射频系统 ...

  9. j2se学习中的一些零碎知识点2之基础知识

    1.static修饰的变量叫做"静态变量"(静态变量,被存储在方法区中,所有的java对象共享静态变量,所有静态变量是类级别的,使用"类名."的方式访问.),s ...

最新文章

  1. 【 FPGA 】Vivado和ISE设计流程比较(重点是Vivado IDE)
  2. 关于可变字符串StringBuffer和String的区别总结
  3. React开发(136):ant design学习指南之form中动态form新增删除
  4. SpringBoot集成Myabtis
  5. Linux 基础知识(2)---Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
  6. python钉钉机器人发送消息_python调用钉钉机器人发送消息
  7. ubuntu - 14.04,如何使用鼠标右键菜单在shell中打开选择项目?
  8. 16.Mac 修改主机名
  9. Word插入高分辨率图片无法显示
  10. Qt Designer界面简介
  11. python 多目标跟踪_多目标追踪器:用 OpenCV 实现多目标追踪(C++/Python)
  12. WPS删除多余空白页
  13. oracle block corrupted,ORA-01578: ORACLE data block corrupted (file # 6, block # 132)
  14. 下载并打开Github源码教程
  15. 敏感性分析—Sobol
  16. 将Carte部署为Windows服务
  17. 0805,0603,1206这些封装名字的由来
  18. 大学生考华为ICT认证,从哪个级别开始
  19. 【Linux网络服务】Centos7搭建yum服务器
  20. STM32物联网通讯GPRS

热门文章

  1. Bugku 多种方法解决
  2. vue项目中动态绑定src不显示图片解决方法
  3. 给 DW cs4 安装插件 jQuery_API.mxp
  4. PX4垂起(Tiltrotor)偏航控制研究
  5. 【语音识别】EM算法和GMM模型
  6. 敏之澳电商:拼多多店群到底怎么做呢?
  7. 2023年信息与通信工程国际会议(JCICE 2023) | IEEE CPS独立出版
  8. 最韵味的日历软件Rainlendar
  9. 通过webView与javascript交互来研究webView的特点
  10. 网络与通信程序设计-基于UDP的广播通信实例