魅族官网基于 next.js 重构实践总结与分享

2019-10-14
阅读 12 分钟
12.2k
在 2015 年,公司前端大佬猫哥基于 FIS3 深度定制开发了一套前端工程体系 mz-fis,该框架经历3年来的网站改版升级需求,都很好的完成了需求任务。 但随着项目越来越大,以及前端技术快速迭代。老项目的痛点越发明显。

Nodejs 分布式事务

2016-11-15
阅读 3 分钟
16.7k
事务是恢复和并发控制的基本单位,保证 ACID:原子性、一致性、隔离性、持久性。 对于全是异步的 Nodejs 而言, 并不适合做事务操作: 代码书写上: try ... catch ... 是写给人看的,但是属于同步方法,局限性很大。 callback 简直是噩梦。 Promise.then(...).catch(...) 相对而言好一点。 ES7 的 async ... await ... ...

全站缓存时代

2016-06-27
阅读 4 分钟
15.5k
原则:动静分离,分级缓存,主动失效。 Web 开发中,接口会被分为以下几类: 纯静态页面。打死我都不会修改的页面。很长一段时间内,基本上不会修改。比如:关于我们。 纯动态页面。实时性,个性化要求比较高。页面变化很大,或者每个用户看到的都不一样,比如:朋友圈。 短时静态页面。在一定时间内基本不会变化,或者...

Sails.js 内存暴涨 & 源码分析

2016-04-07
阅读 8 分钟
7.9k
Sails.js 是 node 下的一个优秀的 MVC 框架,但是使用 Sails 后,在流量增长时, node 进程有时突然内存暴涨、保持高占用。经过翻阅源码后,发现这个问题与 session / GC 都有关系。

定时器在大型web项目中的应用和实现

2016-03-30
阅读 5 分钟
22.6k
在大规模分布式系统中,每个业务都可能是集群,每个业务机都会产生定时任务,不同的业务会有不同的任务管理需求,统一的任务调度和管理变得非常有必要。

Node.js快速开发利器-Keystone.js

2016-03-20
阅读 4 分钟
19k
介绍 Keystone是以Express和MongoDB为基础搭建的开源的Node.js CMS和web应用程序平台。 Keystone在官网上声称:在Node.js中,用Keystone搭建数据驱动的网站、应用程序和API是最容易的。 之所以出此狂言,背后还是有料的,Keystone自带以下功能: 内置Express.js和MongoDB 动态路由 实用的数据库域类型 自动生成管理员界...

Jenkins+Github持续集成

2016-03-19
阅读 3 分钟
25.1k
由于最近团队代码库从coding迁移到github,在CI工具的选型上尝试了travis-ci和circle-ci,最后决定自己搭建CI服务器,而我也有幸认领了这个任务的调研,因此有了这篇文章。

Jenkins+Node.js持续集成

2016-03-19
阅读 3 分钟
11.9k
提出者Martin Fowler本人对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的...

Nodejs中使用Redis来完成定时任务

2016-03-18
阅读 2 分钟
10.6k
如果在Nodesjs开发中你的程序需要执行一些定时任务,你会怎么做? 之前的我是这样做的: 打开chrom 在github中查找关键字 nodejs 定时任务 选择star数最高的开源项目.....额,是它 node-schedule。 然后按照它的api, 写类似以下的代码,基本就能把功能完成了 {代码...} 完成代码后,我的心情是这样的。 但是,老大有一天...

在Nodejs中贯彻单元测试

2016-03-17
阅读 7 分钟
7.2k
在团队合作中,你写好了一个函数,供队友使用,跑去跟你的队友说,你传个A值进去,他就会返回B结果了。过了一会,你队友跑过来说,我传个A值却返回C结果,怎么回事?你丫的有没有测试过啊?

socket.io+express多房间聊天应用

2016-03-17
阅读 7 分钟
3.9k
Socket.IO是一个开源的WebSocket库,它通过Node.js实现WebSocket服务端,同时也提供客户端JS库。Socket.IO支持以事件为基础的实时双向通讯,它可以工作在任何平台、浏览器或移动设备。Socket.IO支持4种协议:WebSocket、htmlfile、xhr-polling、jsonp-polling,它会自动根据浏览器选择适合的通讯方式,从而让开发者可以...

Redis简易入门教程

2016-03-16
阅读 6 分钟
7.2k
Remote Dictionary Server (Redis) Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。

基于 Thrift 的 Node.js 微服务

2016-03-15
阅读 4 分钟
18.5k
Apache Thrift 是一款跨语言的服务框架,传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势。

Bluebird promise 设置

2016-03-08
阅读 2 分钟
4.4k
Bluebird可设置长堆栈跟踪、警告、监控和取消(cancellation)。注意:虽然这里默认值都是false,但是在开发环境下自动会开启堆栈跟踪和警告。

Bluebird warning 解释说明[译]

2016-03-08
阅读 2 分钟
7.2k
bluebird从3.x开始对promise的错误使用会有以下三种Warning,提醒你正在不正确使用bluebird,下面对这三种warning进行解释,并说明如何避免。