最新资讯

  • 【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)

【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)

2025-04-28 17:00:04 0 阅读

目录

1 -> HML语法

1.1 -> 页面结构

1.2 -> 数据绑定

1.3 -> 普通事件绑定

1.4 -> 冒泡事件绑定5+

1.5 -> 捕获事件绑定5+

1.6 -> 列表渲染

1.7 -> 条件渲染

1.8 -> 逻辑控制块

1.9 -> 模板引用

2 -> CSS语法

2.1 -> 尺寸单位

2.2 -> 样式导入

2.3 -> 声明样式

2.4 -> 选择器

2.5 -> 选择器优先级

2.6 -> 伪类

2.7 -> 样式预编译

2.8 -> CSS样式继承6+

3 -> JS语法

3.1 -> 语法

3.2 -> 对象

3.3 -> 方法

3.4 -> 获取DOM元素

3.5 -> 获取ViewModel


1 -> HML语法

HML(HarmonyOS Markup Language)是一套类HTML的标记语言,通过组件,事件构建出页面的内容。页面具备数据绑定、事件绑定、列表渲染、条件渲染和逻辑控制等高级能力。

1.1 -> 页面结构


  
Image Show

1.2 -> 数据绑定


  
{ {content[1]}}
/*test.css*/
.container{
  margin: 200px;
}
// test.js
export default {
  data: {
    content: ['Hello World!', 'Welcome to my world!']
  },
  changeText: function() {
    this.content.splice(1, 1, this.content[0]);
  }
}

说明

  • 针对数组内的数据修改,请使用splice方法生效数据绑定变更。

  • hml文件中的js表达式不支持ES6语法。

1.3 -> 普通事件绑定

事件通过'on'或者'@'绑定在组件上,当组件触发事件时会执行JS文件中对应的事件处理函数。

事件支持的写法有:

  • "funcName":funcName为事件回调函数名(在JS文件中定义相应的函数实现)。

  • "funcName(a,b)":函数参数例如a,b可以是常量,或者是在JS文件中的data中定义的变量(前面不用写this.)。

  • 示例


  
{ {count}}
/* test.css */
.container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  left: 0px;
  top: 0px;
  width: 454px;
  height: 454px;
}
.title {
  font-size: 30px;
  text-align: center;
  width: 200px;
  height: 100px;
}
.box {
  width: 454px;
  height: 200px;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
}
.btn {
  width: 200px;
  border-radius: 0;
  margin-top: 10px;
  margin-left: 10px;
}
// test.js
export default {
  data: {
    count: 0
  },
  increase() {
    this.count++;
  },
  decrease() {
    this.count--;
  },
  multiply(multiplier) {
    this.count = multiplier * this.count;
  }
};

1.4 -> 冒泡事件绑定5+

冒泡事件绑定包括:

  • 绑定冒泡事件:on:{event}.bubble。on:{event}等价于on:{event}.bubble。

  • 绑定并阻止冒泡事件向上冒泡:grab:{event}.bubble。grab:{event}等价于grab:{event}.bubble。

  • 示例


  
;
// test.js
export default {
  clickfunc: function(e) {
    console.log(e);
  },
  touchstartfuc: function(e) {
    console.log(e);
  },
}

说明

采用旧写法(onclick)的事件绑定在最小API版本6以下时采用不冒泡处理,在最小API版本为6及6以上时采用冒泡处理。

1.5 -> 捕获事件绑定5+

Touch触摸类事件支持捕获,捕获阶段位于冒泡阶段之前,捕获事件先到达父组件然后达到子组件。

捕获事件绑定包括:

  • 绑定捕获事件:on:{event}.capture。

  • 绑定并阻止事件向下传递:grab:{event}.capture。

  • 示例


  
// xxx.js
export default {
  touchstartfuc: function(e) {
    console.log(e);
  },
}

1.6 -> 列表渲染


  
{ {$idx}}.{ {$item.name}}
{ {$idx}}.{ {value.name}}
{ {index}}.{ {value.name}}
// test.js
export default {
  data: {
    array: [
      {id: 1, name: 'jack', age: 18},
      {id: 2, name: 'tony', age: 18},
    ],
  },
  changeText: function() {
    if (this.array[1].name === "tony"){
      this.array.splice(1, 1, {id:2, name: 'Isabella', age: 18});
    } else {
      this.array.splice(2, 1, {id:3, name: 'Bary', age: 18});
    }
  },
}

tid属性主要用来加速for循环的重渲染,旨在列表中的数据有变更时,提高重新渲染的效率。tid属性是用来指定数组中每个元素的唯一标识,如果未指定,数组中每个元素的索引为该元素的唯一id。例如上述tid="id"表示数组中的每个元素的id属性为该元素的唯一标识。for循环支持的写法如下:

  • for="array":其中array为数组对象,array的元素变量默认为$item。

  • for="v in array":其中v为自定义的元素变量,元素索引默认为$idx。

  • for="(i, v) in array":其中元素索引为i,元素变量为v,遍历数组对象array。

