电脑怎么做服务器 网站,网站下载怎么做,wordpress html插件安装,全国通网站建设1. 概述
1.1 简介
鸿蒙#xff08;即 HarmonyOS #xff0c;开发代号 Ark#xff0c;正式名称为华为终端鸿蒙智能设备操作系统软件#xff09;是华为公司自 2012 年以来开发的一款可支持鸿蒙原生应用和兼容 AOSP 应用的分布式操作系统。该系统利用“分布式”技术将手机、…1. 概述1.1 简介鸿蒙即HarmonyOS开发代号Ark正式名称为华为终端鸿蒙智能设备操作系统软件是华为公司自 2012 年以来开发的一款可支持鸿蒙原生应用和兼容 AOSP 应用的分布式操作系统。该系统利用“分布式”技术将手机、电脑、平板、电视、汽车和智能穿戴等多款设备融合成一个“超级终端”使用户便于操作和共享各种设备的资源。1.2 本文读者收获帮助开发者全面了解 HarmonyOS 系统引导开发者从 0 到 1 上手 HarmonyOS 应用开发1.3 鸿蒙开发基础1.3.1 鸿蒙应用开发框架概述鸿蒙应用开发框架是鸿蒙系统提供的一套开发工具和框架用于帮助开发者快速构建鸿蒙应用。它提供了一系列的 API 和组件使开发者可以方便地进行应用的开发、测试和发布。鸿蒙应用开发框架支持多种开发语言包括 Java、C、JavaScript、ArkTS 等开发者可以根据自己的需求选择合适的开发语言进行开发。1.3.2 鸿蒙应用开发框架的主要特点跨平台开发鸿蒙应用开发框架支持多种平台包括手机、平板、电视、汽车等开发者可以使用同一套代码开发适配不同平台的应用大大提高了开发效率。模块化开发鸿蒙应用开发框架采用模块化的设计开发者可以根据需要选择所需的功能模块进行开发避免了不必要的代码冗余提高了代码的可维护性和可重用性。灵活的布局和界面设计鸿蒙应用开发框架提供了丰富的布局和界面设计工具开发者可以灵活地设计应用的界面实现丰富多样的交互效果提升用户体验。强大的性能优化和调试工具鸿蒙应用开发框架提供了一系列的性能优化和调试工具开发者可以通过这些工具对应用进行性能优化和调试提高应用的运行效率和稳定性。1.3.3 语言和开发范式概念当我们首次创建鸿蒙程序时会面临模型的选择如下图HarmonyOS中的两种开发范式名称语言生态UI 更新方式适用场景适用人群声明式开发范式ArkTS数据驱动更新复杂度较大、团队合作度较高的程序移动系统应用开发人员、系统应用开发人员类 Web 开发范式JS数据驱动更新界面较为简单的程序应用和卡片Web 前端开发人员语言选择ArkTS只支持Stage 模型JS支持Stage 模型 和 FA 模型模型概念HarmonyOS的两种模型是历史的产物可以理解为设计模式。FAFeature Ability模型HarmonyOS API 7 开始支持的模型已经不再主推。FA 模型开发可见 FA 模型开发概述。Stage 模型HarmonyOS API 9 开始新增的模型是目前主推且会长期演进的模型。在该模型中由于提供了 AbilityStage、WindowStage 等类作为应用组件和 Window 窗口的“舞台”因此称这种应用模型为 Stage 模型。Stage 模型开发可见Stage 模型开发概述。Stage 模型架构如下图Stage模型概念图目前官方主推 Stage 模型针对 Stage 模型衍生出的声明式开发更优的开发框架ArkTS 优于 JS我们认为以上选型是目前SDK 3.1.0 API 9最优解/最佳实践即Stage 模型ArkTS声明式。2. 鸿蒙应用开发环境搭建2.1 安装鸿蒙 DevEco Studio步骤 1下载 DevEco Studio SDK https://developer.harmonyos.com/cn/develop/deveco-studio#download2.2 配置开发环境2.2.1 可选配置 Proxy步骤 2网络不能直接访问 Internet可通过设置代理服务器进行访问。如果无需代理即可访问 Internet将跳过该步骤。2.2.2 安装 Node.js 和 ohpm步骤 3指定本地已安装的 Node.js/ohpm或在线下载安装 Node.js 与 ohpm。可以指定本地已安装的 Node.js 或 ohpmNode.js 版本要求为 v14.19.1 及以上且低于 v17.0.0对应的 npm 版本要求为 6.14.16 及以上路径位置如果本地没有合适的版本可以选择 Install 按钮选择下载源和存储路径后进行在线下载单击 Next 进入下一步。2.2.3 下载 HarmonyOS SDK2.2.4 创建鸿蒙应用2.2.5 运行项目单击 DevEco Studio 工具栏中的按钮 ▶️ 运行工程或使用默认快捷键ShiftF10 macOS 为ControlR)运行工程。3. 开发指南3.1 项目与配置3.1.1 项目结构项目结构3.1.2 配置文件含义AppScope app.json5应用的全局配置信息。entryHarmonyOS 工程模块编译构建生成一个 HAP 包。src main ets用于存放 ArkTS 源码。src main ets entryability应用/服务的入口。src main ets pages应用/服务包含的页面。src main resources用于存放应用/服务所用到的资源文件如图形、多媒体、字符串、布局文件等。关于资源文件详见资源分类与访问。src main module.json5Stage 模型模块配置文件。主要包含 HAP 包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明详见 module.json5 配置文件。build-profile.json5当前的模块信息、编译信息配置项包括 buildOption、targets 配置等。其中 targets 中可配置当前运行环境默认为 HarmonyOS。hvigorfile.ts模块级编译构建任务脚本开发者可以自定义相关任务和代码实现。oh_modules用于存放三方库依赖信息。关于原 npm 工程适配 ohpm 操作请参考历史工程迁移。build-profile.json5应用级配置信息包括签名、产品配置等。hvigorfile.ts应用级编译构建任务脚本。3.2 ArkUI 框架3.2.1 ArkUI 定义ArkTS 是 HarmonyOS 优选的主力应用开发语言在 TS 基础上发展而来。基于 ArkTS 的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的 UI 开发框架提供了构建 HarmonyOS 应用 UI 所必需的能力。ArkUI框架架构3.2.2 ArkTS 声明式 UI 的基本组成ArkTS的基本组成3.2.3ArkTS特点开发效率高开发体验好性能优越生态容易快速推进3.3 组件与布局汇总API 93.3.1 汇总3.3.2 XComponent 的使用ArkUI 框架提供了基于XComponent组件的 C 自绘制引擎接入比如游戏引擎能力和基于 Web 组件的 HTML5/Web 的渲染能力。满足了开发者在游戏、相机、地图、浏览器等复杂应用场景的开发诉求降低了这类应用移植的门槛。XComponent({id:,type:texture,librayname:nativerender}) .onload((context){ }) .onDestroy((){ })3.4 界面开发3.4.1 网络请求ohos.net.http(API6)system.fetch(API3)完整示例// 引入包名 import http from ohos.net.http; // 每一个httpRequest对应一个HTTP请求任务不可复用 let httpRequest http.createHttp(); // 用于订阅HTTP响应头此接口会比request请求先返回。可以根据业务需要订阅此消息 // 从API 8开始使用on(headersReceive, Callback)替代on(headerReceive, AsyncCallback)。8 httpRequest.on(headersReceive, (header) { console.info(header: JSON.stringify(header)); }); httpRequest.request( // 填写HTTP请求的URL地址可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定 EXAMPLE_URL, { method: http.RequestMethod.POST, // 可选默认为http.RequestMethod.GET // 开发者根据自身业务需要添加header字段 header: { Content-Type: application/json }, // 当使用POST请求时此字段用于传递内容 extraData: { data: data to send, }, expectDataType: http.HttpDataType.STRING, // 可选指定返回数据的类型 usingCache: true, // 可选默认为true priority: 1, // 可选默认为1 connectTimeout: 60000, // 可选默认为60000ms readTimeout: 60000, // 可选默认为60000ms usingProtocol: http.HttpProtocol.HTTP1_1, // 可选协议类型默认值由系统自动指定 }, (err, data) { if (!err) { // data.result为HTTP响应内容可根据业务需要进行解析 console.info(Result: JSON.stringify(data.result)); console.info(code: JSON.stringify(data.responseCode)); // data.header为HTTP响应头可根据业务需要进行解析 console.info(header: JSON.stringify(data.header)); console.info(cookies: JSON.stringify(data.cookies)); // 8 // 取消订阅HTTP响应头事件 httpRequest.off(headersReceive); // 当该请求使用完毕时调用destroy方法主动销毁 httpRequest.destroy(); } else { console.info(error: JSON.stringify(err)); // 取消订阅HTTP响应头事件 httpRequest.off(headersReceive); // 当该请求使用完毕时调用destroy方法主动销毁。 httpRequest.destroy(); } } );3.4.2 数据存储ohos.data.storage(轻量)ohos.data.rdb(关系型数据库)ohos.data.distributedData(分布式数据管理)数据存储分类概念图数据存储分类3.4.3 页面路由ohos.router(API8)system.router(API3)// index页面 export default { indexPushPage() { router.push({ uri: pages/detail/detail }); } }3.4.4 app 模块system.app(API3)3.5 权限管理3.5.1 应用权限管理HarmonyOS 中 所有的应用均在应用沙盒内运行。默认情况下应用只能访问有限的系统资源系统负责管理应用对资源的访问权限。应用权限管理是由接口提供方Ability、接口使用方应用、系统包括云侧和端侧以及用户等多方共同参与的整个流程保证受限接口是在约定好的规则下被正常使用避免接口被滥用而导致用户、应用和设备受损。3.5.2敏感权限涉及访问个人数据如照片、通讯录、日历、本机号码、短信等和操作敏感能力如相机、麦克风等的权限。3.5.3 权限申请过程//1.定义 { module: { reqPermissions: [ { name: ohos.permission.CAMERA, reason: $string:permreason_camera, usedScene: { ability: [com.mycamera.Ability, com.mycamera.AbilityBackground], when: always } },{ ... } ] } }name: 必须填写需要使用的权限名称。reason: 失败原因可选当申请的权限为 user_grant 权限时此字段必填。usedScene:可选当申请的权限为 user_grant 权限时此字段必填。描述权限使用的场景和时机。场景类型有ability、when调用时机。可配置多个 ability。3.5.4 动态申请//2. 动态申请 if (verifySelfPermission(ohos.permission.CAMERA) ! IBundleManager.PERMISSION_GRANTED) { // 应用未被授予权限 if (canRequestPermission(ohos.permission.CAMERA)) { // 是否可以申请弹框授权(首次申请或者用户未选择禁止且不再提示) requestPermissionsFromUser( new String[] { ohos.permission.CAMERA } , MY_PERMISSIONS_REQUEST_CAMERA); } else { // 显示应用需要权限的理由提示用户进入设置授权 } } else { // 权限已被授予 }3.5.5 权限使用原则权限申请最小化。跟用户提供的功能无关的权限不要申请尽量采用其他无需权限的操作来实现相应功能如通过 intent 拉起系统 UI 界面由用户交互、应用自己生成 uuid 代替设备 ID 等。权限申请完整。应用所需权限包括应用调用到的三方库依赖的权限都要逐个在应用的 config.json 中按格式声明。满足用户可知。应用申请的敏感权限的目的需要真实准确告知用户。权限就近申请。应用在用户触发相关业务功能时就近提示用户授予实现此功能所需的权限。权限不扩散。在用户未授权的情况下不允许提供给其他应用使用。应用自定义权限防止重名。建议以包名为前缀来命名权限防止跟系统定义的权限重名。3.6 状态管理3.6.1 状态管理双向交互双向3.6.2 State 使用Component struct MyComponent { State count: number 0; private increaseBy: number 1; build() { } } Component struct Parent { build() { Column() { // 从父组件初始化覆盖本地定义的默认值 MyComponent({ count: 1, increaseBy: 2 }) } } }3.6.3 Components 级别的状态管理StateState 装饰的变量拥有其所属组件的状态可以作为其子组件单向和双向同步的数据源。当其数值改变时会引起相关组件的渲染刷新。PropProp 装饰的变量可以和父组件建立单向同步关系Prop 装饰的变量是可变的但修改不会同步回父组件。LinkLink 装饰的变量和父组件构建双向同步关系的状态变量父组件会接受来自 Link 装饰的变量的修改的同步父组件的更新也会同步给 Link 装饰的变量。Provide/ConsumeProvide/Consume 装饰的变量用于跨组件层级多层组件同步状态变量可以不需要通过参数命名机制传递通过 alias别名或者属性名绑定。ObservedObserved 装饰 class需要观察多层嵌套场景的 class 需要被 Observed 装饰。单独使用 Observed 没有任何作用需要和 ObjectLink、Prop 连用。ObjectLinkObjectLink 装饰的变量接收 Observed 装饰的 class 的实例应用于观察多层嵌套场景和父组件的数据源构建双向同步。Components装饰器StorageLink/LocalStorageLink 实现应用和组件状态的双向同步通过StorageProp/LocalStorageProp 实现应用和组件状态的单向同步其他状态装饰器Watch 用于监听状态变量的变化3.7 线程通信HarmonyOS 应用中每个进程都会有一个主线程其中主线程作用如下执行 UI 绘制管理主线程的 ArkTS 引擎实例使多个 UIAbility 组件能够运行在其之上管理其他线程例如 Worker 线程的 ArkTS 引擎实例例如启动和终止其他线程分发交互事件处理应用代码的回调包括事件处理和生命周期管理接收 Worker 线程发送的消息主线程之外用户最多可以创建 8 个子线程子线程与主线程主线程与子线程通信使用EmitterEmitter订阅和发送发送事件import emitter from ohos.events.emitter; // 订阅eventId为1的事件 emitter.on({eventId: 1}, callback); // 发送eventId为1的事件事件内容为eventData emitter.emit(event, eventData);使用 Worker 进行通信// 1.在工程的模块级build-profile.json5文件的buildOption属性中添加配置信息 buildOption: { sourceOption: { workers: [ ./src/main/ets/workers/worker.ts ] } } // 2.根据build-profile.json5中的配置创建对应的worker.ts文件。 import worker from ohos.worker; let parent worker.workerPort; // 处理来自主线程的消息 parent.onmessage function(message) { console.info(onmessage: message) // 发送消息到主线程 parent.postMessage(message from worker thread.) } // 3.主线程中使用如下方式初始化和使用worker Stage模型 import worker from ohos.worker; let wk new worker.ThreadWorker(entry/ets/workers/worker.ts); // 发送消息到worker线程 wk.postMessage(message from main thread.) // 处理来自worker线程的消息 wk.onmessage function(message) { console.info(message from worker: message) // 根据业务按需停止worker线程 wk.terminate() }3.8 进程通信3.8.1 进程通信两种实现IPCInter-Process Communication使用 Binder 驱动RPCRemote Procedure Call使用软总线驱动3.8.2 实现步骤实现接口类需继承 IRemoteBroker需定义消息码可声明不在此类实现的方法。实现服务提供端Stub需继承 IRemoteStub 或者 RemoteObject需重写 AsObject 方法及 OnRemoteRequest 方法。实现服务请求端Proxy需继承 IRemoteProxy 或 RemoteProxy需重写 AsObject 方法封装所需方法调用 SendRequest。注册 SA申请 SA 的唯一 ID向 SAMgr 注册 SA。获取 SA通过 SA 的 ID 和设备 ID 获取 Proxy使用 Proxy 与远端通信image.png3.9 设备唯一标识Oaid它是基于华为自由算法生成的 UUID 标识符同一台设备上不同 App 获取的 Oaid 一致NetworkID网络设备节点通信标识符重启后变化DVID分布式虚拟设备标识符需要登录 HarmonyOS 账号UUID同一时空下所有设备生成的 UUID 都不同3.10 适配3.10.1 国际化导入 I18n 模块。import I18n from ohos.i18n;判断 Locale 的语言是否为从右到左语言。调用 isRTL 接口获取 Locale 的语言是否为从右到左语言。try { let rtl I18n.isRTL(zh-CN); // rtl false rtl I18n.isRTL(ar); // rtl true } catch(error) { console.error(call i18n.System interface failed, error code: ${error.code}, message: ${error.message}); }获取语言的本地化表示。调用 getDisplayLanguage 接口获取某一语言的本地化表示。其中 language 表示待本地化显示的语言locale 表示本地化的 Locale sentenceCase 结果是否需要首字母大写。try { let language en; let locale zh-CN; let sentenceCase false; let localizedLanguage I18n.System.getDisplayLanguage(language, locale, sentenceCase); // localizedLanguage 英语 } catch(error) { console.error(call i18n.System interface failed, error code: ${error.code}, message: ${error.message}); }获取国家的本地化表示。调用 getDisplayCountry 接口获取某一国家的本地化表示。其中country 表示待本地化显示的国家locale 表示本地化的 LocalesentenceCase 结果是否需要首字母大写。try { let country US; let locale zh-CN; let sentenceCase false; let localizedCountry I18n.System.getDisplayCountry(country, locale, sentenceCase); // localizedCountry 美国 } catch(error) { console.error(call i18n.System interface failed, error code: ${error.code}, message: ${error.message}); }获取系统语言列表和某个语言系统支持的国家列表。调用 getSystemLanguages 接口获取系统支持的语言列表。调用 getSystemCountries 接口获取某一语言系统支持的地区列表。try { let languageList I18n.System.getSystemLanguages(); // languageList [en-Latn-US, zh-Hans] let countryList I18n.System.getSystemCountries(zh); // countryList [ZW, YT, ..., CN, DE], 共240个国家和地区 } catch(error) { console.error(call i18n.System interface failed, error code: ${error.code}, message: ${error.message}); }判断语言和国家是否匹配。调用 isSuggested 接口判断语言和地区是否匹配。try { let isSuggest I18n.System.isSuggested(zh, CN); // isSuggest true } catch(error) { console.error(call i18n.System interface failed, error code: ${error.code}, message: ${error.message}); }3.10.2 屏幕适配百分比根据 dpi 动态计算算法全局定义src/main/resources/base/element/ float.json// 定义 { float: [ { name: btn_height, value: 40vp }, { name: value_height, value: 28vp } ] } // 引用 Button($r(app.string.pixel_introduce)) .height($r(app.float.btn_height)) .width(Constants.FULL_PERCENT) .backgroundColor($r(app.color.blue_background)) .onClick(() this.jumpPage(Constants.INTRODUCTION_PAGE_URL))3.10.3 其他适配暗黑模式等New-Resource File在弹出的界面选择 Color Mode 来创建如下图签名上架流程4.应用测试4.1 测试标准性能测试安全测试兼容性测试稳定性测试功耗测试流转测试游戏测试4.2 测试服务4.2.1 单元测试框架框架概述:单元测试框架(hypium)是 HarmonyOS 上的测试框架提供测试用例编写、执行、结果显示能力用于测试系统或应用接口。测试框架引用方式:目前 hypium 以 npm 包的形式发布, 因此需要在 Deveco Studio 工程级 package.json 内配置。dependencies: { ohos/hypium: 1.0.6 #最新版本号可通过cmd命令npm view ohos/hypium version查询 }使用import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from ohos/hypium export default function abilityTest() { describe(ActsAbilityTest, function () { it(assertContain,0, function () { let a abc let b b // Defines a variety of assertion methods, which are used to declare expected boolean conditions. expect(a).assertContain(b) expect(a).assertEqual(a) }) }) }5. 应用发布与测试5.1 签名与上架流程图签名上架流程6. 参考资料和资源https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/deveco_overview-0000001053582387-V3https://developer.harmonyos.com/cn/develop/deveco-studio#downloadhttps://nodejs.org/en2025开年AI技术打得火热正在改变前端人的职业命运阿里云核心业务全部接入Agent体系字节跳动30%前端岗位要求大模型开发能力腾讯、京东、百度开放招聘技术岗80%与AI相关……大模型正在重构技术开发范式传统CRUD开发模式正在被AI原生应用取代最残忍的是业务面临转型领导要求用RAG优化知识库检索你不会带AI团队微调大模型要准备多少数据你不懂想转型大模型应用开发工程师等相关岗没项目实操经验……这不是技术焦虑而是职业生存危机曾经React、Vue等热门的开发框架已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地未来企业更看重能用AI大模型技术重构业务流的技术人。如今技术圈降薪裁员频频爆发传统岗位大批缩水相反AI相关技术岗疯狂扩招薪资逆势上涨150%大厂老板们甚至开出70-100W年薪挖掘AI大模型人才不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态吸引了很多人的关注和兴趣也有很多新人小白想要学习入门大模型那么如何入门大模型呢下面给大家分享一份2025最新版的大模型学习路线帮助新人小白更系统、更快速的学习大模型2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享