
Nodejs
文章平均质量分 73
Luncher
这个作者很懒,什么都没留下…
展开
-
理解Nodejs的Buffer
上周同事用我们的工具写了一个关于全国比较出名的景点介绍的APP,地址在这里。整个APP中文字符比较多,文件也比较大,计算了下整个APP描述文件大小在4M左右。整个描述文件要放到第三方CDN。在这中间,我们的服务器主要负责获取前端传上来的数据,做一些加工处理并压缩后抛给第三方CDN服务器。 Node接受POST数据通常的写法:var load = function(stream, o原创 2015-05-03 20:30:12 · 1608 阅读 · 0 评论 -
nodejs 模块加载机制
Nodejs拥有一套简单的模块加载系统,在Nodejs里面文件和模块是一一对应的关系。例如:foo.js加载了同一个目录下的circle.js文件。 circle.js文件内容: const PI = Math.PI; exports.area = (r) => PI*r*r; exports.circumference = (r) => 2*PI*r; foo.js文件内容: co原创 2016-05-27 23:12:54 · 7635 阅读 · 0 评论 -
修复npm安装全局模块权限问题
相信我们曾经可能都遇到过全局安装某个模块包的过程中提示EACCESS的错误问题。这是由于npm全局安装模块的默认路径没有权限导致的。有三个方式可以解决该问题: 修改全局安装路径的权限 修改默认安装路径 借助第三方工具安装node 修改安装路径的权限查看默认全局安装路径 npm config get prefix 对于大多数系统显示目录为:/usr/local 警告:如原创 2016-04-29 09:54:40 · 26136 阅读 · 2 评论 -
electron 打包web应用
时下流行的web app打包工具主要有两个,一个是国内开发者主导的nw.js,另一个是国外大厂支撑的electron。对比了nw.js以及electron之后还是选择了electron,原因主要有以下几点:1、基于该工具已有广泛被使用的产品,如:atom、vs code等。2、在开发者中口碑比较好,有大公司参与进来,遇到问题,提个issue能很快得到响应。下载基于electron打包的Hola原创 2016-04-09 23:05:36 · 12079 阅读 · 3 评论 -
electron 研究笔记
使用electron有一阵子了,随着项目推进,需要研究的东西也逐渐多起来。总结了以下,问题主要出现在: - 跨平台兼容性 - 新的功能需求 electron 渲染进程模拟浏览器环境electron渲染进程默认为nodejs环境,在里面你可以调用require引入第三方模块,但有时候我们想要的是一个真实的浏览器环境。electron需要做的配置如下: var mainWindow =原创 2016-04-12 18:23:10 · 14167 阅读 · 1 评论 -
关于express下session的几个注意事项
使用nodejs开发web应用之所以快,其中一个重要原因是非常齐全的第三方模块,你几乎可以找到任何想要的module。express-session是expressWEB框架常用的session管理包。其主要有如下几个配置选项: cookie : 用于设置sessionID cookie选项,如过期时间,cookie适用的路径等。 name : sessionID 对应的cookie名。原创 2016-03-13 23:47:27 · 4444 阅读 · 0 评论 -
使用passport管理第三方授权认证
passport是一个为Nodejs设计的,兼容Express的认证中间件。通过第三方插件的形式(以下称为strategy),可以应对各式各样的认证请求。passport具有高度的灵活性,并不依赖于任何一个路由,或者指定的数据存储,这样给上层开发者提供的极大的便利性。passport提供的接口也相对简单,只需要给它一个认证请求,passport会提供一个钩子函数(hook)告诉你请求失败了或者成功了原创 2016-01-10 16:28:27 · 8250 阅读 · 1 评论 -
Session
web网站基于HTTP协议来做业务交互,HTTP协议本身是一个无状态的协议,但实际情况是日常很多业务逻辑都需要记录用户的行为信息。举个例子: 一个购物网站,顾客会在商品浏览页面选取需要的各类商品,放置到虚拟的购物车内。下单的时候需要跳转到结算页面,在这一串连续的用户行为中,至关重要的一点是记录当前的购物车信息,而session机制可以恰当的处理此类问题。 网站通常会在用户第一次登录的时候原创 2015-12-18 12:44:29 · 745 阅读 · 0 评论 -
Promise
相信有一定前端或nodejs编程经验都会遇到回调函数嵌套的问题,就是大量的回调函数慢慢向右侧屏幕延伸的一种状态。解决此类问题一般有三种做法:1、用事件函数的订阅/通知机制, 把每一层嵌套拆分成多个事件监听。2、利用一些现成的异步函数库来解决这个问题,例如:async, step都属于这类函数库。3、拥抱promise。传送门: promise-spec。promise概念已经被提出很久了,前端工程原创 2015-10-25 15:35:50 · 927 阅读 · 1 评论 -
I need one Texturepacker license
TP:F9A33537原创 2015-09-18 11:55:30 · 791 阅读 · 0 评论 -
Javascript-BinarySearchTree
基本结构常用接口查找元素计算节点个树插入更新节点最大节点与最小节点查找排名为n的节点查找键值为k的节点排名近似节点查找指定范围内的键值删除最大最小节点删除指定节点 二叉搜索树融合了二分查找的高效简洁以及链式数据结构删除元素的优雅。这样一个优秀的数据结构,使用的频率很高。如常见的LRU缓存淘汰算法等, 几乎任何可以想到的查找算法都可以用它来替换。日常工程代码中一般对效率不高,原创 2015-08-14 15:54:28 · 862 阅读 · 0 评论 -
NodeJS服务端重构计划
不知不觉做node开发已经半年时间了,这期间写尝试着去解决了一些问题,实现了一下想法,也遇到过一些坑。是时候来梳理一下代码,规划一下接下来的工作。现阶段我们的node服务器端代码结构是这样的: 乍一看好像没有什么问题,其实这其中充斥着一些重复代码,以及一些没有测试的模块,代码组织也不够合理。这些问题都是需要处理的。先来说说几个常用的术语router 路由模块负责请求的分发,把请求转给具原创 2015-08-13 08:22:34 · 1588 阅读 · 0 评论 -
pomelo研究笔记-RPC服务端
POMELO 采用多进程的架构可以很好的实现游戏服务器(进程)的扩展性,达到支撑较多在线用户、降低服务器压力等要求。进程间通信采用RPC的形式来完成,pomelo的RPC实现的相当精巧。采用类似如下的方式就可以调用remote服务器提供的服务:proxies.user.test.service.echo(routeParam, 'hello', function(err, resp) { i原创 2015-06-09 11:49:11 · 3676 阅读 · 0 评论 -
pomelo研究笔记-RPC客户端
1. mailbox数据收发模块一个RPC客户端可能同时需要调用多个远端(server)提供的服务,在pomelo里每个server抽象为一个mailbox。先来看看mailbox的实现:var MailBox = function(server, opts) { EventEmitter.call(this); this.curId = 1; this.id = server原创 2015-06-09 15:46:24 · 2378 阅读 · 0 评论 -
javascript 的bind/apply/call函数
javascript有三个使用频率非常高的内建函数:bind/apply/call。许多高级点的技巧都是基于这几个函数来实现的。这三个函数都用于改变函数的执行环境.从而达到代码复用的目的。 先来所说bind函数, bind,函数通常有两个用途: 1. 创建新函数,指定函数的this指针。name = 'global';var obj1 = {name: 'foo'};var showNam原创 2015-06-06 11:39:36 · 1298 阅读 · 0 评论 -
微信JSSDK使用指南
这篇文章主要来说说微信JSSDK的一些配置和微信分享的使用,包括从前端sdk文件引入到服务器端和微信服务器的交互。另外Tangide已经把一些工作做好了,我会简要说一说怎么把它用起来。在开发的过程中主要参考了微信官方开发文档,由于微信提供的功能略多,我会定期更新文档,如果你已经熟悉了微信JSSDK的开发流程可以直接跳过前面的步骤,直接跳转到Tangide与微信JSSDK的使用结合 :)。1. 首先得原创 2015-06-23 20:09:51 · 4714 阅读 · 0 评论 -
javascript装饰器模式
众所周知装饰器模式用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用hardcore继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了增加某一个单一的功能点,显得有些多余了。装饰器经典实现首先来看看传统的decorator的实现吧!假设现有一类叫Person 的对象,该对象有个sp原创 2015-06-19 09:42:21 · 2333 阅读 · 1 评论 -
npm 的工作原理
包(Package)和模块(Module)如何定义一个Package满足如下条件都可以称为一个包: 一个文件夹包含应用程序,使用package.json来描述它(a) 一个用gzip压缩的文件夹,满足(a)定义(b) 一个url可以获取(b)描述的压缩包(c) 一个@描述的一个包已经被发布到npm仓库 (d) 一个@描述的包同(e) 一个描述的包,并且具有latest原创 2016-05-06 16:46:41 · 13679 阅读 · 0 评论