说明

  • 数组中的每个元素必须存在tid指定的数据属性,否则运行时可能会导致异常。

  • 数组中被tid指定的属性要保证唯一性,如果不是则会造成性能损耗。比如,示例中只有id和name可以作为tid字段,因为它们属于唯一字段。

  • tid不支持表达式。

1.7 -> 条件渲染

条件渲染分为2种:if/elif/else和show。两种写法的区别在于:第一种写法里if为false时,组件不会在vdom中构建,也不会渲染,而第二种写法里show为false时虽然也不渲染,但会在vdom中构建;另外,当使用if/elif/else写法时,节点必须是兄弟节点,否则编译无法通过。实例如下:


  
Hello-world1 Hello-world2 Hello-World
/* test.css */
.container{
  flex-direction: column;
  align-items: center;
}
.btn{
  width: 280px;
  font-size: 26px;
  margin: 10px 0;
}
// test.js
export default {
  data: {
    visible: false,
    display: true,
  },
  toggleShow: function() {
    this.visible = !this.visible;
  },
  toggleDisplay: function() {
    this.display = !this.display;
  }
}

优化渲染优化:show方法。当show为true时,节点正常渲染;当为false时,仅仅设置display样式为none。


  
Hello World
/* test.css */
.container{
  flex-direction: column;
  align-items: center;
}
.btn{
  width: 280px;
  font-size: 26px;
  margin: 10px 0;
}
// test.js
export default {
  data: {
    visible: false,
  },
  toggle: function() {
    this.visible = !this.visible;
  },
}

说明

禁止在同一个元素上同时设置for和if属性。

1.8 -> 逻辑控制块

控制块使得循环渲染和条件渲染变得更加灵活;block在构建时不会被当作真实的节点编译。注意block标签只支持for和if属性。


  
  
  
  {
  
  {$item.name}}
  
  
  
  {
  
  {$item.color}}
  
  
  
  
// test.js
export default {
  data: {
    glasses: [
      {name:'sunglasses', kinds:[{name:'XXX',color:'XXX'},{name:'XXX',color:'XXX'}]},
      {name:'nearsightedness mirror', kinds:[{name:'XXX',color:'XXX'}]},
    ],
  },
}

1.9 -> 模板引用


Name: { {name}} Age: { {age}}


2 -> CSS语法

CSS是描述HML页面结构的样式语言。所有组件均存在系统默认样式,也可在页面CSS样式文件中对组件、页面自定义不同的样式。

2.1 -> 尺寸单位

  • 逻辑像素px(文档中以表示):

    • 默认屏幕具有的逻辑宽度为720px,实际显示时会将页面布局缩放至屏幕实际宽度,如100px在实际宽度为1440物理像素的屏幕上,实际渲染为200物理像素(从720px向1440物理像素,所有尺寸放大2倍)。
    • 额外配置autoDesignWidth为true时,逻辑像素px将按照屏幕密度进行缩放,如100px在屏幕密度为3的设备上,实际渲染为300物理像素。应用需要适配多种设备时,建议采用此方法。
  • 百分比(文档中以表示):表示该组件占父组件尺寸的百分比,如组件的width设置为50%,代表其宽度为父组件的50%。

2.2 -> 样式导入

为了模块化管理和代码复用,CSS样式文件支持 @import 语句,导入css文件。

2.3 -> 声明样式

每个页面目录下存在一个与布局hml文件同名的css文件,用来描述该hml页面中组件的样式,决定组件应该如何显示。

1. 内部样式,支持使用style、class属性来控制组件的样式。例如:


Hello World
/* index.css */
.container {
  justify-content: center;
}

2. 文件导入,合并外部样式文件。例如,在common目录中定义样式文件style.css,并在index.css文件首行中进行导入:

/* style.css */
.title {
  font-size: 50px;
}
/* index.css */
@import '../../common/style.css';
.container {
  justify-content: center;
}

2.4 -> 选择器

css选择器用于选择需要添加样式的元素,支持的选择器如下表所示:

选择器样例样例描述
.class

.container

用于选择class="container"的组件。
#id#titleld用于选择id="titleId"的组件。
tagtext用于选择text组件。
,.title, .content用于选择class="title"和class="content"的组件。
#id .class tag#containerld .content text非严格父子关系的后代选择器,选择具有id="containerId"作为祖先元素,class="content"作为次级祖先元素的所有text组件。如需使用严格的父子关系,可以使用“>”代替空格,如:#containerId>.content。

示例:


标题
内容
/* 页面样式test.css */
/* 对所有div组件设置样式 */
div {
  flex-direction: column;
}
/* 对class="title"的组件设置样式 */
.title {
  font-size: 30px;
}
/* 对id="contentId"的组件设置样式 */
#contentId {
  font-size: 20px;
}
/* 对所有class="title"以及class="content"的组件都设置padding为5px */
.title, .content {
  padding: 5px;
}
/* 对class="container"的组件下的所有text设置样式 */
.container text {
  color: #007dff;
}
/* 对class="container"的组件下的直接后代text设置样式 */
.container > text {
  color: #fa2a2d;
}

