0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【堅(jiān)果派】JS開源庫(kù)適配OpenHarmony系列——第一期實(shí)操

ITMING ? 來(lái)源:ITMING ? 作者:ITMING ? 2023-12-26 10:48 ? 次閱讀

1. 為什么適配JS開源庫(kù)

由于OpenHarmony應(yīng)用是基于ArkTS開發(fā),而ArkTS是在保持TypeScript(簡(jiǎn)稱TS)基礎(chǔ)語(yǔ)法風(fēng)格的基礎(chǔ)上,對(duì)TS的動(dòng)態(tài)類型特性施加更嚴(yán)格的約束,引入靜態(tài)類型。因此在開發(fā)OpenHarmony三方庫(kù)時(shí),建議首選在成熟的JS/TS開源三方庫(kù)上開發(fā)。

2. 選擇哪個(gè)JS開源庫(kù)合適

JS/TS開源三方庫(kù)的選擇需遵循易用性、實(shí)用性、維護(hù)性、擴(kuò)展性等特性,通常方法是在github/npm上按照特性和語(yǔ)言搜索,找到star、fork數(shù)量較高的,且開源協(xié)議友好的JS/TS開源三方庫(kù)進(jìn)行適配。

3. 如何進(jìn)行JS開源庫(kù)適配

由于OpenHarmony開發(fā)框架中的API不完全兼容V8運(yùn)行時(shí)的Build-In API,因此建議在適配JS三方庫(kù)前,使用[js-e2e]掃描三方庫(kù),檢查是否存在node.js/web內(nèi)置模塊的依賴。

js-e2e工具時(shí)基于eslint進(jìn)行封裝,可分析出JS庫(kù)代碼對(duì)node.js/web瀏覽器的內(nèi)置模塊、對(duì)象的依賴及兼容ES標(biāo)準(zhǔn)版本,使用該工具,可以快速知道該庫(kù)是否依賴node.js/web內(nèi)置模塊。

如果掃描結(jié)果不依賴node.js/web內(nèi)置模塊,那么,這個(gè)庫(kù)將比較輕松地適配。如果大量依賴node.js/web內(nèi)置組件,這時(shí)可能需要fork源庫(kù)代碼,進(jìn)行侵入式修改,或者再找是否存在更適合的其他三方庫(kù)。

注:掃描時(shí)需同時(shí)掃描package.json文件中dependencies標(biāo)簽中直接依賴和間接依賴,因?yàn)榘l(fā)布OpenHarmony三方庫(kù)中心倉(cāng)時(shí),需要將依賴的組件都發(fā)布。建議使用npm insall下載所有依賴的代碼后,一起掃描查看結(jié)果。

3.1 luxon開源庫(kù)信息

在npm中心倉(cāng)庫(kù)查看用于處理日期和時(shí)間的目標(biāo)庫(kù)luxon信息,包括開源倉(cāng)庫(kù)地址,主頁(yè)地址,版本,協(xié)議,文件大小,總文件數(shù),最后發(fā)布時(shí)間等。

image.png

在OpenHarmony中心倉(cāng)搜索是否存在luxon目標(biāo)庫(kù)。

image.png

在luxon源代碼倉(cāng)庫(kù)查看star和fork數(shù)量,查看是否被經(jīng)常使用和經(jīng)常被維護(hù)。

luxon倉(cāng)庫(kù):https://github.com/moment/luxon

image.png

3.2 JS三方庫(kù)掃描工具介紹

js-e2e是基于eslint進(jìn)行封裝、配置規(guī)則,用于分析JS庫(kù)代碼對(duì)NodeJS和Web瀏覽器的內(nèi)置模塊、對(duì)象的依賴及兼容ES標(biāo)準(zhǔn)版本的工具,支持檢查指定源碼目錄和指定三方庫(kù)的兼容性。

3.2.1 使用git工具同步j(luò)s-e2e代碼

image.png

3.2.2 安裝npm依賴包

image.png

3.2.3 安裝自定義的eslint輸出報(bào)告formatter,包含csv、csvsimple、vscode、vscodesimple

image.png

3.2.4 執(zhí)行檢查命令

image.png

3.3 適配luxon三方庫(kù)

  1. 使用DevEco Studio開發(fā)者工具,創(chuàng)建OpenHarmony應(yīng)用工程。

image.png

  1. 在工程中新建Module,選擇“Static Library”模板。

