拷贝一个节点相当于将一个节点作为对象存放在内存中,这个对象可以被其他的诸如 appendChild 等操作来使用。而节点删除则只能通过一个 removeChild 来实现,所以要删除某个元素,首先要获取这个元素的父节点。我们使用以下方法来实现,参考代码:

继续阅读

这几天在 Mac 下装了微软的 Visual Studio Code(下面简称 VSCode),用起来感觉非常不错,很多功能在 atom 上需要安装插件才能实现的,在 VSCode 中都是集成好的,比如 JavaScript 的智能提示、高亮显示已选同名单词等。但是有一个功能让我看着很不顺眼,就是它会将一些拼写错误的单词打上一条绿色的波浪线,如果代码里面有很多缩写的单词,就会出现非常多的波浪线,看着非常难看,如下图:

继续阅读

linter 是一个系列的插件,它可以识别大部分语法,并对你的语法错误进行纠正。linter 只是一个框架,如果要找针对你使用语言的语法纠错插件必须要安装针对你语言的版本,但是 linter 也不能卸载,它是一切的基础。下面是其纠正 js 代码的错误截图。

继续阅读

初看这个标题可能有点晕,说的有点过于专业化,但是我也想不到更好的标题了。不过我们用真实的场景来给大家描述,来充分表达我们想表达的内容。熟悉使用 Meteor 发布(publish)和订阅(subcribe)的朋友可能会遇到这样一种情况。在某个列表页面,我们需要的数据分别储存在不同的集合(collection) 中。我们设计了一个查看某用户的所有评论的页面,按常规模式,我们首先可以根据用户的 ID 去评论的集合中查询该用户的所有评论内容,并根据该评论所关联的文章的 ID 查找到这篇文章的标题(Title)信息,用来显示在评论列表页提供用户查看或者访问。你可能会注意到,如果我们想获取到某条评论所关联的文章标题,我们必须要订阅这篇文章的内容,而在这之前我们并不知道这个用户都在哪些文章中有评论,若想订阅就需要把所有文章的结合订阅到客户端来使用,这样无疑是浪费资源和消耗时间的。

继续阅读

这几天做了微信分享功能的修改,通过微信 jssdk 可以修改微信右上角分享到朋友圈、分享给朋友、分享到QQ这些界面的 Title、Description和 Image,用来让分享更有质量。普通情况下如果你没有使用 jssdk 去配置你分享的 Title 等信息,微信会将分享出来的 Title 设置为你网页的 Title 内容,将 Description 设置为网站的 Url,而图片则取文章中第一幅图片,如果文章中没有图片,那么分享出去的图片就是空白的。

继续阅读

因为在微信客户端环境,我们无法使用 console.log 查看前端显示的一些调试信息,如果需要用到调试,我们一般是使用 Session 方法来给前端一个固定专门显示日志的变量设定属性,这样这个固定的变量会跟随 Session.set 设定的值而变化。后面想了一个比较方便的办法,直接将客户端需要输出的日志信息通过 Meteor.call 发送到服务端打印我们就可以方便的在服务端一起看到server log 和 client log 了。

继续阅读

微信开发团队已经提供“微信开发者工具”,本文内容已经落后,请开发者选择“微信开发者工具”。

你是否遇到过这样的问题?在微信公共号开发过程中,有一些诸如获取用户身份等信息的代码必须要再微信客户端打开连接测试,而且微信后台获取用户信息时必须设置一个安全域名,这个域名指定到一个我们暴露在外网的服务器上才可以正常使用。而我们编写代码的环境往往是本机,很少有直接连接服务器用 vi 编写代码的场景,一般情况都是本地修改好代码,把代码通过 FileZilla 等类似的工具把代码传到服务器上,或者把代码提交到 github 上,再到服务器把最新的代码 pull 下来测试。对熟悉微信公共号开发的人来说也许还好,但是对于一个刚刚接触微信公共号开发的人可能这个测试的过程要来回重复十几次才能把代码跑通,而这只是其中一个获取用户身份的功能,调用 JS SDK 等等都需要在服务器环境测试,这个过程是很折磨人的。

类似上面的问题,我想了很多办法,比如用 atom remote sync 插件、自动同步代码到服务器等等思路,最终还是有各种小问题折磨着我。如果能实现手机微信公共号跳转的页面直接访问的是我们编程环境的电脑,代码修改后只需要等待服务端重新编译,手机端就可以直接测试效果,这样岂不是方便很多?继续阅读

在 Meteor 项目中,经常会有客户端使用 Meteor.call 方法去调用服务端的一个方法,并等待该方法返回。通常情况下,服务端的方法只需要 return 后,客户端使用回调函数就可以访问到 return 的值了。但如果服务端同样调用了一个异步执行的函数,那么此时就无法判断服务端的异步函数是否已经执行完毕,返回结果就会出现不准确的情况。如下所示:继续阅读