以上样式运行效果如下:

其中“.container text”将“标题”和“内容”设置为蓝色,而“.container > text”直接后代选择器将“标题”设置为红色。2者优先级相同,但直接后代选择器声明顺序靠后,将前者样式覆盖。

2.5 -> 选择器优先级

选择器的优先级计算规则与w3c规则保持一致(只支持:内联样式,id,class,tag,后代和直接后代),其中内联样式为在元素style属性中声明的样式。

当多条选择器声明匹配到同一元素时,各类选择器优先级由高到低顺序为:内联样式 > id > class > tag。

2.6 -> 伪类

css伪类是选择器中的关键字,用于指定要选择元素的特殊状态。例如,:disabled状态可以用来设置元素的disabled属性变为true时的样式。

除了单个伪类之外,还支持伪类的组合,例如,:focus:checked状态可以用来设置元素的focus属性和checked属性同时为true时的样式。支持的单个伪类如下表所示,按照优先级降序排列:

名称支持组件描述
:diaabled支持disabled属性的组件表示disabled属性变为true时的元素(不支持动画样式的设置)。
:active支持click事件的组件表示被用户激活的元素,如:被用户按下的按钮、被激活的tab-bar页签(不支持动画样式的设置)。
:waitingbutton表示waiting属性为true的元素(不支持动画样式的设置)。
:checkedinput[type="checkbox"、type=“radio”]、switch表示checked属性为true的元素(不支持动画样式的设置)。

伪类示例如下,设置按钮的:active伪类可以控制被用户按下时的样式:


/* index.css */
.button:active {
  background-color: #888888;/*按钮被激活时,背景颜色变为#888888 */
}

说明

针对弹窗类组件及其子元素不支持伪类效果,包括popup、dialog、menu、option、picker。

2.7 -> 样式预编译

预编译提供了利用特有语法生成css的程序,可以提供变量、运算等功能,令开发者更便捷地定义组件样式,目前支持less、sass和scss的预编译。使用样式预编译时,需要将原css文件后缀改为less、sass或scss,如index.css改为index.less、index.sass或index.scss。

  • 当前文件使用样式预编译,例如将原index.css改为index.less:

/* index.less */
/* 定义变量 */
@colorBackground: #000000;
.container {
  background-color: @colorBackground; /* 使用当前less文件中定义的变量 */
}

引用预编译文件,例如common中存在style.scss文件,将原index.css改为index.scss,并引入style.scss:

/* style.scss */
/* 定义变量 */
$colorBackground: #000000;

在index.scss中引用:

/* index.scss */
/* 引入外部scss文件 */
@import '../../common/style.scss';
.container {
  background-color: $colorBackground; /* 使用style.scss中定义的变量 */
}

说明

引用的预编译文件建议放在common目录进行管理。

2.8 -> CSS样式继承6+

css样式继承提供了子节点继承父节点样式的能力,继承下来的样式在多选择器样式匹配的场景下,优先级排最低,当前支持以下样式的继承:

  • font-family

  • font-weight

  • font-size

  • font-style

  • text-align

  • line-height

  • letter-spacing

  • color

  • visibility

3 -> JS语法

JS文件用来定义HML页面的业务逻辑,支持ECMA规范的JavaScript语言。基于JavaScript语言的动态化能力,可以使应用更加富有表现力,具备更加灵活的设计能力。下面讲述JS文件的编译和运行的支持情况。

3.1 -> 语法

支持ES6语法。

  • 模块声明

    使用import方法引入功能模块:

import router from '@system.router';
  • 代码引用

        使用import方法导入js代码:

import utils from '../../common/utils.js';

3.2 -> 对象

  • 应用对象
属性类型描述
$defObject

使用this.$app.$def获取在app.js中暴露的对象。

 说明:

> 应用对象不支持数据绑定,需主动触发UI更新。

示例代码

// app.js
export default {
  onCreate() {
    console.info('Application onCreate');
  },
  onDestroy() {
    console.info('Application onDestroy');
  },
  globalData: {
    appData: 'appData',
    appVersion: '2.0',
  },
  globalMethod() {
    console.info('This is a global method!');
    this.globalData.appVersion = '3.0';
  }
};
// index.js页面逻辑代码
export default {
  data: {
    appData: 'localData',
    appVersion:'1.0',
  },
  onInit() {
    this.appData = this.$app.$def.globalData.appData;
    this.appVersion = this.$app.$def.globalData.appVersion;
  },
  invokeGlobalMethod() {
    this.$app.$def.globalMethod();
  },
  getAppVersion() {
    this.appVersion = this.$app.$def.globalData.appVersion;
  }
}
  • 页面对象
属性类型描述
dataObject/Function

页面的数据模型,类型是对象或者函数,如果类型是函数,返回值必须是对象。属性名不能以$或_开头,不要使用保留字for, if, show, tid。

data与private和public不能重合使用。

