当前位置: 首页 > news >正文

济南网站建设找凌峰seo臻系统

济南网站建设找凌峰,seo臻系统,番禺做网站哪家好,宝塔面板 wordpress制作网页Electron调用nodejs的cpp .node扩展【非安全】 环境: electron: 30.1.1 nodejs: 20.14.0前言 Electron中可以非常容易的调用nodejs的js代码,但是对于cpp .node扩展需要一定的配置才能调用,下面介绍一种最简单的cpp扩展的调用方法&#xff…

Electron调用nodejs的cpp .node扩展【非安全】

环境:

electron: 30.1.1
nodejs: 20.14.0

前言

Electron中可以非常容易的调用nodejs的js代码,但是对于cpp .node扩展需要一定的配置才能调用,下面介绍一种最简单的cpp扩展的调用方法,该方法的优点是调用简单,缺点是会降低应用程序的安全性,生产环境中需谨慎使用。

代码

$ tree
.
+--- build
|   +--- Release
|   |   +--- addon.node
+--- addon.cpp
+--- binding.gyp
+--- CMakeLists.txt
+--- index.html
+--- index.js
+--- package.json

index.html

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>Hello Electron</title><meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline';">
</head><body><p id="version"></p><p id="napi"></p><script>let info = `electron: ${process.versions.electron}, nodejs: ${process.versions.node}, chrome: ${process.versions.chrome}, v8: ${process.versions.v8}`;document.getElementById("version").innerHTML = info;console.log(info);const addon = require('./build/Release/addon.node');info = addon.hello();document.getElementById("napi").innerHTML = info;console.log(info);</script>
</body></html>

index.js

const { app, BrowserWindow } = require('electron/main');
// app.commandLine.appendSwitch('remote-debugging-port', '9222');const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,contextIsolation: false}})win.loadFile('index.html');
}app.whenReady().then(() => {createWindow();
})

addon.cpp

#include <node_api.h>static napi_value helloMethod(napi_env env, napi_callback_info info)
{napi_value result;napi_create_string_utf8(env, "hello world from napi", NAPI_AUTO_LENGTH, &result);return result;
}static napi_value Init(napi_env env, napi_value exports)
{napi_property_descriptor desc = {"hello", 0, helloMethod, 0, 0, 0, napi_default, 0};napi_define_properties(env, exports, 1, &desc);return exports;
}NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)

binding.gyp

{"targets": [{"target_name": "addon","sources": [ "addon.cpp" ]}]
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)project(addon)message(STATUS "operation system is ${CMAKE_SYSTEM}")add_definitions(-std=c++11)include_directories(${CMAKE_JS_INC})
include_directories(.)file(GLOB SOURCE_FILES addon.cpp)add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})

package.json

{"name": "my-electron-app","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "electron ."}
}

编译

node-gyp configure build

结果

electron: 30.1.1, nodejs: 20.14.0, chrome: 124.0.6367.243, v8: 12.4.254.20-electron.0hello world from napi

禁用 contextIsolation 和启用 nodeIntegration,会降低应用的安全性。务必谨慎使用,并确保你信任加载的所有代码和资源。

http://www.sczhlp.com/news/16791/

相关文章:

  • py做网站优化网址
  • 提供深圳网站制作公司株洲seo优化公司
  • 哈尔滨网站建设咨询如何搭建公司网站
  • 蓬莱有做网站的吗品牌运营管理有限公司
  • 怎么在网上推销产品成都seo培
  • wordpress 浮动插件怎样优化关键词到首页
  • 有没有做宠物的网站网站关键词排名分析
  • 宁波企业网站排名优化爱站工具查询
  • 手机网站主页设计推广网站要注意什么
  • 怎样用linux做网站不要手贱搜这15个关键词
  • 西安哪里找做网站公司线上推广软件
  • wordpress全自动发布网址seo查询
  • 网站做优化有效吗佛山百度快速排名优化
  • 界面官方网站qq群推广拉人
  • 网站定制要求网页设计模板素材图片
  • 传统网站建设 成本宁波seo关键词费用
  • 网站被k 原因中国职业技能培训中心官网
  • 电商平台网站建设网推项目
  • 客服服务帮助中心慧达seo免登录发布
  • 什么样式表一般用于大型网站百度地图下载2022新版安装
  • 做网站排名要懂那些浙江网站建设营销
  • 临沂网站建设培训班牡丹江seo
  • 南宁网站建设超薄网络百度首页推广
  • 莱芜专业做网站的今日头条新闻手机版
  • 做网站教程下载谁有推荐的网址
  • 网站建设表格做国外网站
  • 网页制作与网站开发用的软件百度学术查重
  • 上街做网站千锋教育培训多少钱
  • java做的k线图网站源码下载热搜词排行榜关键词
  • 设计公司装修效果图登封网站关键词优化软件