首页 文章 精选 留言 我的

精选列表

搜索[nodejs],共1637篇文章
优秀的个人博客,低调大师

阿里云人脸识别NodeJS调用示例参考

概述 前面分别给出了关于阿里云人脸识别Java调用示例参考、阿里云人脸识别C#调用示例参考、阿里云人脸识别Python3调用示例参考 、阿里云人脸识别PHP调用示例参考。本文主要介绍DodeJS调用阿里云人脸识别服务,参数等的获取参考阿里云人脸识别使用流程简介。 Code Sample 1、使用网络图片 var request = require('request'); var url = require('url'); var crypto = require('crypto'); var date = new Date().toUTCString() // 这里填写AK和请求 var ak_id = '********'; var ak_secret = '********'; var options = { url : 'htt

优秀的个人博客,低调大师

morgan nodejs日志组件两种用法

记录请求参数和请求内容 默认morgan没有提供记录请求参数和请求内容的方法, 但是他提供了扩展方法,如下: morgan.token('requestParameters', function(req, res){ return JSON.stringify(req.query) || '-'; }); morgan.token('requestBody', function(req, res){ return JSON.stringify(req.body) || '-'; }); // create custom format,includes the custom token morgan.format('live-api', ':method :url :status :requestParameters :requestBody'); app.use(morgan('live-api')); 输出日志到数据库或将日志作为参数发送到其他请求 默认日志信息是输出到命令行窗口中,能否输出到文件或数据库中呢?答案是肯定的 定义morgan的options中有个stream配置项,我们可以利用他做文章。 const request = require('request') const split = require('split') // 将日志信息作为请求参数传给其他地址,比如 Elasticsearch 日志分析系统 let httpLogStream = split().on('data', function (line) { request({ url: 'localhost://192.168.1.1:8080', method: 'POST', body: line }) .on('response', function(response) { console.log(response.statusCode) // 200 }) }); app.use(morgan('common', { stream: httpLogStream })); // 将日志写入数据库 // 带write方法的对象 let dbStream = { write: function(line){ saveToDatabase(line); // 伪代码,保存到数据库 } }; // 将 dbStream 作为 stream 配置项的值 app.use(morgan('short', {stream: dbStream}));

优秀的个人博客,低调大师

基于MongoDB与NodeJS构建物联网系统

目标 基于阿里云服务快速构建物联网系统 场景介绍和架构设计 端的数据采集与通信协议 利用Node.js构建服务框架 MongoDB数据建模与存储实践 EMR大数据分析 准备工作 ECS MongoDB EMR Alinode 中间件代码 注意事项:ECS,MongoDB 可以选择按量计费的服务。 实例申请 Step0 登录云中沙箱拿到阿里云账号 Step1 利用上面拿到的train*@aliyun-inc.com的阿里云账号,登陆阿里云官网 Step2 控制台新建实例 新建实例: https://mongodb.console.aliyun.com/#/buy/mongodb?chargeType=PostPaid 新建实例时,请选择『按量付费』类型,并需要选择合适的CPU 内存规格,磁盘空间、并设置 root 密码(后续连接实例需要用到)。 连接实例 实例创建成功后,你可以在控制台查看实例的详细信息,包括复制集节点信息、复制集名称,用于客户端 Driver 连接的 Connection String),根据这些信息就能通过 MongoDB 的客户端 Driver 来访问实例。 配置连接数据库, 新增 config/config.js 文件 'use strict'; var config = { name: 'production', mongodb: 'mongodb://user:pass@host1:port1,host2:port2/iot?replicaSet=name&authSource=admin' }; module.exports = config; user:pass填购买时配置的用户名和密码 host1:port1 填节点1的信息,host2:port2 填节点2的信息。replicaSet=name的name替换成副本集的名称。 不使用默认的 admin 库,而是用 admin 鉴权创建 iot库。 生产环境连接 MongoDB 实例时,请确保按复制集的方式正确连接,以保证服务的高可用。 在云服务器ECS上构建项目 1. 申请应用id(appid)和应用token(app secret) 阿里云账号登录 https://alinode.aliyun.com点击按钮“立即使用”,接受“试用条款”添加应用,填入应用名称后提交 系统自动生成 后续从应用主页->设置中查看appid和app secret。 2. 登录ECS 3. 一键安装alinode运行时 wget -q https://raw.githubusercontent.com/aliyun-node/alinode-all-in-one/master/alinode_all.sh bash -i alinode_all.sh 需要输入信息时回车采用默认值,直到填写app id和app secret的时候输入上面步骤生成的app id 和 app secret。 4. 运行agentx nohup agentx /path/to/yourconfig.json & 5. 下载项目到本地 git clone https://code.aliyun.com/alicloud_cto_office/IoT.git cd IoT cnpm install 6. 将申请到的MongoDB配置信息写入文件 config/config.js 'use strict'; var config = { name: 'production', mongodb: 'mongodb://user:pass@host1:port1,host2:port2/iot?replicaSet=name&authSource=admin' }; module.exports = config; 7. 运行项目 ENABLE_NODE_LOG=YES node bin/www 8. 浏览器打开 http://your-ecs-ip:8001

