十二 31

用Express构建的几种流行的Node.js框架

用Express构建的几种流行的Node.js框架

在Express上构建了几种流行的Node.js框架:

  • Feathers:数分钟即可构建原型,数天即可投入生产。
  • ItemsAPI:在后端搜索基于Express和Elasticsearch构建的Web和移动应用程序。
  • KeystoneJS:具有自动生成的React.js管理界面的网站和API应用程序框架/ CMS。
  • Poet:具有即时分页,标签和类别视图的轻量级Markdown Blog引擎。
  • Kraken:安全且可扩展的层,通过提供结构和约定来扩展Express。
  • LoopBack:高度可扩展的开源Node.js框架,用于快速创建动态的端到端REST API。
  • MEAN:独树一帜的全栈JavaScript框架,可简化和加速Web应用程序的开发。
  • Sails:Node.js的MVC框架,用于构建实用的,可用于生产的应用程序。
  • Hydra-Express:Hydra-Express是一个轻量级的库,它有助于使用ExpressJS构建Node.js微服务。
  • Blueprint:用于构建API和后端服务的SOLID框架
  • Locomotive:Passport.js的制造商为Node.js提供的强大MVC Web框架
  • graphql-yoga:功能全面,简单轻巧的GraphQL服务器
  • Express Gateway:以Express为基础的功能齐全且可扩展的API网关
  • Dinoloop:由TypeScript支持的Rest API应用程序框架,具有依赖项注入
  • Kites:基于模板的Web应用程序框架
  • FoalTS:用于构建企业级Node.js应用程序(TypeScript)的下一代框架。
  • NestJs:一个渐进式的Node.js框架,用于在TypeScript和JavaScript(ES6,ES7,ES8)之上构建高效,可伸缩的企业级服务器端应用程序
  • Expressive Tea:一个小型框架,可使用即开即用的Typescript和Express构建可调制,干净,快速和描述性的服务器端应用程序。

 

十二 28

Headless Chromium

无头Chromium允许在无头/服务器环境中运行Chromium。预期的用例包括使用Chromium和Blink提供的所有现代Web平台功能,加载网页,提取元数据(例如DOM)以及从页面内容生成位图。

有两种使用无头铬的方法:

通过DevTools远程调试协议使用

  1. 使用--headless命令行标志启动普通的Chrome二进制文件(目前仅适用于Linux):

当前,您还需要使用--disable-gpu以避免因缺少Mesa库而导致错误。

  1. http://localhost:9222在另一个浏览器中导航至以打开DevTools界面,或使用Selenium之类的工具来驱动无头浏览器。

Continue reading

十二 28

无头浏览器Chrome 入门

Chrome 59附带了无头Chrome。这是在无头环境中运行Chrome浏览器的一种方式。本质上,没有Chrome即可运行Chrome!它将Chromium和Blink渲染引擎提供的所有现代Web平台功能引入命令行。

为什么这样有用?

无头浏览器是自动化测试和不需要可见UI外壳的服务器环境的绝佳工具。例如,您可能想对真实的网页运行一些测试,为其创建PDF,或者仅检查浏览器如何呈现URL。

启动无头(CLI)

无头模式入门的最简单方法是从命令行打开Chrome二进制文件。如果您已安装Chrome 59+,请使用以下--headless标志启动Chrome :

十二 28

无头浏览器 PhantomJS

无头浏览器(Headless browser)指没有用户图形界面的(GUI)的浏览器,目前广泛运用于web爬虫和自动化测试中。随着反爬虫和反反爬虫对抗技术的升级,越来越多的爬虫开始使用无头浏览器伪装成正常用户绕过反爬虫策略。

我们如何区分这些无头浏览器和正常浏览器?从Server Side分析用户行为进行检测是一劳永逸的方法,但成本和难度都很大。

不过通过无头浏览器的一些特性。我们也可以从从Client Side找出一些不同来。下面以醉受欢迎的PhantomJS(2.x版本)为例,介绍一些识别的方法,对于其他的无头浏览器,如Slimer JS这些方法也可以参考

Continue reading

05

RocketChat 开源代码目录结构

 

  • Rocket.Chat/Dockerfile 为服务器构建可部署的 Docker 映像。
  • Rocket.Chat/docker-compose.yml 使用 Docker Compose 运行服务器和 MongoDB 容器。
  • Rocket.Chat/server 包含服务器端代码。
  • Rocket.Chat/server/methods 包含可从客户端调用的 Meteor 远程方法。
  • Rocket.Chat/server/publications 包含 Meteor 发布实现。
  • Rocket.Chat/server/startup 包含在启动时运行的服务器逻辑。
  • Rocket.Chat/client 包含客户端代码。
  • Rocket.Chat/client/routes 包含由 flow-router 处理的应用程序路由。
  • Rocket.Chat/client/startup/startup.coffee 是客户端在启动时运行的内容。
  • Rocket.Chat/public 包含静态资源,比如字体和图像,以及一些通用代码。
  • Rocket.Chat/packages 包含模块化代码,这些代码采用 Meteor 包的形式,构成了服务器逻辑的很大一部分。
  • Rocket.Chat/packages/rocketchat-ui 是包含核心 UI 的包。
  • Rocket.Chat/packages/rocketchat-ui/views/app 包含核心 UI 视图和关联的 Meteor 模板。当前的 UI 是使用 Meteor Blaze 构造的。
  • Rocket.Chat/packages/rocketchat-ui-XXX 是包含各种 UI 组件的实现的包。
  • Rocket.Chat/packages/rocketchat-lib/server/models 包含聊天服务器逻辑所使用的数据模型定义,目前在 MongoDB 中实现。

 

22

Rocket.Chat聊天程序的开发版本安装部署

Rocket.Chat聊天程序的开发版本安装部署,安装部署Rocket.Chat开发版

您可以在Linux机器或VM上运行Rocket.Chat进行开发。以下说明已在新的Ubuntu 18.04 LTS安装上经过测试。尝试查找并使用未安装其他不必要软件(而不是“台式机”或“客户端”)的新Ubuntu服务器安装。

不要使用已经安装了nodeJS的系统,以避免出现问题。

在构建期间,内存使用量将接近8G,这是为开发工作站推荐的最低RAM水平。(如果您不进行任何开发,而只是部署Rocket.Chat服务器-所需的RAM可能低至1G。)

重要信息:请注意,无需在基本操作系统上安装mongo,nodejs或npm。如果您已经安装了其中任何一个;重新开始,或使用另一个CLEAN系统。 Continue reading

17

nodejs高并发大流量的控制并发的三种方法

nodejs高并发大流量的控制并发的三种方法

eventproxy、async.mapLimit、async.queue控制并发。

node.js优缺点:

优点: 高并发,io密集型处理, 可以作为单页面应用,便于爬虫抓取。

缺点:不适合cpu计算密集型, 对关系数据库支持不好

libuv原理:

c语言编写的基础库实现主循环,文件,网络即可 Continue reading

01

nodejs模块之 redis作业/任务队列模块 bee-queue

nodejs模块,redis作业/任务队列模块,bee-queue

Git URL:

Git Clone代码到本地:

Subversion代码到本地:

一个简单、快速、健壮的Node.js 作业/任务(job/task) 队列。由Redis支持。

  • 简单:~1000 LOC,最小依赖性。
  • 快速:通过最小化Redis和网络开销来最大化吞吐量。 基准测试。
  • 健壮:考虑并发性。原子性和失败的设计;接近完整的代码覆盖。

简介 Continue reading

22

Nodejs模块之ioredis模块的简单使用

Node模块Nodejs模块之ioredis模块的简单使用

ioredis 是Nodejs的一个Redis模块,有着与Redis一模一样的 API 操作。

redis是单线程作业,所以不管查询任务是由一个链接发来的还是多个链接发来的,redis是串行的执行。并通过当前的链接返回客户端。nodejs接受redis的返回后,不管是不是并行,都要等主线程空闲下来才能一个个处理服务器返回的数据。

io

它有几个特点:

  • 全功能。它支持 Cluster,Sentinel,Pipelining 以及 Lua 脚本和 Pub / Sub(在二进制消息的支持下)。
  • 高性能。
  • 令人愉快的 API 它适用于 Node 回调和 Promise。
  • 转换命令参数和回复。
  • 透明键前缀。
  • 抽象 Lua 脚本,允许您定义自定义命令。
  • 支持二进制数据。
  • 支持 TLS。
  • 支持离线队列和准备检查。
  • 支持 ES6 类型,如 Map 和 Set。
  • 支持 GEO 命令(Redis 3.2 Unstable)。
  • 复杂的错误处理策略。

Continue reading

13

nodejs中的单进程异步锁——async-lock

nodejs中的单进程异步锁,node异步锁,async-lock

为什么是async-lock?

因为我见其下载量比较大(在我发现的所有类似库中是最大的)且最近更新时间较近。

场景

  1. 在异步函数中,由于存在异步操作,对此函数的A,B两次执行会出现结束次序不可控。即A先执行,却比B后退出函数。
  2. 对于数据库的操作,有时会将select的值进行一系列业务变化后重新update至数据库。就比如简单的计数器,0开始计数,假设由于业务原因,
    必须在代码中进行+1操作。则A读取数据库进入异步执行,此时B也开始执行读取数据库的代码,最终后造成两次执行后计数器只加了1。

此时便需要锁机制,类似于Java中的synchronized或者lock。执行同一段代码时,添加相同的key,则发现此key正在使用,则直接放入此key的待执行数组。 Continue reading