字数统计 Cordova 与 OpenHarmony 混合开发实战

📌 模块概述

字数统计功能统计笔记的字数,并显示字数排行榜。用户可以看到哪些笔记字数最多,了解自己的写作量。

🔗 完整流程

第一步:计算字数

计算每个笔记的字数。

第二步:排序

按字数从多到少排序。

第三步:显示排行

显示字数排行榜。

🔧 Web代码实现

javascript 复制代码
async renderWordCount() {
  const allNotes = await noteDB.getAllNotes();
  const sortedNotes = allNotes.sort((a, b) => (b.wordCount || 0) - (a.wordCount || 0));

  return `
    <div class="page active">
      <div class="page-header">
        <h1 class="page-title">📊 字数统计</h1>
      </div>
      <div class="word-count-list">
        ${sortedNotes.map((note, index) => `
          <div class="word-count-item">
            <span class="rank">#${index + 1}</span>
            <span class="title">${Utils.escapeHtml(note.title)}</span>
            <span class="count">${note.wordCount || 0} 字</span>
          </div>
        `).join('')}
      </div>
    </div>
  `;
}

🔌 OpenHarmony 原生代码

typescript 复制代码
// WordCountPlugin.ets - 字数统计插件
import { webview } from '@kit.ArkWeb';
import { common } from '@kit.AbilityKit';
import { fileIo } from '@kit.CoreFileKit';

@NativeComponent
export class WordCountPlugin {
  private context: common.UIAbilityContext;

  constructor(context: common.UIAbilityContext) {
    this.context = context;
  }

  // 初始化插件
  public init(webviewController: webview.WebviewController): void {
    webviewController.registerJavaScriptProxy(
      new WordCountJSProxy(this),
      'wordCountPlugin',
      ['getWordCountRanking']
    );
  }

  // 获取字数排行
  public getWordCountRanking(): Promise<Array<any>> {
    return new Promise((resolve) => {
      try {
        const notesPath = this.context.cacheDir + '/notes.json';
        const content = fileIo.readTextSync(notesPath);
        const notes = JSON.parse(content);
        
        const ranking = notes.sort((a: any, b: any) => (b.wordCount || 0) - (a.wordCount || 0));
        resolve(ranking);
      } catch (error) {
        console.error('Failed to get word count ranking:', error);
        resolve([]);
      }
    });
  }
}

// WordCountJSProxy.ets - JavaScript代理类
class WordCountJSProxy {
  private plugin: WordCountPlugin;

  constructor(plugin: WordCountPlugin) {
    this.plugin = plugin;
  }

  getWordCountRanking(): void {
    this.plugin.getWordCountRanking().then(ranking => {
      console.log('Word count ranking:', ranking.length);
    });
  }
}

📝 总结

字数统计功能展示了如何在Cordova与OpenHarmony混合开发中实现简单的数据排序和展示。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

相关推荐
UR的出不克1 小时前
使用 Python 爬取 Bilibili 弹幕数据并导出 Excel
java·python·excel
Arms2061 小时前
python时区库学习
开发语言·python·学习
与光同尘 大道至简1 小时前
ESP32 小智 AI 机器人入门教程从原理到实现(自己云端部署)
人工智能·python·单片机·机器人·github·人机交互·visual studio
清水白石0081 小时前
深入 Python 对象模型:PyObject 与 PyVarObject 全解析
开发语言·python
tjjucheng1 小时前
小程序定制开发服务商推荐
python
囊中之锥.1 小时前
《从零到实战:基于 PyTorch 的手写数字识别完整流程解析》
人工智能·pytorch·python
子云之风2 小时前
LSPosed 项目编译问题解决方案
java·开发语言·python·学习·android studio
小北方城市网2 小时前
SpringBoot 全局异常处理与接口规范实战:打造健壮可维护接口
java·spring boot·redis·后端·python·spring·缓存
SunnyRivers2 小时前
打包 Python 项目
python·打包
万行2 小时前
机器人系统SLAM讲解
开发语言·python·决策树·机器学习·机器人