优秀的个人博客,低调大师

NodeJS对于Java开发者而言是什么?

我们都知道Node.js现在得到了所有的关注。每个人都对学习Node.js感兴趣,并希望可以工作于Node.js。在开始工作之前了解技术背后的概念总是不会错的。但对初学者来说,可能会因为不同的人使用的不同定义而晕头转向。Node.js究竟是什么?它是新的语言还是新的框架,是新的工具抑或只是一个简单的JavaScript文件?即使对于有经验的Java开发人员来说,也很难快速了解Node.js。因此,在本文中,我将尝试为Java开发人员诠释Node.js。 运行时环境 我们知道Java需要一个称为JRE的运行时环境来运行Java程序。JRE有一个称为Java Virtual Machine(JVM)的虚拟机。JVM有许多组件,如垃圾回收器(GC),即时(JIT)编译器,解释器,类装载器,线程管理器,异常处理器,用于在不同时间执行不同的任务。 除了JVM之外,JRE还有一系列的库(例如,rt.jar)来帮助运行时的Java程序。我们有单独的JRE用于不同的平台,如Windows,Macintosh和Linux,以及还有JVM。 好吧,就试着记住如何编译和执行一个Java程序。我们有源代码(.java),它由Java编译器编译成一个名为Bytecode(.class)的中间代码。此Bytecode被提供给JVM以便在给定的目标平台上执行。JVM在执行之前将Bytecode转换为特定于目标平台的机器码。 Java程序的执行可以通过下面的图片解释: Web应用程序架构 典型的Java Web应用程序架构有四个层:客户层(Client),展示层(Presentation),服务/业务层(Service/Business)和数据层(Data)。 客户层(Client layer)可以使用像jQuery这样的库来支持AJAX功能并且具有一些客户端验证和DOM操作。 展示层(Presentation layer)通常是与客户层交互的一个层。该层通常已经实现了用于请求和响应处理的MVC模式。在这一层可以使用如Spring MVC这样的框架。此外,还有一个模板引擎,如Velocity,可以根据预定义的布局动态地渲染视图。 服务或业务层(Service/Business layer)负责具备业务逻辑并与其他层通信。在AJAX请求的情况下,该层直接向客户层提供数据。此层执行业务逻辑并回应到展示层以更新模型。服务层是与数据层通信以获取或更新所需数据的一个层。服务层可以具有使用任何框架,例如Spring的SOAP或REST服务实现。 数据层(Data layer)通常使用一些ORM框架,如Hiberate,或任何基于JDBC的库/模板(Spring JDBC模板)来与任意RDBMS(如Oracle)进行通信。 架构部署 Java Web应用程序架构部署包括Apache HTTP服务器,它充当代理服务器以及提供静态内容。动态内容由Web容器提供,Web容器实际上是处理Java文件的引擎。 下图说明了Java Web应用程序的架构部署: 我如何理解Node.js? 运行时环境 我们上面讨论JRE的原因是为了直接与Node.js进行比较。对,你看明白了吧! Node.js不是一种语言;不是框架;也不是工具。它是用于运行基于JavaScript应用程序的运行时环境。 与JRE类似,Node.js有一个称为JavaScript Virtual Machine(JsVM?)的虚拟机。它为基于JavaScript的应用程序生成机器代码,以便在不同的平台上启用它。 Node.js还有一系列库,它们可能被称为Node API或Node Modules,用于帮助在运行时运行JavaScript应用程序,类似于JRE中的Java库。我们对不同的平台,如Windows,Macintosh和Linux,以及JsVM有不同的Node.js要求。 JavaScript Virtual Machine就是V8,来自Google的开源JavaScript引擎。与Java Virtual Machine一样,JsVM(V8引擎)也有主要组件,如JIT和GC,分别用于执行任务,运行时编译,和内存管理。 现在,让我们试试理解JavaScript程序是如何编译和执行的。源代码是用JavaScript(.js)编写的。在将其提供给JsVM(V8引擎)之前,没有生成中间代码。JsVM直接获取此源代码并将其编译为特定于给定目标平台的机器代码以便执行。 下面的图片可以简明地说明上述解释: Web应用程序架构 基于Node.js的Web应用程序主要遵循Java Web应用程序架构。主要区别在于客户端请求处理。客户端请求将由单个线程处理,但在Node.js应用程序的情况下将异步处理。使用Java,每个客户端请求将由单独的线程同步处理,因此它是多线程的。 有许多框架/库可用于基于Node.js的Web应用程序开发。这里有趣的地方在于,所有的框架/库都是基于JavaScript的。 你可以从下面的图片中快速理解不同的层和在那些Node.js应用程序层中使用的框架/库。 客户层使用Angular.js,客户端MVC框架。展示层,以及服务层,可以通过使用Express.js,一个基于JavaScript的Web应用程序框架来开发。这也自带一个用于运行Node.js应用程序的独立服务器。数据层使用对象数据建模模块(例如Mongoose.js)来与NoSQL数据库(如MongoDB)通信。 这个特殊的栈称为MEAN,它由MongoDB,Express.js,Angular.js,客户端MVC框架和Node.js(运行时环境)组成。 架构部署 基于Node.js的Web应用程序的架构部署遵循Java的Web应用程序部署架构。它有一个NGINX服务器,它的作用就如同HTTP代理服务器,并提供静态内容。动态内容由Node.js服务器提供,该服务器包含处理JavaScript文件的引擎。 下面的图解释了基于Node.js的Web应用程序的架构部署: 就这样? 请注意,这篇文章的目的只是为了帮助从Java开发人员的角度理解Node.js,而不是为了显摆对Java或Node.js的支持。此外,除了我们在讨论中涉及到的之外,还有许多不同的架构解决方案、框架和工具。为了便于比较和理解,我采用了最简单和可行的架构解决方案以及最简单的框架和库系列。因此,请务必更进一步地去深入了解。祝大家学习愉快! 作者:小峰 来源:51CTO