$refsObject持有注册过ref 属性的DOM元素或子组件实例的对象。
privateObject页面的数据模型,private下的数据属性只能由当前页面修改。
publicObject页面的数据模型,public下的数据属性的行为与data保持一致。
propsArray/Objectprops用于组件之间的通信,可以通过方式传递给组件;props名称必须用小写,不能以$或_开头,不要使用保留字for, if, show, tid。目前props的数据类型不支持Function。
computedObject用于在读取或设置进行预先处理,计算属性的结果会被缓存。计算属性名不能以$或_开头,不要使用保留字。

3.3 -> 方法

  • 数据方法
方法参数描述
$setkey: string, value:any

添加新的数据属性或者修改已有数据属性。

用法:

this.$set('key',value):添加数据属性。

$deletekey: string

删除数据属性。

用法:

this.$delete('key'):删除数据属性。

示例代码

// index.js
export default {
  data: {
    keyMap: {
      OS: 'HarmonyOS',
      Version: '2.0',
    },
  },
  getAppVersion() {
    this.$set('keyMap.Version', '3.0');
    console.info("keyMap.Version = " + this.keyMap.Version); // keyMap.Version = 3.0

    this.$delete('keyMap');
    console.info("keyMap.Version = " + this.keyMap); // log print: keyMap.Version = undefined
  }
}
  • 公共方法
方法参数描述
$elementid: string

获得指定id的组件对象,如果无指定id,则返回根组件对象。

用法:

- this.$element('xxx'):获得id为xxx的组件对象。

- this.$element():获得根组件对象。

$rootElement

获取根组件对象。

用法:this.$rootElement().scrollTo({ duration: 500, position: 300 }), 页面在500ms内滚动300px。

$root获得顶级ViewModel实例。
$parent获得父级ViewModel实例。
$childid: string

获得指定id的子级自定义组件的ViewModel实例。

用法:

this.$child('xxx') :获取id为xxx的子级自定义组件的ViewModel实例。

  • 事件方法
方法参数描述
$watchdata: string, callback: string | Function

观察data中的属性变化,如果属性值改变,触发绑定的事件。

用法:

this.$watch('key', callback)

  • 页面方法
方法参数描述
scrollTo6+scrollPageParam: ScrollPageParam将页面滚动到目标位置,可以通过ID选择器指定或者滚动距离指定。
表1 ScrollPageParam6+
名称类型默认值描述
positionnumber-指定滚动位置。
idstring-指定需要滚动到的元素id。
durationnumber300指定滚动时长,单位为毫秒。
timingFunctionstringease指定滚动动画曲线,可选值。
complete() => void-指定滚动完成后需要执行的回调函数。

示例:

this.$rootElement().scrollTo({position: 0})
this.$rootElement().scrollTo({id: 'id', duration: 200, timingFunction: 'ease-in', complete: ()=>void})

3.4 -> 获取DOM元素

1. 通过$refs获取DOM元素


// index.js
export default {
  data: {
    images: [
      { src: '/common/frame1.png' },
      { src: '/common/frame2.png' },
      { src: '/common/frame3.png' },
    ],
  },
  handleClick() {
    const animator = this.$refs.animator; // 获取ref属性为animator的DOM元素
    const state = animator.getState();
    if (state === 'paused') {
      animator.resume();
    } else if (state === 'stopped') {
      animator.start();
    } else {
      animator.pause();
    }
  },
};

2. 通过$element获取DOM元素


// index.js
export default {
  data: {
    images: [
      { src: '/common/frame1.png' },
      { src: '/common/frame2.png' },
      { src: '/common/frame3.png' },
    ],
  },
  handleClick() {
    const animator = this.$element('animator'); // 获取id属性为animator的DOM元素
    const state = animator.getState();
    if (state === 'paused') {
      animator.resume();
    } else if (state === 'stopped') {
      animator.start();
    } else {
      animator.pause();
    }
  },
};

3.5 -> 获取ViewModel

根节点所在页面:



{ {text}}
// root.js
export default {
  data: {
    text: 'I am root!',
  },
}

自定义parent组件:



parent component click hello parent component!
// parent.js
export default {
  data: {
    showValue: false,
    text: 'I am parent component!',
  },
  parentClicked () {
    this.showValue = !this.showValue;
    console.info('parent component get parent text');
    console.info(`${this.$parent().text}`);
    console.info("parent component get child function");
    console.info(`${this.$child('selfDefineChild').childClicked()}`);
  },
}

自定义child组件:


child component clicked hello child component
// child.js
export default {
  data: {
    show: false,
    text: 'I am child component!',
  },
  childClicked () {
    this.show = !this.show;
    console.info('child component get parent text');
    console.info('${this.$parent().text}');
    console.info('child component get root text');
    console.info('${this.$root().text}');
  },
}

感谢各位大佬支持!!!

互三啦!!!

