{ uncategorized }

  • 实现一个简单的 vue 无限加载指令

    | /

    vue 中的自定义指令是对底层 dom 进行操作,下面以实现滚动到底部加载数据,实现无限加载来介绍如何自定义一个简单的指令。

    无限加载的原理是通过对滚动事件对监听,每一次滚动都要获取到已滚动到距离,如果滚动的距离加上浏览器窗口高度,会大于等于内容高度,就触发函数加载数据。

  • ListView 踩过的坑

    | /

    ListView 组件在 react-native 开发中是会频繁使用的。所以在实际开发时,要实现多选操作时碰到一个坑,虽然使用很奇葩的手段解决了,但并没有从根本上解决遇到的问题。经过别人指点后,终于了解问题产生的原因,记录下这个算得上是基础知识的坑。

  • selenium + nightwatch 进行前端测试

    | /

    第一次写测试是在看《Python Web开发:测试驱动方法》的样章的时候,当通过一行命令就可以打开浏览器并完成指定操作时,感觉非常有趣。在无聊的时候,想到是否可以利用这种方式来简化每日写日报的工作,于是找到了selenium + nightwatch搭建的前端测试环境,在实现了这个小目标后,想着将学习到的东西用在项目中。个人觉得该测试环境最大的作用应该是可以简化填写表单的操作,如果项目存在很多表单,在进行业务测试的时候,如果每次都要填写一遍表单,将会是一个非常枯燥无聊的工作。正在进行的项目刚好有非常多的表单,所以尝试利用该工具方便之后的业务测试。

    网上已经有很多关于这些的文章,不过对于测试零基础的人来说还是会有一些吃力,所以这篇笔记会提供最简单最简单的实现方式。

  • nodeJs 应用开发学习

    | /

    之前使用 nodejs 完成了简陋版的静态服务器,了解了服务器的运行机制:

    • 1、创建服务器对象并监听用户请求
    • 2、设置路由来根据用户请求返回不同的响应结果
  • callback、promise、generator和await

    | /

    学习 promise、generator和最新的 await。

    假设现在有这么一个需求:

    用户输入关键词查询记录,先按照书籍ISBN码进行搜索,如果没有搜索到,就按照书籍名称搜索,如果没有搜索到,就按照借阅会员学号搜索,如果没有搜索到,就按照借阅会员姓名搜索。

  • 对产品的理解

    | /

    经历过一个项目后,在“想法”->“实现”的过程中,对产品和设计有了更深的理解( 偏见 ),产品、UI、UE需要做什么?顺序又是怎么样的。

  • EPERM:operation not permitted

    | /

    公司使用 svn 作为版本控制,但是在使用 gulp 后,gulp 执行过程中却总是出现EPERM:operation not permitted错误。
    这篇笔记“初步”解决了这个问题,解决方法涉及到 gulp 的任务执行顺序、node 执行 shell 命令 两个知识点。

  • 数据监听 - 1

    | /

    在Vue.js中,数据的变化会引起 DOM 的改变,是否能理解为 DOM 订阅了数据的改变事件,每当数据改变时,就发布广播,DOM 得以知道数据改变?

    具体如何实现呢?尝试以自己对数据绑定的理解,先实现一个“看起来”能够监听数据的实例,而不是一开始就阅读 Vue 的源码(不过如果没先阅读过,也不知道自己看不懂…),再将该实例进行优化。

    虽然不直接阅读源码,但首先需要对 Vue 的使用方式了解。

  • 数据监听 -3

    | /

    数据绑定的功能基本实现了,但也很明显存在很多问题,

    首先,第一个问题,现在是将属性名作为了事件名来实现数据的监听,假设存在nameperson.name,我们是将name传入渲染函数,对节点遍历查找“指令的值”,将其与name进行对比,符合就是找到了,但是很明显'person.name' !== 'name',所以无法实现双向绑定;第二个问题当然是数组类型的处理;
    参考 Vue 源码(v0.10)来解决这些问题。

  • 数据监听 - 2

    | /

    之前代码存在很多问题,最大的问题是,实现的并不是一个严格意义上的观察者模式(发布-订阅模式),因为默认订阅了所有数据,且不能取消订阅。
    在《JavaScript设计模式与开发实践》中,使用售楼处的例子来类比观察者模式:

    售楼处属于发布者,小明(需要购房的人)是订阅者,小明向售楼处订阅了房子开售的信息,售楼处就把小明的信息写入记录表,当房子开售时,售楼处遍历记录表通知到小明(和其他记录表上的人)。

    把这个例子和 vue 的实现类比:

    创建实例时,发布者(售楼处)会把渲染函数(购房者)添加到发布列表(记录表)中,数据变化(房子开售)时,发布者(售楼处)会调用渲染函数(通知购房者)。

    而且不同的数据可以类比于不同户型的房子。不同的数据(不同户型的房子)改变(发售)时,可以通知不同的渲染函数(购买者)。