优秀的个人博客,低调大师

nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--自动路由篇(1/8)【route】

文章目录 前情概要 在使用express框架开发的时候,每加一个请求,都在增加一条route请求规则,类似于下面的代码,很烦有木有! app.use('/myroute path', (req, res, next) => { //dosomething }) 我们难道不能再智能一点点么,学习后端mvc框架一样,比如加个标记,或者默认规则直接自动映射嘛。约定胜于配置嘛! 我们的实现思路 拦截所有请求 根据我们的规则进行路由的匹配 调用匹配到的处理函数 拦截所有请求 这个太好办了,app.use('/') 搞定。参考下面的代码 import * as express from 'express' import * as controllers from './controller' import { RequestHandler, RouteHandler } from 'gd-express-basic' const _app = express(); //第一个express 中间件,处理一下跨域请求中的options请求。 _app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length,Authorization,Accept,X-Requested-With'); res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS'); if (req.method == 'OPTIONS') { res.send(new ResponseBase(200)); } next && next(); }); //第二个中间件,拦截所有请求对路由做自动映射 RouteHandler(_app, controllers); //第三个中间件,处理请求 _app.use(RequestHandler); //第N个中间件,处理一下error呀,404呀等其他情况。 根据规则进行路由的匹配 接下来看一看RouteHandler方法。主要干几个事情 缓存所有action,方便后续的调用。【 请求处理函数的特性注册篇【详细说明】 拦截所有请求,并根据规则解析到对应的action上面去。【app.use('/', (req, res, next)】 根据解析出来的controller 、action名称以及当前请求的method找到对应的action并记录到当前请求对象上,方便接下来的请求处理。 目前我们的规则很简单。url分2层,第一层为controller名称,第二层为action名称。即:/{controller}/{action}; /** * 路由选择处理中间件 * * @export * @param {core.Express} app * @param {*} controllers */ export function RouteHandler(app: core.Express, controllers: any) { //程序启动的时候,找到当前所有的controllers,并根据规则缓存好我们所有的处理函数(action),方便接下来的匹配 //请求处理函数发现篇【controller+action】具体讲到 find(controllers) //拦截所有请求,对请求 app.use('/', (req, res, next) => { //拿到route并解析出来controller和action的名称。 var pathArr = getRouteTokens(req.path) var controller = (pathArr[0] && pathArr[0].toLowerCase()) || 'home'; var action = (pathArr[1] && pathArr[1].toLowerCase()) || 'index' //根据参数找到能处理这个请求的action var desc = GetActionDescriptor(controller, action, req.method) if (!desc) { desc = GetActionDescriptor(controller, '_default', req.method) } if (desc && (!desc.HttpMethod || (desc.HttpMethod && desc.HttpMethod === req.method))) { res.locals.authInfo = { isAuth: desc.isAuth }; //如果请求能匹配到可以处理的action,则赋值 res.locals.actionDescriptor = desc; }else{//否则跳过。当然在这里也可以直接返回404,结束本次请求。 } next && next() }) } function getRouteTokens(path: string) { var pathArr = path.split('/'); var arr: string[] = []; pathArr.forEach(element => { if (element) arr.push(element) }); return arr } 代码那是相当的简单。其实只干了一件事情,据我们的url规则找到与之匹配的在项目启动的时候扫描缓存的请求处理函数 考虑到前端不太会有area的概念,所以暂时没有支持,如果要支持其实也很简单,增加一个area注册,然后再做路由匹配的时候多判断一次area就完事儿了。 估计也不太会有自定义route 的要求,比如dotnet mvc 里面的【[Route("/path")]】特性。所以也暂未做支持。如果确实有也可以通过app.use实现。

优秀的个人博客,低调大师

OOX 0.0.2 版本发布, 极简 NodeJS 接口开发框架

OOX 是什么 一个天生支持微服务/单体应用无缝切换的服务框架, 超级适合初创公司, 节省初期上线成本, 又能满足爆发式发展需求 一个天生支持分布式链路跟踪的分布式系统, 超级适合多人团队并行开发, 函数级日志联调优化, 节省bug调试与优化成本 一个天生支持 边缘计算, ABI友好 的嵌入式系统, 模块化的设计和类P2P服务发现方式, 配合 WebSocket 长连接, 无论什么应用场景, 都能做到得心应手 更新了什么 本次更新优化了SocketIO连接拦截方式, 具体为使用抛异常替换传统的方法调用 const { Service } = require ( 'oox' ) module.exports = class extends Service { static SocketIO = class extends Service.SocketIO { onSocketConnection ( socket ) { const { headers } = socket.handshake const isValid = headers [ 'x-caller' ] === 'client' // 当前优化后的使用方式 if ( !isValid ) throw new Error ( '连接失败' ) // 优化前的使用方式 if ( !isValid ) return socket.send ( '连接失败' ).disconnect ( true ) super.onSocketConnection ( socket ) } } } 有什么特性 HTTP 及 socket.io 服务双加持 0 配置启动服务 0 配置服务节点无限动态扩展 0侵入式编码, 极致简洁体验 0 侵入实现分布式链路跟踪 最符合直觉的路由模式 最符合直觉的服务调用方式 任何地方都能设置拦截器, 极致权限控制 自动服务发现 (P2P) 自动负载均衡 (可自定义算法) `分布式 / 独立应用`无缝切换! "Jawa"级性能, 吊打一切! 其它牛逼特性, 正在探索中

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。