本文地址:https://www.vps345.com/4806.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 ssh deepseek Ollama 模型联网 API CherryStudio python MCP 进程 操作系统 进程控制 Ubuntu llama 算法 opencv 自然语言处理 神经网络 语言模型 javascript 前端 chrome edge 数据库 centos oracle 关系型 安全 分布式 阿里云 网络 网络安全 网络协议 ubuntu harmonyos 华为 开发语言 typescript 计算机网络 ollama ai 人工智能 llm php android adb nginx 监控 自动化运维 numpy 经验分享 react.js 前端面试题 node.js 持续部署 YOLOv8 NPU Atlas800 A300I pro asi_bench c++ http windows ssl java github ecm bpm MCP server agent C/S LLM zotero WebDAV 同步失败 代理模式 Dell R750XS 科技 个人开发 golang 后端 YOLO 网络结构图 tcp/ip java-ee udp 深度学习 pytorch spring sql KingBase 电脑 uni-app 笔记 C 环境变量 进程地址空间 深度优先 图论 并集查找 换根法 树上倍增 docker 容器 ESP32 nuxt3 vue3 实时音视频 自动化 bash spring cloud intellij-idea kafka hibernate vscode fastapi mcp mcp-proxy mcp-inspector fastapi-mcp sse 豆瓣 追剧助手 迅雷 nas 微信 银河麒麟 kylin v10 麒麟 v10 目标检测 计算机视觉 gitlab LDAP c语言 tomcat maven intellij idea pycharm conda pillow json html5 firefox 游戏程序 git 面试 性能优化 jdk 架构 机器学习 MQTT 消息队列 DeepSeek-R1 API接口 多线程服务器 Linux网络编程 Hyper-V WinRM TrustedHosts apache ide websocket mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 蓝耘科技 元生代平台工作流 ComfyUI 开发环境 SSL证书 小程序 重启 排查 系统重启 日志 原因 c# Flask FastAPI Waitress Gunicorn uWSGI Uvicorn IIS .net core Hosting Bundle .NET Framework vs2022 RTSP xop RTP RTSPServer 推流 视频 联想开天P90Z装win10 AI 爬虫 数据集 mysql 学习 Wi-Fi 1024程序员节 web Socket chatgpt microsoft jenkins jupyter AIGC 大模型 云电竞 云电脑 todesk excel 职场和发展 rust springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 macos 运维开发 游戏服务器 Minecraft ddos ip wsl redis 数据结构 学习方法 llama3 Chatglm 开源大模型 cursor windows日志 unity 数据挖掘 agi 远程桌面 ansible playbook 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 debian wps 安卓 iDRAC R720xd vue.js 编辑器 glibc spring boot 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 pdf AI编程 XFS xfs文件系统损坏 I_O error kind 物联网 iot 华为云 嵌入式硬件 单片机 温湿度数据上传到服务器 Arduino HTTP Agent 远程 命令 执行 sshpass 操作 visual studio code html FunASR ASR 嵌入式 linux驱动开发 arm开发 web安全 个人博客 seatunnel 集成学习 集成测试 CPU 内存 主板 电源 网卡 向日葵 博客 远程连接 rdp 实验 开源 rag ragflow ragflow 源码启动 信息与通信 rclone AList webdav fnOS 远程工作 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK kylin ISO镜像作为本地源 微信小程序 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 yum .netcore oceanbase rc.local 开机自启 systemd 麒麟 智能手机 NAS Termux Samba Linux express 微服务 kubernetes 云原生 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 Docker Compose docker compose docker-compose 历史版本 下载 安装 大数据 媒体 gaussdb HiCar CarLife+ CarPlay QT RK3588 pygame 小游戏 五子棋 xss pip postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 pppoe radius Netty 即时通信 NIO 思科模拟器 思科 Cisco elasticsearch audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 课程设计 vasp安装 qt IIS服务器 IIS性能 日志监控 react next.js 部署 部署next.js 智能路由器 mysql离线安装 ubuntu22.04 mysql8.0 银河麒麟服务器操作系统 系统激活 SVN Server svn tortoise svn devops springboot 华为od OD机试真题 华为OD机试真题 服务器能耗统计 ci/cd 僵尸进程 stm32 TCP服务器 qt项目 qt项目实战 qt教程 低代码 客户端 权限 hive Hive环境搭建 hive3环境 Hive远程模式 根服务器 系统安全 junit SEO log4j 漏洞 CDN 内网穿透 frp .net Dify 安全威胁分析 vscode 1.86 laravel flash-attention 报错 mac 前端框架 unity3d 网络穿透 云服务器 SSH Xterminal 鸿蒙 aws googlecloud 服务器繁忙 备选 网站 api 调用 示例 LORA 大语言模型 NLP 5G 3GPP 卫星通信 JAVA Java https 腾讯云 Reactor 设计模式 C++ filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 查询数据库服务IP地址 SQL Server 语音识别 AutoDL jmeter 软件测试 HCIE 数通 能力提升 面试宝典 技术 IT信息化 ui HarmonyOS Next 外网访问 端口映射 django sqlite 华为认证 网络工程师 交换机 android studio openssl 密码学 Docker Hub docker pull 镜像源 daemon.json deepseek r1 大数据平台 硬件架构 eureka shell sqlserver kamailio sip VoIP webstorm rust腐蚀 统信 国产操作系统 虚拟机安装 驱动开发 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 jar WSL win11 无法解析服务器的名称或地址 vSphere vCenter Java Applet URL操作 服务器建立 Socket编程 网络文件读取 armbian u-boot redhat ios flutter flask web3.py mongodb 升级 CVE-2024-7347 MI300x DeepSeek 孤岛惊魂4 web3 openwrt WSL2 prometheus grafana ux 多线程 监控k8s集群 集群内prometheus open Euler dde deepin 统信UOS 程序人生 LLM Web APP Streamlit 信号处理 串口服务器 MacOS录屏软件 IMM unix sysctl.conf vm.nr_hugepages 代码调试 ipdb adobe 传统数据库升级 银行 LLMs 单一职责原则 Python 网络编程 聊天服务器 套接字 TCP asm GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 python3.11 交叉编译 gitea asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 移动云 负载均衡 策略模式 单例模式 CUDA PyTorch GCC aarch64 编译安装 HPC visualstudio SSL 域名 rsyslog rabbitmq ruby ollama下载加速 live555 rtsp rtp 安装教程 GPU环境配置 Ubuntu22 Anaconda安装 硬件工程 Windows DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 matlab EasyConnect Cline ecmascript nextjs reactjs 黑客技术 ssrf 失效的访问控制 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 fpga开发 Deepseek 程序员 搜索引擎 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap vim 网络攻击模型 创意 社区 bug gpu算力 Ubuntu 24.04.1 轻量级服务器 软件工程 机器人 odoo 服务器动作 Server action wsl2 go css3 rpc 远程过程调用 Windows环境 tcpdump sentinel 中间件 直播推流 es jvm 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 显卡驱动 kvm 无桌面 命令行 微信公众平台 C语言 佛山戴尔服务器维修 佛山三水服务器维修 virtualenv ffmpeg 音视频 openEuler Invalid Host allowedHosts vue 加解密 Yakit yaklang 测试工具 .net mvc断点续传 c 缓存 gitee LInux 计算机 干货分享 渗透测试 黑客工具 密码爆破 风扇控制软件 DNS iperf3 带宽测试 无人机 我的世界 我的世界联机 数码 软考 黑客 虚幻 游戏引擎 UDP 线程 信号 seleium chromedriver 自动化测试 ruoyi webrtc css ShenTong 国产化 P2P HDLC 宠物 毕业设计 免费学习 宠物领养 宠物平台 mybatis 服务器管理 宝塔面板 配置教程 服务器安装 网站管理 宕机切换 服务器宕机 QT 5.12.12 QT开发环境 Ubuntu18.04 figma 小艺 Pura X mamba docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos bonding 链路聚合 双系统 cd 目录切换 压力测试 执法记录仪 智能安全帽 smarteye tailscale derp derper 中转 triton 模型分析 矩阵 线性代数 电商平台 SysBench 基准测试 毕设 服务器时间 流量运营 状态模式 MacMini Mac 迷你主机 mini Apple RAID RAID技术 磁盘 存储 cnn GoogLeNet lio-sam SLAM r语言 数学建模 系统架构 工业4.0 uv DOIT 四博智联 stm32项目 dify CentOS Stream CentOS 音乐服务器 Navidrome 音流 transformer Cursor VS Code ping++ AI写作 程序员创富 软负载 AI-native Docker Desktop 蓝桥杯 小智AI服务端 xiaozhi TTS 多进程 yolov8 apt 国内源 postgresql VR手套 数据手套 动捕手套 动捕数据手套 AD 域管理 网站搭建 serv00 H3C 命名管道 客户端与服务端通信 微信开放平台 微信公众号配置 远程登录 telnet freebsd okhttp PVE npm hexo dell服务器 iventoy VmWare OpenEuler av1 电视盒子 机顶盒ROM 魔百盒刷机 云服务 3d 鸿蒙系统 linux安装配置 firewalld docker run 数据卷挂载 交互模式 测试用例 功能测试 热榜 磁盘监控 AI Agent 字节智能运维 办公自动化 自动化生成 pdf教程 服务器配置 rnn HarmonyOS 7z springsecurity6 oauth2 授权服务器 前后端分离 k8s Unity插件 KVM 输入法 Kylin OS uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 MDK 嵌入式开发工具 论文笔记 sublime text keepalived 毕昇JDK sonoma 自动更新 arcgis 技能大赛 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 arm Redis Desktop xshell termius iterm2 wireshark 我的世界服务器搭建 minecraft neo4j 数据仓库 数据库开发 数据库架构 database 剧本 file server http server web server 数据分析 muduo 程序 X11 Xming 自动驾驶 gcc g++ g++13 DevEco Studio Cookie 知识库 RAGFlow 本地知识库部署 DeepSeek R1 模型 生物信息学 产品经理 xcode pyautogui 环境配置 ArcTS 登录 ArcUI GridItem arkUI 服务网格 istio 王者荣耀 链表 开机自启动 js 虚拟化 半虚拟化 硬件虚拟化 Hypervisor eNSP 网络规划 VLAN 企业网络 运维监控 minio Spring Security Kali 虚拟机 linux环境变量 chrome devtools selenium ue4 着色器 ue5 onlyoffice 游戏开发 prompt 合成模型 扩散模型 图像生成 pgpool cuda cudnn anaconda Vmamba BMC IPMI 带外管理 QQ bot Docker 序列化反序列化 硬件 设备 GPU PCI-Express matplotlib 端口测试 springcloud Linux的基础指令 田俊楠 Linux find grep 阻塞队列 生产者消费者模型 服务器崩坏原因 jetty undertow 其他 grub 版本升级 扩容 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm AI大模型 langchain 代理 outlook OpenHarmony 真机调试 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 p2p Erlang OTP gen_server 热代码交换 事务语义 鸿蒙开发 移动开发 safari 系统 MNN Qwen 系统开发 binder 车载系统 framework 源码环境 大模型推理 大模型学习 大模型教程 ABAP 语法 图形渲染 x64 SIGSEGV SSE xmm0 SWAT 配置文件 服务管理 网络共享 健康医疗 互联网医院 HTTP 服务器控制 ESP32 DeepSeek 黑苹果 VMware dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Node-Red 编程工具 流编程 DeepSeek行业应用 Heroku 网站部署 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 sdkman TRAE sequoiaDB tensorflow tcp 存储维护 NetApp存储 EMC存储 图像处理 捆绑 链接 谷歌浏览器 youtube google gmail TrueLicense 游戏机 nvidia hugo W5500 OLED u8g2 nac 802.1 portal 远程控制 rustdesk ip命令 新增网卡 新增IP 启动网卡 micropython esp32 mqtt AI agent bat 端口 查看 ss prometheus数据采集 prometheus数据模型 prometheus特点 相机 超融合 Open WebUI 分布式训练 AI作画 聊天室 ESXi ocr alias unalias 别名 xpath定位元素 PX4 ROS RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 源码 Linux环境 数据可视化 fd 文件描述符 crosstool-ng 混合开发 环境安装 JDK 算力 regedit 开机启动 Radius deep learning docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 yaml Ultralytics 可视化 强化学习 list 模拟实现 群晖 linux 命令 sed 命令 ceph 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP VMware安装Ubuntu Ubuntu安装k8s threejs 3D edge浏览器 银河麒麟高级服务器 外接硬盘 Kylin 物联网开发 webgl SenseVoice windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 clickhouse 智能音箱 智能家居 自动化任务管理 本地化部署 embedding 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 rocketmq 社交电子 centos-root /dev/mapper yum clean all df -h / du -sh 数据库系统 考研 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 在线office 镜像 rpa 京东云 EMQX 通信协议 西门子PLC 通讯 实习 HAProxy 深度求索 私域 基础入门 编程 弹性计算 计算虚拟化 弹性裸金属 XCC Lenovo jina chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 匿名管道 私有化 本地部署 chfs ubuntu 16.04 繁忙 解决办法 替代网站 汇总推荐 AI推理 yum源切换 更换国内yum源 显示管理器 lightdm gdm dba 同步 备份 建站 玩机技巧 软件分享 软件图标 腾讯云大模型知识引擎 minicom 串口调试工具 直流充电桩 充电桩 Xinference 内网服务器 内网代理 内网通信 vr MySql skynet IM即时通讯 企业微信 剪切板对通 HTML FORMAT 需求分析 规格说明书 裸金属服务器 弹性裸金属服务器 安全架构 金仓数据库 2025 征文 数据库平替用金仓 epoll 火绒安全 Nuxt.js dns 开发 uniapp 大模型入门 移动魔百盒 恒源云 USB转串口 CH340 autodl 飞牛NAS 飞牛OS MacBook Pro harmonyOS面试题 AD域 trea idea 软件定义数据中心 sddc 阿里云ECS 反向代理 致远OA OA服务器 服务器磁盘扩容 邮件APP 免费软件 docker命令大全 软件需求 CORS 跨域 Ubuntu Server Ubuntu 22.04.5 DocFlow 雨云 NPS 鲲鹏 昇腾 npu Linux24.04 图形化界面 李心怡 YOLOv12 边缘计算 智能硬件 Linux的权限 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 大模型微调 code-server mosquitto zabbix docker部署Python word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 netty Python基础 Python教程 Python技巧 wpf Google pay Apple pay ubuntu24.04.1 dubbo MS Materials gateway Clion Nova ResharperC++引擎 Centos7 远程开发 交互 NFS 业界资讯 模拟退火算法 IO模型 less EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 iftop 网络流量监控 n8n 工作流 workflow Claude 嵌入式系统开发 wsgiref Web 服务器网关接口 flink echarts 信息可视化 网页设计 文件系统 路径解析 make命令 makefile文件 大模型面经 AnythingLLM AnythingLLM安装 华为机试 粘包问题 代理服务器 软链接 硬链接 AISphereButler fast iphone 自定义客户端 SAS tidb GLIBC DenseNet ukui 麒麟kylinos openeuler CrewAI 框架搭建 视觉检测 回显服务器 UDP的API使用 基础环境 流水线 脚本式流水线 db efficientVIT YOLOv8替换主干网络 TOLOv8 VMware创建虚拟机 java-rocketmq 做raid 装系统 ubuntu20.04 开机黑屏 remote-ssh ardunio BLE 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 多路转接 搭建个人相关服务器 sqlite3 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 Windsurf 远程服务 h.264 conda配置 conda镜像源 RustDesk自建服务器 rustdesk服务器 docker rustdesk navicat 沙盒 信创 信创终端 中科方德 word 项目部署到linux服务器 项目部署过程 mcu ftp IMX317 MIPI H265 VCU VPS can 线程池 pyqt 串口驱动 CH341 uart 485 ubuntu24 vivado24 WebRTC gpt 大模型部署 vscode1.86 1.86版本 ssh远程连接 USB网络共享 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Playwright Attention RTMP 应用层 计算机外设 ssh远程登录 虚幻引擎 big data opensearch helm Typore 服务器主板 AI芯片 linux上传下载 飞书 RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 浏览器开发 AI浏览器 ssh漏洞 ssh9.9p2 CVE-2025-23419 TrinityCore 魔兽世界 k8s集群资源管理 云原生开发 gradle hadoop vmware 卡死 C# MQTTS 双向认证 emqx 自动化编程 IPMITOOL 硬件管理 opcua opcda KEPServer安装 oneapi open webui IDEA etl Linux PID spark HistoryServer Spark YARN jobhistory ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 KylinV10 麒麟操作系统 Vmware Headless Linux lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 医疗APP开发 app开发 文件分享 iis VSCode ros2 moveit 机器人运动 可信计算技术 bcompare Beyond Compare camera Arduino 电子信息 模拟器 教程 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 token sas FTP 服务器 烟花代码 烟花 元旦 Trae AI代码编辑器 僵尸世界大战 游戏服务器搭建 远程看看 远程协助 银河麒麟操作系统 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 欧标 OCPP zookeeper idm nfs 服务器部署ai模型 iBMC UltraISO dity make Anolis nginx安装 linux插件下载 lua raid5数据恢复 磁盘阵列数据恢复 EMUI 回退 降级 gnu 实战案例 IDE AI 原生集成开发环境 Trae AI searxng 域名服务 DHCP 符号链接 配置 网络药理学 生信 PPI String Cytoscape CytoHubba GIS 遥感 WebGIS 单元测试 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 perf 嵌入式实习 音乐库 飞牛 实用教程 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 kali 共享文件夹 离线部署dify 大大通 第三代半导体 碳化硅 DBeaver kerberos 嵌入式Linux IPC 树莓派 VNC 三级等保 服务器审计日志备份 ai工具 v10 软件 ldap 拓扑图 企业网络规划 华为eNSP Kylin-Server 产测工具框架 IMX6ULL 管理框架 多个客户端访问 IO多路复用 TCP相关API 中兴光猫 换光猫 网络桥接 自己换光猫 内网环境 bootstrap Kali Linux 信息收集 firewall openstack Xen ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS 流式接口 SSH 服务 SSH Server OpenSSH Server URL TCP协议 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 架构与原理 抗锯齿 composer milvus 灵办AI elk Logstash 日志采集 网卡的名称修改 eth0 ens33 Ark-TS语言 leetcode 推荐算法 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors cpp-httplib 网工 hosts 压测 ECS nlp xrdp SRS 流媒体 直播 cmos 技术共享 防火墙 NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 数据管理 数据治理 数据编织 数据虚拟化 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 Deepseek-R1 私有化部署 推理模型 元服务 应用上架 换源 Debian 性能分析 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 mariadb eclipse 常用命令 文本命令 目录命令 崖山数据库 YashanDB 实时互动 trae 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 虚拟局域网 thingsboard dash 正则表达式 ros dock 加速 性能测试 政务 分布式系统 监控运维 Prometheus Grafana 雨云服务器 高级IO VMware安装mocOS macOS系统安装 环境迁移 OpenSSH gpt-3 文心一言 知识图谱 selete 多层架构 解耦 cpu 实时 使用 midjourney 大模型应用 相差8小时 UTC 时间 deekseek 分析解读 risc-v Dell HPE 联想 浪潮 IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 win服务器架设 windows server etcd 数据安全 RBAC 微信分享 Image wxopensdk 人工智能生成内容 ipython 迁移指南 金融 swoole 网络用户购物行为分析可视化平台 大数据毕业设计 影刀 #影刀RPA# FTP服务器 状态管理的 UDP 服务器 Arduino RTOS llama.cpp