Ability Kit(鸿蒙三)
Ability Kit 简介Ability Kit(程序框架服务)提供了应用程序开发和运行的应用模型,是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。
使用场景应用的多Module开发:应用可通过不同类型的Module(HAP、HAR、HSP)来实现应用的功能开发。其中,HAP用于实现应用的功能和特性,HAR与HSP用于实现代码和资源的共享。
应用内的交互:应用内的不同组件之间可以相互跳转。比如,在支付应用中,通过入口UIAbility组件启动收付款UIAbility组件。
应用间的交互:当前应用可以启动其他应用,来完成某个任务或操作。比如,启动浏览器应用来打开网站、启动文件应用来浏览或编辑文件等。
应用的跨设备流转:通过应用的跨端迁移和多端协同,获得更好的使用体验。比如,在平板上播放的视频,迁移到智慧屏继续播放。
应用模型应用模型是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。
应用模型的构成要素
应用组件
应用进程模型
应 ...
鸿蒙app的数据管理(鸿蒙二)
状态管理LocalStorageAppStoragePersistentStorageEnvironment
AppStorage: 应用全局的UI状态存储AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。
@StorageProp当appstorage中的某个属性值被修改,可以将值传递过来,配合@watch监听可以修改其他值
12345@StorageProp(CACHE_USER_INFO) @Watch('onLoginChange') userInfo:string = ''onLoginChange() { this.nickName = JSON.parse(this.userInfo).nickName}
@StorageLink@StorageLink(key)是和AppStorage中key对应的属性建立双向数据同步:1.本地修改发生,该修改会被写回AppStorage中;2.AppStorage中的修改发生后,该修改 ...
arkts入门 鸿蒙入门(鸿蒙一)
写在前面:本人是一个web工程师,现在开始学习鸿蒙,所以可能会带有一些web的惯性思维,和从安卓开发转到鸿蒙的开发思维习惯会有差异。这是在沟通中发现的。安卓能转鸿蒙,web也能转鸿蒙,各有各的优势。本笔记会持续更新…
认识arkTSarkts是在ts上拓展了声明式UI、状态管理等相应能力的ts超集
基本语法装饰器
装饰类、结构、方法和变量,赋予其特殊含义。
@Component自定义组件,可重用的UI单元@Entry页面的默认入口组建,一个页面有且只有一个@entry@Builder自定义构建函数@BuilderParam引用@Builder函数@Styles定义组件重用样式@Extend定义扩展组件样式
—— 状态管理 ——@State装饰的变量值发生改变时会触发自定义组件的UI界面自动刷新@Link@Link装饰的变量和父组件构建双向同步关系的状态变量,父组件会接受来自@Link装饰的变量的修改的同步,父组件的更新也会同步给@Link装饰的变量。父组件传入子组件时,不能用this.aa,而要用$aa@Prop@Prop装饰的变量可以和父组件建立单向同步关系,@Prop装饰 ...
markdown语法
标题(一级标题对应h1)后面得有个空格
123456# 一级标题 对应h1## 二级标题 对应h2### 三级标题 对应h3#### 四级标题 对应h4##### 五级标题 对应h5###### 六级标题 对应h6
效果如下(数字序号1.1.1是我自己加的):
二级标题三级标题四级标题五级标题六级标题引用说明区块1> 此处是引用
此处是引用
代码块少量代码 单行使用<html></html>
大量代码 多行使用123<html> <body></body></html>
图片1
分隔符1---
1***
强调斜体1*斜体*
斜体
加粗1**加粗**
加粗
删除线1~~删除线~~
删除线
转义1\\
\ 转义
表格1234|姓名|年龄|性别|学号||:-:|:-:|:-:|:-:||张三|18|男|001|
姓名
年龄
性别
学号
张三
18
男
001
列表无序列表形式一:
123+ a+ b+ c
a
b
c
形式二:
123- a- b- c
...
了解拖拽的原理
拖拽的实现核心有4点给需要拖拽的元素加上draggable=true属性给需要拖拽的元素设置ondragstart的事件处理函数可以通过句柄e中以key,value存储我们想要存储的数据e.dataTransfer.setData('device', device)
给放置容器设置ondrop放手事件处理函数可以通过句柄e获取我们之前存储的数据
给放置容器设置ondragover事件dragover事件的默认行为是:“Reset the current drag operation to “none””。也就是说,如果不阻止放置元素的 dragOver 事件,则放置元素不会响应“拖动元素”的“放置行为”。
drag和dropHTML 的 drag & drop 使用了“DOM Event”和从“Mouse Event”继承而来的“drag event” 。一个典型的拖拽操作: 用户选中一个可拖拽的(draggable)元素,并将其拖拽(鼠标按住不放)至一个可放置的(droppable)元素上,然后松开鼠标。在拖动元素期间,一些与拖放相关的事件会被触发,像 d ...
vite判断环境
Vite 是一个现代化的前端构建工具,它提供了内置的环境变量来辨别当前环境是生产环境还是开发环境。在 Vite 中,可以通过检查 import.meta.env 对象来获取当前环境的信息。
import.meta.env 对象包含了一些常用的环境变量,其中最重要的是 MODE 变量。MODE 变量表示当前的构建模式,可以是 development(开发模式)或 production(生产模式)。
要判断当前环境是否为生产环境,可以通过以下方式:
12345if (import.meta.env.MODE === 'production') {// 生产环境逻辑} else {// 开发环境逻辑}
在上述代码中,我们通过检查 import.meta.env.MODE 的值来确定当前环境。如果 MODE 的值为 ‘production’,则表示当前是生产环境;否则,表示当前是开发环境。
除了 MODE 变量,import.meta.env 对象还提供了其他一些有用的环境变量,例如:
BASE_URL:当前应用的基础 URL。DEV ...
pc端要做一个切换账号的功能?
背景:因为老板有两个手机号,这两个手机号在系统中的权限不一样,所以产品考虑给老板做一个切换账号的功能。说实话这个功能在pc端可是不常见啊。不过这个功能不怎么复杂。
我简单记录一下这个功能是怎么实现的。
我们系统的token是放在cookie中的,为什么放这儿,是因为cookie可以跨子域,靠这个功能我们实现了单点登录。
实现思路:1.我需要往cookie再存一个值accountTokenList来存放多个账号的token。2.每当登录账号是我往accountTokenList的首位塞一个对象,该对象有phone、token等属性。3.点击切换账号的列表时,把accountTokenList中对应账号的token拿出来存到cookie的token中。4.等账号退出时,再把accountTokenList中对应的对象清除。
带来一个问题:当同时打开多个页面或者多个系统时,我在页面A中切了账号,由账号1切换为账号2,然后又切换到B页面,这个时候B页面展示的数据还是之前账号1查出的数据(系统右上角展示的登录用户还是账号1),但是cookie里存的token已经修改为账号2的,再点击查询按钮 ...
ant-design-vue的admin-pro项目是怎么做权限控制的
公司的后台管理系统是基于ant-design-vue的vip收费版搭建的项目。下载地址是https://store.antdv.com/items/admin-pro, 收费版和免费版的区别是收费版用的vue3 ts开发的,而免费版用的是vue2开发的。
项目初始化后是怎么创建页面组件(路由)的,权限控制又是怎么做的?我们的项目基于pro-vip做了一些改动,但是架子跟pro-vip是基本差不多的。
在router.beforeEach中获取用户信息及权限信息,并将(路由)权限存到userStore里,下次路由跳转判断userStore中有权限信息就不重新获取用户信息及权限信息了
12345678910111213141516router.beforeEach(async to => { //.... // 判断userStore中有allowRouters,直接返回true if (userStore.allowRouters && userStore.allowRouters.length > 0) { return tr ...
a-table搜索表格数据但不影响表格的数据选中,怎么做?
场景:表格数据勾选了某条数据或某几条数据,再通过搜索框搜索数据,此时界面上看不到刚才已勾选的数据,但是点击提交时却需要提交所有刚刚勾选的数据。搜索出来的数据勾选或取消勾选,当重新搜索或重置搜索时,勾选不会受影响。
这就需要做一些特殊操作,不能直接把selectedRowKeys赋值给选中的keys,具体应该怎么处理,请看下文。
12345678910111213<a-table @change="handleTableChange" :row-selection="{ selectedRowKeys: data.selectedRowKeys, onChange: onSelectChange, getCheckboxProps: checkboxPropsFn, }" :loading="data.loading" :columns="data.columns" :data-source="data.dataList" :pag ...
a-tree右侧的checkbox
业务场景中,分配职责权限,职责权限是树的结构,需求是树的左侧为新勾选的职责,数的右侧为用户的角色带的职责。如图所示。树用的是ant-design-vue的a-tree,该组件默认是没有右侧的checkbox的,但是它提供的插槽可供开发人员自定义树中每个节点的展示形式。所以我们可以通过插槽的形式自定义树的节点。该需求的难点是右侧checkbox的选中时,实现父级的全选与半选。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253<a-input v-model:value="data.searchValue" placeholder="权限名称" style="width: 200px; margin: 8px 0" :maxlength="20" @change="searchFn"> <template #suffi ...