概述

本课主要讲解如何用 C++ 开发 Node.js 和 Electron 本地模块,其中涉及到 3 种技术:Node.js、Electron 和 C++ 语言。Electron 是基于 Node.js 的,允许用 Web 技术(HTML5、JavaScript 和 CSS3)开发桌面应用,也就是说,Node.js 将 JavaScript 从前端转移到了后端,而 Electron 又让 JavaScript 从后端以另一个角度转回的前端(也就是桌面应用)。尽管 Electron 是基于 Node.js 的,但由于与 Node.js 使用了不同的 V8 引擎,因而为 Node.js 开发的本地模块并不能直接用于 Electron,需要重新在 Electron 环境进行编译才可以。

Node.js 的模块机制

在讲解如何用 C++ 开发 Node.js 本地模块之前,应该先了解一下 Node.js 中的模块机制,这样更有助于掌握开发 Node.js 本地模块。

CommonJS 的模块规范

我们知道 Node. js 的根基就是 JavaScript 或者说是 ECMAScript,而 JavaScript 自身是不带模块机制的,因此 CommonJS 规范应运而生。

那么 CommonJS 是如何完成模块的引用和暴露模块成员的呢?

  • 引用模块:require

require 是一个函数,该函数有一个参数代表模块标识,它的返回值就是其所引用的外部模块所暴露的 API。

讲得直白一点,就是能通过代码 const value = require("workman") 的形式引入 workman 这个模块并将返回值赋给 v

第27课:Node.js 模块详解相关推荐

  1. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  2. Node.js 入门详解 (三)

    目录 1. 初识Express 1.1 Express简介 1.1.1 什么是Express 1.1.2 进一步理解 Express 1.1.3 Express能做什么 1.1.4 Express 中 ...

  3. Node.js 入门详解(一)

    目录 前言 1. 初识 Node.js 1.1 回顾与思考 1.2 Node.js 简介 1.2.1 什么是Node.js 1.2.2 Node.js 中的 JavaScript 运行环境 1.2.3 ...

  4. Node.js 入门详解(四)

    数据库与身份认证 1. 数据库的基本概念 1.1 什么是数据库 1.2 常见的数据库及分类 1.3 传统型数据库的数据组织结构 1.3.1 Excel的数据组织结构 1.3.2 传统型数据库的数据组织 ...

  5. node.js Promise详解(尚硅谷李立超老师视频笔记)

    • Promise就是一个用来存储数据对象,但是由于Promise存取的方式的特殊,所以可以直接将异步调用的结果存储到Promise中 Promise存储异步数据: function sum(a,b) ...

  6. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  7. Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM

    本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...

  8. 【ES6】Module模块详解

    [ES6]Module模块详解 一.Module的由来 二.严格模式 三.export命令 四.import命令 查看更多ES6教学文章: 参考文献 引言:由于两个JS文件之间相互使用必须通过一个ht ...

  9. Node.js 模块之Nimble流程控制

    NodeJS异步的特性有时候会导致程序非常的难看,回调一层套着一层,这个时候就要用流程控制模块来控制究竟是同步还是异步了. Nimble是一个轻量.可移植的函数式流程控制模块.经过最小化和压缩后只有8 ...

最新文章

  1. PASCAL VOC工具包解读
  2. 在ECSHOP分类列表页中调用商品货号
  3. C语言-运算符优先级及注意事项
  4. 单IP无TMG拓扑Lync Server 2013:前端服务器
  5. php中数据类型、数组排序、循环语句、混编、操作本地文件流程、常用API、函数、魔术常量
  6. php,js端获取sessionid的方法
  7. Winfrom 线程实现 http、https 文件下载 显示下载进度详情
  8. 哈尔滨工程大学第十四届程序设计竞赛(同步赛)
  9. winsock2.h与ws2def.h等文件大量报错相关问题解决方法
  10. Windows 硬盘分区整数大小计算
  11. linux环境 下载Neo4j
  12. 杰理AC692X---691X,690X,692X芯片差异(2)
  13. Au入门系列之五:轨道与轨道控制​
  14. R 回归 虚拟变量na_R语言实战之R语言基础语法精讲(三)
  15. Shadow Defender影子卫士
  16. [JZOJ5987] 仙人掌毒题
  17. Commonsense and Named Entity Aware Knowledge Grounded Dialogue Generation
  18. java实现缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
  19. INT303 Big Data 个人笔记
  20. 交互设计软件Framer X for mac软件测评

热门文章

  1. 『迷你教程』LSTM网络下如何正确使用时间分布层
  2. Spring 上传文件(apk格式)
  3. oracle 11g 忘记 默认用户密码
  4. win11装成win10系统
  5. 高等数学与python高级应用_高等数学——基于Python的实现
  6. 还在愁不懂设计模式吗?看过来
  7. SAP EPIC 银企直连 回单查询(建设银行)
  8. 【近万字干货】别让你的简历配不上你的才华——手把手教你制作最适合你的简历
  9. The variance for this alert is **MB which is 20% of the **MB average (**MB is the limit)
  10. C++ 之 nlohmann::json 一个不错的json库