一些好用的轮子和工具
发表于|更新于|后端开发
|浏览量:
canvas绘图
阿里的数据可视化的底层框架g2,无需从头到尾操作原生canvas api了,画线、矩形、圆形、贴图等非常便利。
提高效率的chrome拓展
- 双向修改CSS的工具livestyle
文章作者: consoles
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 雨碎江南!
相关推荐
2016-06-20
D2前端
使用node构建海量页面渲染服务手机天猫的所有页面都是,大约在3年前天猫的大量页面是基于php渲染的,数据模板打包后推送到CDN,每次请求都渲染页面。用户请求CDN上的资源。但是这样的方式存在以下的弊端: 大量文件在网络情况不一的CDN节点上同步非常困难 每次请求渲染导致大量的机器资源浪费 php太灵活,多业务共享难以升级,性能低 node.js具有以下的优势: js模板可以前后端共享 轻量级、高性能 2014年的天猫双十一从php迁移到了node koajs中的基于装饰器的中间件 123456789function* responseTime(next){ // 所有后续中间件之前执行 const start = Date.now() yield next; // 所有后续中间件之后执行 const used = Date.now() - start // 将响应时间设置到http header this.set('X-Response-Time',`${used} ms`) ...
2019-09-05
Koa 源码解析
洋葱圈的实现我们这样使用中间件: 123456789101112131415161718192021222324252627const Koa = require('koa');const app = new Koa();// loggerapp.use(async (ctx, next) => { await next(); // 1 const rt = ctx.response.get('X-Response-Time'); // 2 console.log(`${ctx.method} ${ctx.url} - ${rt}`);});// x-response-timeapp.use(async (ctx, next) => { const start = Date.now(); // 3 await next(); // 4 const ms = Date.now() - start; // 5 ...
2016-03-31
javascript 设计模式
心游于艺,道不远人 变继承关系为组合关系State模式继承描述了is-a的关系,子类可以继承父类的成员变量和函数,也可以修改父类的成员变量和函数。使用设计模式来实现代码复用,而不是使用继承实现代码复用。继承关系有局限性。 装饰器模式java中有一个Runnable接口: 123interface Runnable{ void run();} 如何实现LoggingRunnable,TransactionRunnable? 原始的CodingTask类: 12345678910111213class CodingTask implements Runnable{ @Override public void run() { System.out.println("writing code"); try { Thread.sleep(3000); } catch (InterruptedException e)...
2016-03-25
javascript 高级技巧
高级函数安全类型的检测例如: 12345let isArray = value => Object.prototype.toString.call(value) === '[object Array]'let isFunction = value => Object.prototype.toString.call(value) === '[object Function]'let isRegExp = value => Object.prototype.toString.call(value) === '[object RegExp]'// let isNativeJSON = value => window.JSON && Object.prototype.toString.call(value) === '[object JSON]'// 上面的方法有疑问?什么是原生JSON? 作用域安全的构造函数例如以下的构造函数: 123function...
2016-03-29
Node.js 最佳实践
与善人居,如入芝兰之室,久而不闻其香,即与之化矣.与不善人居,如入鲍鱼之肆,久而不闻其臭,亦与之化矣。丹之所藏者赤,漆之所藏者黑,是以君子必慎其所处者焉。 —— 《孔子家语》 npm常用命令1234# 查看全局安装的node模块的位置npm root -g# 消除 mac 下全局安装模块报错 permission denysudo chown -R $(whoami) $(npm config get...
2016-04-25
javascript 语言精粹
继承 当一个函数对象被创建时,Function构造器产生的函数对象会运行类似这样的一些代码: 1this.prototype = {constructor:this}; 新函数对象被赋予一个prototype属性,其值是包含在一个constructor属性并且属性值为该函数的新对象.该prototype对象是存放继承特征的地方.因为javascript语言没有提供一种方法去确定哪个函数是打算用来做构造器的,所以每个函数都会得到一个prototype对象(非常重要). 通过伪类的方式实现继承本质上来说就是子类的原型等于父类的实例,实例如下: 12345678910var SuperType = function(){ this.superValue = 'supper value'}var SubType = function(){ this.subValue = 'sub value'}SubType.prototype = new SuperType()var sub...