在 Node.js 开发领域中,原生 C++ 模块的开发一直是一个被人冷落的角落。但是实际上在必要的时候,用 C++ 进行 Node.js 的原生模块开发能有意想不到的好处。
node-gyp是用Node.js编写的跨平台命令行工具,用于为Node.js编译本机插件。它包含gyp-next项目的供应商副本,该副本以前由Chromium团队使用,已扩展用来支持Node.js本机插件的开发。
简单来说,node是跨平台的,那么对于任何的node模块理论也是应该是跨平台的。然而,有些node模块直接或间接使用原生C/C++代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。SQLite3就是一个经典的原生模块,让我们以安装该模块为例,探索一下安装原生模块的流程。
本文作者:ivweb 程柳锋 当Javascript的性能遇到瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了。 应用场景 日常工作中,我们经常需要将原生的N
node-gyp的作用我已经不想赘述了,这里给一个我之前文章的链接:cnblogs看这里,知乎看这里。本文主要从源码入手,介绍node-gyp查找VisualStudio的过程
本文主要介绍在 Electron9.x 中,使用ffi-napi,ref-array-napi,ref-napi 加载 Windows 动态链接库,并在Vue 渲染进程中使用。使用过程中会遇到一系列的坑,本文将会一一解决,并解释原因。如有同行兄弟遇到此问题可以借鉴。
1.cmake编辑opencv的源代码路径(带有makelist的目录),生成opencv相关lib文件.configure两次后,点击生成(cmake中选择安装的以依赖库,如果缺少相应的依赖库,就算成功生成了的OpenCV功能也会有问题的,建议的NuGet下载)
可以看到,最后会匹配一个 .node,而后边的描述也表示该后缀的文件为一个二进制的资源。 而这个 .node 文件一般就会是我们所编译好的 c++ 扩展了。
当我们编写node原生模块的时候,免不了对node-gyp项目进行命名,在node-gyp进行build的时候,会跟binding.gyp配置文件中的target_name生成对应的原生模块。但是,如果target_name填写不规范,会触发编译问题。
这些 C++扩展(xxx.node文件)也能像 JS 模块一样直接require使用,因为Node 模块加载机制提供了原生支持
Node.js 的出现,让 JavaScript 脱离了浏览器的束缚,进入了广阔的服务端开发领域。而 Node.js 对 CommonJS 模块化规范的引入,则更是让 JavaScript成为了一门真正能够适应大型工程的语言。
使用Electron进行打包通常会用到electron-builder或者electron-packager两种工具。在使用electron-builder的时候,由于对机制的不熟悉,我们在打包过程中常常遇到很多环境错误,但最终只是一些简单的错误信息,难以排查问题。本文将介绍electron-builder进行DEBUG输出的正确方式来帮助排查打包过程中的各种问题。
gyp是一种根据c++源代码编译的工具,node-gyp就是为node编译c++扩展的时候使用的编译工具
该文介绍了如何使用Express框架构建Web应用程序。文章首先介绍了Express的基本概念,然后详细阐述了如何安装Express、编写Express应用程序以及使用Express路由、中间件和插件。最后,文章通过一个示例展示了如何构建一个基本的Web应用程序。
Cocos 官方今天发布了 Cocos Creator 3.3.0 版本,《奔跑吧小仙女》同步升级最新版引擎,购买过的伙伴可免费升级。
Node.js 提供了使用 C++ addon 方案作为扩展的能力。我们可以编写 C++ 的代码来扩展 Node.js 或封装自己产品相关的能力接口为 Node.js 接口提供用户或者开发者使用。将编写好的源代码上传至 npm publish 平台,开发者通过 npm install 就可以使用你的扩展包了。但使用的前提是引入方必须要具备编译 C++ 代码的环境,比如在 Windows 下需要安装 MSVC 的编译工具链。而正常的前端开发者并不会将这些组件安装到系统里面,他们更关注的是前端业务逻辑。
之前分享了如何写一个nodejs的c++插件。今天分享一下如何发布一个c++插件。
对于新手来说,在 Windows 7 中安装 contextify 可能会遇到各种问题,其中一些问题可能与操作系统版本、依赖项或环境配置有关。通常情况下,contextify 是一个用于在 Node.js 中运行 JavaScript 代码的模块,它依赖于 Python 和 Visual Studio Build Tools 等软件。所以说,当我们遇到gyp 退出代码为 2的错误信息时,可以向下面几个步骤一样去做处理。
Javascipt是一种基于原型的脚本语言。它是动态的,弱类型的语言。它可以说是最流行的Web开发语言。Javascript已经超越了基于浏览器的脚本语言,并且与node.js一起,它也被用作后端开发语言。
通过前两节已知道怎么去写一个简单的 Node.js Addons 插件,包括接收参数、类型转换等,之前插件编译我们只考虑了一个平台,但是实际中我们调用 C/C++ 的一些函数,有可能会涉及到不同平台,那么在编译时也要根据平台选择编译。
安装git,nodejs和yarn 安装Python27,3.x版本的不行,确保它在你的环境变量里; 安装gulp
上个月Facebook开源了Android版的react-native,react-native为何物就不多介绍,个人认为虽然取代不了native,但是确实有可能是移动端的未来。
很多 Node.js 开发者,都知道有 package.json 这个文件,也多少都了解一些 npm 知识,但是可能没有系统的学习过,这部分的知识对于开发一个 cli 工具,发布自己的 npm 包都很常用,开发中也会经常用到npm script内容,系统的学习一下确实会有所帮助,上面三个场景如果你都用不到,配置上节约时间,知其所以然也是有必要的!
npm install bcrypt –save引起了让人很烦恼的错误,整个人心情都不好了。下边是个人的解决方法:
概述 为什么要在node.js中调用动态链接库 由于腾讯体系下的许多公共的后台服务(L5, CKV, msgQ等)已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为在公司内
notice: 本人的node使用环境是64bit的Linux系统。 安装ffi:
像java,python这类代码是需要对应平台的vm环境,转成平台相关代码才能够执行。
《第十课 Solidity语言编辑器REMIX指导大全》文章详细介绍了使用REMIX IDE环境调试Solidity智能合约的方法,其中没有介绍在本地部署IDE环境,访问本地目录的方法。 本文的重点: (1)在本地WINDOWS 10环境安装NODE.JS环境; (2)在本地安装REMIX IDE环境,可以本地直接访问编辑器; (3)安装REMIXD,可以访问本地目录;
通过样例,让我们了解如何编写一个node的原生模块。当然,这篇文章还有一个目的,是为了方便以后编写关于node-gyp的文章,搭建初始环境。
因为最近做桌面端开发 ,要用到Windows,在Macbook上安装的Windows,环境好不容易全都配好的,用一段时间空间就不够了,又得重装,一些好用的软件老是忘记名字所以就写个博客记录一下。
本文主要备忘为Node.js编写组件的三种实现:纯js实现、v8 API实现(同步&异步)、借助swig框架实现。
这篇文章是由 Chengzhong Wu (@legendecas),Gabriel Schulhof (@gabrielschulhof) ,Jim Schlight (@jimschlight),Kevin Eady,Michael Dawson (@mhdawson1),Nicola Del Gobbo (@NickNaso) 等人编写的,首发在 Node.js Medium 博客。
再小的个体,也有大大的能量,上一篇从Haskell讲到函数式的精髓:“大事化小,小事化无”,问题总是有的,解决之道,就是从这些小小的集合中,蕴含着。
nodejs拓展本质是一个动态链接库,写完编译后,生成一个.node文件。我们在nodejs里直接require使用,nodejs会为我们处理这一切。下面我们按照文档写一个拓展并通过nodejs14源码了解他的原理(ubuntu18.4)。 首先建立一个test.cc文件
虽然现在大部分情况都是使用n-api来编写插件,但是底层毕竟是v8(和libuv),使用v8编写简单的插件,同时熟悉v8的使用。
由于升级了 Angular 版本,同样也升级了 Angular-CLI 版本,导致 v8.x 版本的 node 已经无法编译 angular 项目,至少需要使用 node v10.x 版本。
Node-API(以前称为 N-API)是 Node.js 官方提供的一个用来编写 C/C++ 插件的稳定模块。不同版本的 Node.js 只要遵循的 应用二进制接口(ABI) 的版本是一致的或向前兼容的,即可在多个 Node.js 版本之间切换使用。通俗的讲:“当你在 Node.js v12 编译之后的模块切换到 Node.js 14 无需重新编译仍可运行”。
众所周知 Atom是一款非常酷炫的编辑器。因为它就像上古卷轴一样,玩家可以开发各种dlc补丁,实现自己想要的效果。所以Atom 可以被你改造成自己想要的东西,可以用来写算法竞赛题目,可以开发网页,可以写Python,java等等。代码风格和效果也随便你选。我是已经入坑了。 现在我要把Atom打造成一个写c/c++的编译器。 第一种方法: clang-format 代码格式化支持保存的时候格式化 autocomplete-clang 自动补全,无比强大 linter-clang symbols-tree-
npm run dev本地项目出错 问题栈 verbose Please try running this command again as root/Administrator. 2729 verbose stack Error: node-sass@3.13.1 postinstall: node scripts/build.js 2729 verbose stack Exit status 1 2729 verbose stack at EventEmitter. 分析发现与node-sas
本系列文章的前面几篇主要是从Electron技术本身进行了讨论(包括:第1篇初步了解Electron、第2篇进行了快速开始和技术体验、第3篇基于实际开发考虑的技术栈选型等),各位读者也应该对Electron的开发有了较为深入的了解。
官网http://www.nirsoft.net/utils/nircmd.html
之前在Ubuntu上面搭建了STF, 最近公司需要将STF部署在Mac环境,本来以为和在Ubuntu上面一样使用Docker部署几行命令就可以轻松解决,结果发现Mac Docker环境不支持Android USB,即使环境起来了也不能识别插入的安卓手机,因为底层的xhyve不支持它。关于问题细节请参考这个issue
Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript 开发大型应用没有标准的缺陷,类似于 Java 中的类文件,Python 中的 import 机制,Node.js 中可以通过 module.exports、require 来导出和引入一个模块.
开源GitHub地址:https://github.com/sitespeedio/sitespeed.io
Node.js 在安装模块的时候一直报错,提示安装node-gyp时报python不可用的情况
Cannot download "https://github.com/sass/node-sass/releases/download/v4.5.3/win32-x64-51_binding.node":
简单来说,我们可以说Native扩展是一组从JavaScript代码调用C++实现的逻辑。在这一点上,对我们来说,最有趣的是将NodeJS是如何工作的以及它涉及那些部分讲清楚。 重要的是要知道为什么我们可以在NodeJS中使用两种语言(JavaScript和C ++)。
领取专属 10元无门槛券
手把手带您无忧上云