96SEO 2026-06-12 21:35 1
该文章主要用于后续node-api 调用时进行功Neng查找使用;文章中可Neng存在部分问题,也希望各位大佬指正;
个人理解:Node-api 同 Android JNI一样主要用于应用层代码同 C++/C 代码进行交互的桥梁;主要用于将应用侧的数据转换为 c++/c Neng理解的数据;或者将 c++/c数据通过 JNI转换为应用侧Neng理解的数据;

说实话,鸿蒙 NDK 相关文档挺难找的,害!
基础用法napi_status napi_get_cb_info;
参数含义
envnapi_env当前 NAPI 执行环境上下文,所有 NAPI 方法dou需要传递此参数
cbinfonapi_callback_info回调信息对象,由 Node-API 在调用原生函数时自动传入
argcsize_t*输入时表示期望接收的Zui大参数数量 输出时表示实际传入的参数数量 可传 nullptr 忽略
argvnapi_value*存储参数的数组,需预先分配足够内存 可传 nullptr 忽略
thisArgnapi_value*接收函数调用时的 this 对象 可传 nullptrcode> 忽略
datavoid**接收通过 napi_create_function 绑定的自定义数据 可传 nullptrcode>
napi_get_cb_info 你懂的,主要就是用来获取TS传递过来的参数,以及一些其他的信息;咱就是说一般情况下前4个值我们dou会设置,后面两个就直接nullptr 了;你懂的!比如说你想知道参数的个数,但是又不知道有多少个,这时候就Ke以设置期望值是0,然后再执行完api 后argc 就会得到真实的参数个数;注意:这个时候不用设置对应的 argv,直接传递 nullptr即可;因为当前还不知道固定参数的大小;目的:在 TS 调用传递参数到 native 层的时候;用于对参数个数,以及参数进行接收;用于后面的使用Zuo准备;一般用于第一步执行逻辑;说实话,这是个hen重要的步骤!返回值嘛,就是napi_status ,用于判断结果是否正确;判断逻辑如下:
if // argc 是对应的参数个数;设置了一个参数判断几个 { return "";//根据条件进行返回 }
napi_get_cb_info 简单使用场景举例:
获取this对象;
动态获取方法传递的参数;
. 动态的获取参数数据:
#include "napi/native_api.h"static napi_value DynamicTypeDemo { // . 先获取参数数量 size_t argc = ; napi_get_cb_info; if { return nullptr; } // . 动态分配数组并获取参数 napi_value* args = new napi_value; napi_get_cb_info; // . 遍历每个参数,动态判断类型 for { napi_valuetype type; napi_typeof; switch { case napi_undefined: // 处理 undefined 类型 break; case napi_null: // 处理 null 类型 break; case napi_boolean: // 处理 boolean 类型 bool boolValue; napi_get_value_bool; break; case napi_number: // 处理 number 类型 double numValue; napi_get_value_double; break; case napi_string: // 处理 string 类型 size_t strLen; napi_get_value_string_utf8; // ... 获取字符串内容 break; case napi_object: // 处理 object 类型 // 可进一步判断是否为数组 bool isArray; napi_is_array; break; case napi_function: // 处理 function 类型 break; default: break; } } delete args;//释放内存哈,不释放就泄漏了你懂的! return nullptr;//这里返回null,根据实际需要返回对应值 }
. 获取 this 对象模式:
同时要注意传入的参数和设置的size大小匹配,否则会越界!害!
napi_status 用于判断结果是否正确,你要是不判断也没关系,反正报错了你也知道,哈哈!
napi_get_value_string_utf8 参数详解
napi_status napi_get_value_string_utf8;// 输出:实际写入 buf 的字节数Ru果buf 传null的话,那result 就是字符串的长度,bufsize 传0就行,哈哈!
. 获取字符串内容 // 传入有效的缓冲区char* buf = new char; // +1 用于存储 null 终止符,别忘了释放内存哦~napigetvaluestringutf8(env,
napicreatestringutf8 参数详解 // 创建 JavaScript 字符串napistatus status = napicreatestringutf8;
// 使用示例
const char* cStr = "Hello";
napicreatestringutf8;//NAPIAUTOLENGTH 表示自动计算长度
// 或者手动指定长度
napicreatestringutf8;
关键点:
str 是源 C 字符串,必须是有效的 UTF-8 编码。
length 参数表示 str 的字节长度,而不是字符数。
Ru果 length == NAPIAUTO_LENGTH,会自动计算 strlen。
创建后的 JavaScript 字符串是 str 的拷贝,原字符串可立即释放。
返回值是操作状态,成功为
Zui近老有人问我,为什么百度不收录我的网站?
回答:
检查你的网站是否符合百度的收录规则,比如是否有robots.txt限制爬虫抓取,你Ke以参考百度的站长工具说明。
确保你的网站内容是原创且有价值的,百度geng倾向于收录高质量的内容。
再者,你Ke以尝试提交你的网站到百度的站长平台,通过sitemap等方式让百度geng快发现你的网站。
Zui后保持耐心和持续geng新,因为收录需要时间。
Ru果还有疑问,Ke以kankan百度的官方文档或者咨询专业的SEO人员。
继续回来讲我们的node-api;
NAPI常用方法与对比分析 // 通过对比不同NAPI接口的使用场景、功Neng特点,帮助开发者快速选择合适接口,提升开发效率
数值类型转换接口
接口
C++类型
JS类型
主要用途
napi_create_double
double
number
创建JS数值
napi_get_value_double
double
number
从JS数值获取双精度浮点值
napi_create_int32/uint32/int64|各种整数类型
number|创建不同精度的整数数值
注意事项
- JavaScript的number本质是IEEE
来说NAPI为开发者提供了丰富的接口来处理各种数据类型和对象操作,通过合理选择和使用这些接口,Ke以有效实现JS/TS与C++之间的高效交互,在开发高性NengArkTS应用时发挥重要作用。
希望这篇文章对你有帮助哈~以后遇到问题别忘了回来kankan,说不定就有答案了呢~
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback