- 博客(44)
- 收藏
- 关注
原创 2024Flutter面试题
在 Flutter 中,Widget 是构建用户界面的基本单位。它可以表示 UI 元素,也可以表示功能性组件,如用于手势检测的 GestureDetector Widget、用于应用主题数据传递的 Theme 等。Flutter 中的 Widget 分为 StatelessWidget 和 StatefulWidget 两种类型,它们的区别在于是否管理状态。StatelessWidget 不需要管理状态,它的生命周期只有一个方法 build(),用于构建 UI。
2024-10-20 13:36:03
4370
1
原创 鸿蒙项目打开相册,读取,显示图片
该模块提供相册管理模块能力,包括创建相册以及访问、修改相册中的媒体数据信息等。@ohos.file.photoAccessHelper (相册管理模块)
2024-09-11 08:32:44
413
原创 HarmonyOs HAP HAR HSP区别
创建用,于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包,具体包含如下两种类型。Library类型的Module分为Static和Shared两种类型,编译后会生成共享包。HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。创建,用于实现代码和资源的共享。
2024-09-05 11:34:33
960
原创 HarmonyOS 应用 Module类型
用于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包,具体包含如下两种类型。同一个Library类型的Module可以被其他的Module多次引用,合理地使用该类型的Module,能够降低开发和维护成本。Library类型的Module分为Static和Shared两种类型,编译后会生成共享包。
2024-09-05 11:17:42
722
原创 HarmonyOS 开发范式、应用模型
HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口,因此称这种应用模型为Stage模型。HarmonyOS API 7开始支持的模型,已经不再主推。
2024-09-05 11:10:05
437
原创 通过$r访问应用资源是否支持嵌套形式
那么有些地方不需要使用UI组件,但是想获取$r('app.string.EntryAbility_label')的value值;$r当前不支持嵌套,第二个参数需要使用ResourceManager获取应用资源对应字符串赋值给$r第二个参数。使用这个方法this.context.resourceManager.getStringSync()就可以了。项目中很多UI是使用$r('app.string.EntryAbility_label') 方式绑定值得,比如:arkui 提示组件。
2024-08-26 22:14:27
301
原创 VS Code安装插件时报错不兼容解决
这个命令会遍历当前目录下的所有.vsix文件,并使用`code --install-extension`命令逐个安装它们。请确保你已经安装了Visual Studio Code,并将其添加到了系统的环境变量中,以便在命令提示符中直接运行`code`命令。首先需要把要安装的所有插件文件放到vs code的安装目录下的bin文件夹里。这块代码在在bin目录打开cmd执行。
2024-08-14 10:38:03
1268
原创 Arkui 框架Worker线程
OpenHarmony的ArkUI框架提供了Worker和TaskPool两种多线程编程方式,以支持在应用程序中执行耗时操作而不影响主线程的性能。
2024-06-27 18:20:23
433
原创 css实现不同设备适配
通过设置容器的`display: grid`属性,并使用`grid-template-columns`、`grid-template-rows`和`grid-gap`等属性,可以实现在不同设备上自动调整网格的列数、行数和间距。通过设置容器的`display: flex`属性,并使用`flex-wrap`、`justify-content`和`align-items`等属性,可以实现在不同设备上自动调整元素的位置和尺寸。例如,可以使用`width: 50%`来设置元素的宽度为其父元素宽度的一半。
2024-06-05 10:30:20
1115
原创 前端首屏加载速度慢问题?怎么解决
**优化JavaScript执行**:延迟非必要的JavaScript文件的加载,或使用`async`和`defer`属性异步加载,减少对首屏渲染的影响。使用雪碧图技术合并图片请求。- **设置合理的缓存策略**:合理配置HTTP缓存头,使得浏览器可以缓存已加载的资源,减少重复加载的时间。- **优化图片资源**:适当压缩图片,使用正确的图片格式,为不同分辨率的设备提供相应尺寸的图片。- **优化DOM渲染**:减少DOM元素的数目,避免复杂的DOM绑定,简化首屏渲染的复杂度。
2024-05-28 08:54:26
802
原创 vue2和3区别
**Vue3**:Vue3采用了Proxy作为其新的响应式系统基础,这不仅解决了`Object.defineProperty`的限制,而且提供了更好的性能,尤其是在处理嵌套对象和数组时。- **Vue3**:虽然Vue3也保留了大部分生命周期钩子,但引入了更多与Composition API相关的生命周期钩子,如`onBeforeMount`、`onMounted`等,这使得与React等其他现代前端框架的用法更为一致Θic-1Θ。- **Vue2**:在Vue2的模板中,只允许有一个根元素存在。
2024-05-28 07:54:32
494
原创 react 组件之间传参
选择哪种方式取决于你的具体需求和应用的结构。对于简单的父子组件间通信,props 通常是首选。对于跨多个层级的通信,Context API 或状态管理库可能更合适。而对于子组件需要通知父组件的情况,回调函数通常是一个好选择。
2024-05-25 09:21:51
473
原创 react 受控组件和非受控组件? 纯函数?
React中的受控组件(Controlled Component)和非受控组件(Uncontrolled Component)是两种表单元素的状态管理方式。
2024-05-25 09:18:30
469
原创 react生命周期
React 的生命周期指的是组件从创建到销毁的过程,以及在此过程中 React 组件会经历的一系列状态。在 React 16.3 之前,React 类组件有三大生命周期阶段:挂载阶段(Mounting)、更新阶段(Updating)和卸载阶段(Unmounting),每个阶段都包含特定的生命周期方法。
2024-05-25 09:16:26
374
原创 react 如何实现dom更新和渲染
React 实现 DOM 更新和渲染的核心机制是其虚拟 DOM(Virtual DOM)和 React Diffing 算法。
2024-05-25 09:09:52
595
原创 usememo和usecallback 区别?场景
优化子组件的性能:当子组件接收到的某个依赖项发生改变时,useCallback可以用来创建一个只依赖于这个变量的回调函数,从而避免在每次父组件重新渲染时都重新创建函数。传递给子组件的回调函数:当需要将一个函数作为props传递给子组件时,useCallback可以确保每次渲染时都传递的是同一个函数,以避免不必要的组件重新渲染。优化子组件的渲染:在父组件中使用useMemo来缓存子组件的props,只有当props发生变化时才会重新渲染子组件,减少子组件的渲染次数。优化对象:主要用于缓存回调函数。
2024-05-25 09:06:38
562
原创 React组件性能优化中如何实现懒加载?
属性中定义的加载指示器。这种方式可以帮助提高应用的初始加载速度,因为只有当用户实际需要时才会加载组件。在React中实现组件的懒加载,可以使用动态导入(即代码分割)。组件,可以创建在需要时才加载的组件。是一个将被懒加载的组件。时,如果它尚未加载,
2024-05-25 09:01:40
472
原创 React组件性能优化中如何避免频繁更新?
在React开发中,避免组件的频繁更新是提升应用性能的关键手段之一。React提供了多种策略和工具来帮助开发者优化组件的更新频率。
2024-05-25 08:59:31
728
原创 如何优化React组件性能?
**可视区域渲染**:对于长列表或大量数据的场景,可以使用`react-window`或`react-virtualized`等库实现虚拟滚动,仅渲染可视区域内的元素,减少DOM节点数量,提高性能[^1^]。- **减少DOM操作**:尽量减少在组件的`render`方法中的DOM操作和计算量,避免在`render`中创建函数或绑定事件,以减少重绘和回流的次数。- **组件级懒加载**:对于某些非首屏展示的大型组件,可以使用`React.lazy`来实现组件级别的懒加载,提高首屏加载速度[^1^]。
2024-05-25 08:54:08
527
原创 react类组件和函数组件区别?
**类组件**:具有丰富的生命周期方法,如 `componentDidMount`、`componentDidUpdate` 等,这些方法在组件的不同阶段被自动调用,方便执行初始化或更新操作。- **函数组件**:虽然本身不支持状态,但通过 `useState` 和其他Hooks可以实现状态管理,使得代码更加简洁和模块化[^2^][^5^]。- **函数组件**:作为纯函数,每次渲染都创建新的实例,不重用之前的状态或实例,这可能在某些情况下带来性能优势[^2^]。2. **生命周期管理**
2024-05-25 08:52:20
319
原创 React中的useState和useEffect有什么区别?
它接受一个初始状态和一个可选的配置对象作为参数,返回一个包含当前状态和更新状态的函数的元组**。而**useEffect则是另一个重要的Hook,主要用于处理组件的副作用操作,比如数据获取、订阅事件等**。- **useEffect**:用于处理组件的副作用。- **useState**:允许在函数组件中维护状态。- **useEffect**:当组件需要响应状态或属性变化执行操作时,如发起网络请求、订阅事件、修改DOM等。- **useState**:当组件需要维护自己的状态时,如计数器、表单输入等。
2024-05-25 08:49:04
614
原创 react 中都有哪些hook?作用
它接收一个 reducer 函数和一个初始状态,并返回一个包含当前状态和一个 dispatch 函数的对象。它接收一个显示名称和一个格式化函数,并返回一个可用于调试的对象。它接收一个回调函数和一个依赖项数组,用于更新实例值。它接收一个回调函数和一个依赖项数组,并返回一个 memoized 版本的回调函数。它接收一个计算函数和一个依赖项数组,并返回一个 memoized 版本的计算结果。它接收一个上下文对象,并返回一个包含当前上下文值的函数。它返回一个包含当前状态和一个更新状态的函数的对象。
2024-05-25 08:47:05
584
原创 localstorage与seesionstorage区别
LocalStorage和SessionStorage是Web存储API的两个主要组成部分,它们允许在用户的浏览器中存储键值对数据。虽然它们看似相似,但在**生命周期、作用域以及容量限制**等方面存在一些关键的区别。
2024-05-24 21:10:35
831
原创 鸿蒙开发与H5开发有啥区别?
综上所述,鸿蒙开发与H5开发在技术栈、开发环境、生态系统以及应用特性等方面都存在明显的区别。鸿蒙开发注重于构建统一的操作系统和提供创新的分布式架构,而H5开发则强调跨平台兼容性和丰富的开发资源。选择哪种开发方式取决于具体的应用需求、目标平台以及开发者的技能与经验。
2024-05-22 18:08:08
725
原创 鸿蒙OS 路由跳转
2. **调用`Router`对象的`replace`或`push`方法**:在需要执行跳转的地方,调用`Router`对象的`replace`或`push`方法,并传入目标页面的路由路径。3. **使用`AbilitySlice`的`start`方法**:在自定义组件中,可以使用`AbilitySlice`的`start`方法来启动一个新的页面。1. **使用`@Route`装饰器**:在需要跳转的页面上添加`@Route`装饰器,并指定一个唯一的路由路径。)中定义路由路径,并指定参数。
2024-05-22 18:04:39
644
原创 页面和自定义组件生命周期
值得注意的是,从API version 9开始,允许在aboutToAppear函数中改变状态变量,这些更改将在后续执行build()函数中生效4。:页面创建时调用,用于完成页面的初始化工作。:页面变为可见状态时调用,此时页面已经与用户交互,可以进行一些与界面相关的操作。:当系统资源已经恢复到该页面时调用,通常用于恢复之前保存的状态、重新获取资源等。:页面销毁时调用,用于完成页面的清理工作,如释放资源、取消注册的事件监听器等。:页面变为非活动状态时调用,此时页面不能接受用户的输入,也不应响应事件。
2024-05-22 18:02:20
659
原创 鸿蒙OS LocalStorage 与AppStorage 区别?使用场景
比如,用户的登录状态或者应用的主题设置等信息,都可以通过 AppStorage 来存储,以确保这些数据在应用的任何地方都可以被访问和更新。例如,在一个购物应用的购物车页面中,可以使用 LocalStorage 来存储和更新购物车中商品的数量。AppStorage中的数据可以是双向同步的,这意味着当数据发生变化时,相关的UI组件可以实时更新,反之亦然。首先,你需要在你的鸿蒙项目中引入 LocalStorage 相关的模块。是全局的,所以请确保你的键(key)是唯一的,以避免与其他应用或组件的数据冲突。
2024-05-22 18:00:30
1096
2
原创 ArkUI组件通信 面试题
CanvasCanvasRenderingContext2D对象CanvasGradient对象ImageBitmap对象ImageData对象OffscreenCanvasRenderingContext2D对象Path2D。
2024-05-22 17:56:15
928
原创 鸿蒙开发面试题
开发者只需编写一次代码,就能在手机、平板、手表、电视、汽车等多类型设备上运行,得益于鸿蒙OS统一的开发环境、语言与API,以及对设备能力的抽象封装。以及更易于维护和更新。开发者可以使用华为提供的开发工具和SDK,如DevEco Studio,进行多设备协同开发,实现一次开发,多端部署的目。鸿蒙操作系统支持无缝更新,可以在不影响用户使用的情况下,自动下载并安装系统更新,确保系统的安全性和最新性。鸿蒙操作系统通过微内核架构和先进的调度算法,实现了高效的多任务并发处理,保证了系统的流畅性和响应速度。
2024-05-22 17:48:30
288
原创 使用vue-cli(vue脚手架)快速搭建项目
1,使用 vue-cli 搭建项目下面整个过程是基于已经安装node.js和cnpm的基础上,node.js如何安装就不在这里详说了。如何全局化安装cnpm,这里简单提一下:(淘宝镜像命令)npm install cnpm -g --registry=https://registry.npm.taobao.org其实对于安装vue-cli,使用npm命令和cnpm命令都是可以的,个人觉得使用npm安装的比较慢,而且很可能会因为网络问题而出错,所以还是觉得使用cnpm稳一点。(1)全局
2022-05-15 21:33:38
271
原创 JavaScript 输出
JavaScript 不提供任何内建的打印或显示函数。JavaScript 显示方案JavaScript 能够以不同方式“显示”数据:使用window.alert()写入警告框 使用document.write()写入 HTML 输出 使用innerHTML写入 HTML 元素 使用console.log()写入浏览器控制台使用 innerHTML如需访问 HTML 元素,JavaScript 可使用document.getElementById(id)方法。...
2021-10-31 18:22:57
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人