美文网首页
踩坑:AJAX同步、页面元素替换、耦合

踩坑:AJAX同步、页面元素替换、耦合

作者: knowlege_picker | 来源:发表于2020-10-15 19:17 被阅读0次

AJAX同步

用JQ发起AJAX异步请求的时候遇到一个坑。

使用场景是这样的:

  1. 在输入框中输入评论信息,单击发送按钮,触发post()方法

  2. post()函数里面发起AJAX请求,用post方法请求'/comment',将请求携带的数据插入数据库

  3. 接着,用getJSON()方法获取数据库数据

逻辑看起来没有问题,但是存在一个异步的情况,插入数据库的操作会调用IO,比较费时,因此导致getJSON()总是先于AJAX获得响应。

导致的问题是,页面无法实时更新插入的消息。

解决方案是在发送AJAX请求之前,设置AJAX请求为同步请求,执行语句如下:

$.ajaxSettings.async = false;

页面元素替换

还是上面AJAX局部更新的案例。

在做之前,我思考了一下如何替换页面元素。

得到三种解决方案,分别是:

  1. 先把id为comment-container的元素中的,每一个id为comment-item的元素逐条删掉,再把从数据库遍历出来的元素逐条插入

  2. 先把所有id为comment-item元素用一个id为comment-list-wrapper包起来,每次更新的时候直接把comment-list-wrapper整个替换掉

  3. 仅仅是把刚刚插入的记录搜索出来,追加到第一个id为comment-item元素的前面

结果证明,第二种解决方案是最优的,原因如下:

  1. 第一种是最直接的想法,不过在删除和插入的时间间隙会闪一下

  2. 第二种比第一种多包装了一层,看起来是多此一举,实际上可以减少元素更新的操作次数,从而提升体验

  3. 第三种是性能最优的选择,不过查询数据库时并不能准确地拿到刚才插入的那一条数据。搜索字段是什么呢?在高并发情况下,元素搜索不准确,是不可行的做法

耦合

高质量的代码是高内聚、低耦合的。

为了写出高质量的代码,减少程序中的错误,提高可维护性,得到以下心得:

  1. 在编程时尽可能使用软编码代替硬编码

  2. 在写代码之前应充分考虑到编码需要用到的变量。

    比如,在写代码的过程中,我需要为数据库或者类添加一个新字段,那么我就可能需要重新回过头去赋值,这很容易漏掉一些属性的设置

  3. 合理使用框架、组件和插件。这些工具对一些地方进行了封装,可有效减少耦合,提高开发效率

相关文章

  • 踩坑:AJAX同步、页面元素替换、耦合

    AJAX同步 用JQ发起AJAX异步请求的时候遇到一个坑。 使用场景是这样的: 在输入框中输入评论信息,单击发送按...

  • selenium 元素可以定位,运行找不到。iframe和fra

    小踩一坑:元素在页面可以定位到,运行时找不到该元素。找到原因:元素在iframe标签内。 一、 iframe if...

  • 行内元素与块级元素的区别

    这个 行内元素与块级元素的特性的坑,终于踩过去了。这是初级前端们经常踩的一个坑,了解后对页面布局会有一个飞一般的长...

  • ajax踩坑

    嵌套使用如果嵌套的ajax请求的数据有依赖关系,同步执行会导致错误出现。 使用上述选项避免嵌套的同时执行。

  • 数据分析之 pandas 高级

    替换操作 替换操作可以同步作用于Series和DataFrame中 单值替换: 替换所有符合要求的元素 : to...

  • 可以不用黑魔法的地方还是不要用了Runtime

    今天踩了同事给挖的坑,method_exchangeImplementations替换了setDelegate方法...

  • Ubuntu下android studio同步踩坑

    Ubuntu下android studio同步踩坑 1. 安装shadowsocks : https://blog...

  • CSS踩坑

    CSS 踩坑 父级元素transform属性会使子元素的fixed定位失效。 具体参考

  • 伪元素踩坑

    项目中改bug时发现的伪元素的坑。 伪元素不支持空元素。 1. 什么是伪元素呢? 伪元素用于向某些选择器设置特殊效...

  • Ajax

    1.什么是ajax Ajax是一种传输的工具,实现异步和同步的传输模式。 Ajax常用的是异步,异步是指刷新页面时...

网友评论

      本文标题:踩坑:AJAX同步、页面元素替换、耦合

      本文链接:https://www.haomeiwen.com/subject/nnvopktx.html