Karma 测试异步加载的 JavaScript

JavaScript Karma 测试 AMD 异步

Karma是Google为AngularJS开发的测试执行工具,为JavaScript提供了非常有效的测试环境。 但Karma会在所有脚本载入之后立即进行测试,这使得异步加载的JavaScript不会被测试到而得到空的测试结果。 异步测试脚本还有着被多次执行、测试覆盖信息缺失等问题。

对于这些问题,可以禁用__karma__.loaded方法来实现延迟Karma测试的执行, 通过files.included避免重复执行,以及preprocessors配置来为karma-coverage提供源码信息。

Karma采取客户端-服务器的架构,可启动多个浏览器(或从浏览器主动连接)与命令行进行通信, 从而实现测试结果的命令行输出,以及本地测试报告的生成。

利用 Sinon 测试 AJAX 请求

AJAX BDD DOM HTTP Mocha Mock Promise XHR jQuery 异步 测试

在Web前端测试中,常常会需要测试AJAX行为。 为了简化测试的环境要求需要提供虚拟的测试环境。 Sinonjs在这方面提供了两类API:

  • Fake XMLHttpRequest:覆盖DOM API中的XHR。使得我们可以捕获所有用户构建的XHR对象,包括直接构造的XMLHttpRequest,也包括通过jQuery等工具构造的。因此可以测试XHR构造是否正确。
  • Fake Server:Mock服务器行为。如果我们只希望Mock服务器的Response,可以使用Fake Server。

Promise异步编程范式

mongoose JavaScript MongoDB Node.js Promise 回调函数

Promise是JavaScript中的一种异步编程范式, 一个Promise对象表示一个即将完成但还未完成的操作。 鉴于JavaScript中异步和回调的编程风格, Promise模式可以有效地避免『Callback Hell』。

Promise 最初由 Q, jQuery 1.5, RSVP.js, bluebird 等实现, 现有 Promises/A+ 社区标准可以参考:https://promisesaplus.com/,在 纳入 ES6 后浏览器和 Node.js 都相继给出了实现。

初始化

传入一个回调函数即可初始化一个Promise对象padmin

var padmin = new Promise(function(resolve, reject){
    user.find({role: 'admin'}, function(err, admins){
        if(err) reject(err);
        else resolve(admins);
    });
});

Vim 中为 Markdown 配置回车展开

Vim-Practice Markdown Vim Jekyll

靠Vim写Jekyll博客已经很久了,编写代码块(Code Fence)时键入前后的```, 以及手动编写文章头信息(Front Matter)一直是个麻烦的事情。 Harttle今天就通过Vim键盘映射来对这两种语法提供回车展开支持。最终效果如下:

使用systemd管理Node.js应用

Linux MongoDB Node.js Redis systemd

systemd 是 Linux 下的一款系统和服务管理器, 该软件的初衷是提供精确的服务间依赖,以此支持并行启动来提高性能。 越来越多的Linux发行版都由sysvinit迁移到了systemd(包括Debian!)。 在这些Linux系统中,用原生的systemd来托管Node.js进程足够满足一般开发者的要求。 借由systemd可以很方便地处理依赖关系和监测日志。

systemctl

systemctl是查询和控制systemd的主要命令,下面以mongod为例介绍常用参数:

MongoDBNode.js下非常常见的NoSQL数据库,在ArchLinux下通过pacman安装:pacman install mongodb,安装成功后mongod即为可用的systemd服务。

# 查看服务状态
systemctl status mongod
# 启动服务
systemctl start mongod
# 停止服务
systemctl stop mongod
# 重启服务
systemctl restart mongod
# 设为自启动
systemctl enable mongod
# 取消自启动
systemctl disable mongod

404错误处理:重定向还是直接404?

AJAX HTML HTTP JavaScript 搜索引擎

小型网站开发通常会使用某种Web应用框架,比如类似Spring、Express、Django等框架。 这些框架会给出自定义错误页面的方式。当404发生时Web框架会渲染并返回对应的错误页面。 这是最自然和直接的错误处理方式,但有时我们希望错误页面可以单独Serve,比如放到CDN上。 本文档依据RFC 2616(HTTP 1.1)比较几种常见的404错误处理方法:

  • 返回具有404信息的页面,同时给出404状态码。

    Google、Github、Facebook、Amazon、Linkedin。

  • 重定向(302/303)至错误URL,该URL给出具有404信息的页面。

    百度、淘宝、腾讯

导航: 上一页 下一页

🔝