image.png

  1. 移除library模塊src/main/ets目錄中的components目錄,刪除Index.ets文件中的代碼。
  2. 直接復(fù)制js-e2e工具檢查時(shí)下載的luxon包(temp/node_modules/luxon),并將src目錄中的文件復(fù)制到library模塊的src/main/ets/lib目錄下。

image.png

5)修改Index.ets文件為其他開發(fā)者提供調(diào)用接口。

image.png

  1. 在oh-package.json5中完善三方庫(kù)信息,如名稱、簡(jiǎn)介、版本、開源協(xié)議、作者、關(guān)鍵字等。

image.png

  1. 在工程目錄中選中三方庫(kù)名稱,單擊菜單欄中的Build > Make Module ‘library’編譯構(gòu)建生成三方庫(kù)HAR包,HAR包可在模塊下的build目錄下獲取,包格式為*.har。

image.png

3.4 驗(yàn)證luxon三方庫(kù)

  1. 打開entry/oh-package.json5配置文件,在dependencies標(biāo)簽中引入luxon三方庫(kù),并單擊Sync Now進(jìn)行同步。

image.png

  1. 打開pages/Index.ets頁(yè)面文件,引入luxon三方庫(kù)并顯示當(dāng)前日期。

image.png

至此,簡(jiǎn)單的JS開源三方庫(kù)適配OpenHarmony已經(jīng)完成了,下節(jié)我們將推出如何將講解如何進(jìn)行XTS測(cè)試,OpenHarmony三方庫(kù)發(fā)布標(biāo)準(zhǔn),適配的三方庫(kù)發(fā)布到OpenHarmony三方庫(kù)中心倉(cāng)以及如何貢獻(xiàn)到OpenHarmony-TPC。
審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3396

    瀏覽量

    42638
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    473

    瀏覽量

    16529
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3744

    瀏覽量

    16476
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    塔革特官方教學(xué)第一期:元器件及其庫(kù)相關(guān)操作。

    共同探索PCB設(shè)計(jì)之旅,深入了解TARGET3001!電子設(shè)計(jì)軟件,體驗(yàn)高性價(jià)比的魅力。歡迎各位電子工程師參與塔革特官方教學(xué)直播第一期:元器件及其庫(kù)相關(guān)操作。
    發(fā)表于 11-08 11:32

    FRDM-KL25Z開發(fā)第一期(平臺(tái)介紹、環(huán)境搭建、第一個(gè)工程)

    ``附件里是FRDM-KL25Z開發(fā)第一期(平臺(tái)介紹、環(huán)境搭建、第一個(gè)工程)的資料。其中第一部分和第二部分PPT里有介紹。第三部分工程建立請(qǐng)看以下圖片資料:``
    發(fā)表于 01-30 18:12

    福利:《BLDC驅(qū)動(dòng)板如何合理布局第一期》直播

    BLDC驅(qū)動(dòng)板如何合理布局(第一期)[ckplayer]http://media.elecfans.com/topic/gongkaike/2019/06/0e17e22964159596f26537bfa6b03736/30/hls/index.m3u8[/ckplayer]第二
    發(fā)表于 07-02 18:21

    請(qǐng)問(wèn)第一期視頻需要掌握什么程度?

    第一期視頻剛看到NAND FLASH控制器,感覺(jué)里面好多代碼都好難懂,看第一期視頻需要掌握到什么程度?能看懂就好嘛?老師也就是對(duì)照著代碼在講,不需要會(huì)寫吧?
    發(fā)表于 07-23 05:45

    請(qǐng)問(wèn)你們第一期視頻都是怎么學(xué)的?

    想問(wèn)各位學(xué)完第一期或正在學(xué)習(xí)第一期的大佬: 你們第一期視頻都是怎么學(xué)的呢?里面的代碼都是自己碼遍么?碼的話按什么思路比較好,按韋老師上課講的思路憑記憶寫么 ?感覺(jué)里面有些課時(shí)的代碼還
    發(fā)表于 09-24 05:45

    【視頻教程】單片機(jī)新手教程(第一期)單片機(jī)介紹

    大家下午好!今天邀請(qǐng)了張角老師,來(lái)為大家深入講解單片機(jī),視頻為個(gè)系列,本次為第一期內(nèi)容,請(qǐng)持續(xù)關(guān)注,我會(huì)進(jìn)行更新!
    發(fā)表于 03-26 15:45

    硬件免費(fèi)教程(第一期)積分運(yùn)算電路公式推導(dǎo)方法

    大家上午好!今天給大家?guī)?lái)郭嘉老師的硬件教程,本次視頻為第一期,本次視頻教程全部免費(fèi)公開。我們會(huì)持續(xù)進(jìn)行更新,有問(wèn)題可以留言同交流討論。
    發(fā)表于 04-01 10:32

    硬件實(shí)戰(zhàn)教程(第一期)常用運(yùn)放電路原理圖講解

    大家中午好!這是我們硬件實(shí)戰(zhàn)教程的第一期內(nèi)容,由魯肅老師為大家?guī)?lái)個(gè)實(shí)例項(xiàng)目的講解。大家關(guān)于原理圖設(shè)計(jì)的問(wèn)題都可以提出來(lái),有任何疑問(wèn)也在評(píng)論區(qū)留言,歡迎各位壇友起與我們切磋交流!
    發(fā)表于 04-01 13:33

    RT-Thread 每日練打卡學(xué)習(xí)第一期完結(jié),第二敬請(qǐng)期待

    RT-Thread 打卡學(xué)習(xí)第一期?完結(jié)撒花?,對(duì)于第一期大家有什么看法、有什么好的建議都可以在評(píng)論區(qū)說(shuō)出來(lái),以促使我們變得更好。在這里也想大家對(duì)于第二都期待什么樣的課程,也可以在評(píng)論區(qū)說(shuō)出來(lái)哦!凡是在本帖評(píng)論回復(fù)的都可領(lǐng)5個(gè)
    發(fā)表于 06-10 15:20

    電子報(bào)2011年第一期

    電子發(fā)燒友網(wǎng)向大家提供了電子報(bào)2011年的第一期報(bào)刊,希望對(duì)大家學(xué)習(xí)有用,感謝大家對(duì)電子發(fā)燒友網(wǎng)的支持 本內(nèi)容絕對(duì)完整
    發(fā)表于 03-14 18:17 ?0次下載
    電子報(bào)2011年<b class='flag-5'>第一期</b>

    動(dòng)手玩轉(zhuǎn)Arduino(第一期)

    動(dòng)手玩轉(zhuǎn)Arduino(第一期),有需要的下來(lái)看看
    發(fā)表于 07-08 14:23 ?8次下載

    網(wǎng)課回放 I RK3588 實(shí)例課程第一期:項(xiàng)目總結(jié)和技術(shù)答疑

    網(wǎng)課回放 I RK3588 實(shí)例課程第一期:項(xiàng)目總結(jié)和技術(shù)答疑
    的頭像 發(fā)表于 07-31 17:10 ?1243次閱讀
    網(wǎng)課回放 I RK3588 實(shí)例課程<b class='flag-5'>第一期</b>:項(xiàng)目總結(jié)和技術(shù)答疑

    OpenHarmony競(jìng)賽訓(xùn)練營(yíng)(第一期)決賽入圍名單公示

    自 2 023 年 9月1 5 日啟動(dòng)以來(lái), OpenHarmony競(jìng)賽訓(xùn)練營(yíng)(第一期)獲得全國(guó)高校的廣泛關(guān)注,和各高校學(xué)生的積極參與。OpenHarmony競(jìng)賽訓(xùn)練營(yíng)旨在引導(dǎo)高校學(xué)生進(jìn)行
    的頭像 發(fā)表于 10-30 09:06 ?708次閱讀
    <b class='flag-5'>OpenHarmony</b>競(jìng)賽訓(xùn)練營(yíng)(<b class='flag-5'>第一期</b>)決賽入圍名單公示

    集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案-本科院校第一期建設(shè)

    北京革新創(chuàng)展科技有限公司提供的集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案,主要用于本科院校第一期建設(shè)。如需詳細(xì)方案資料,請(qǐng)隨時(shí)聯(lián)系我們。
    的頭像 發(fā)表于 01-03 10:29 ?1093次閱讀
    集成電路學(xué)習(xí)與<b class='flag-5'>實(shí)</b>訓(xùn)平臺(tái)配置方案-本科院校<b class='flag-5'>第一期</b>建設(shè)

    集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案-高職院校第一期建設(shè)

    北京革新創(chuàng)展能科技有限公司提供的集成電路學(xué)習(xí)與實(shí)訓(xùn)平臺(tái)配置方案,主要用于高職院校第一期建設(shè)需求,如需詳細(xì)方案,請(qǐng)隨時(shí)聯(lián)系我們。
    的頭像 發(fā)表于 01-03 10:42 ?893次閱讀
    集成電路學(xué)習(xí)與<b class='flag-5'>實(shí)</b>訓(xùn)平臺(tái)配置方案-高職院校<b class='flag-5'>第一期</b>建設(shè)