Git原理(2)——Git状态
三个工作区域:Git仓库、工作目录以及暂存区域
工作区域
作用
Git 仓库(Repository)
1.保存项目的元数据和对象数据库的地方2.从其它计算机克隆
仓库时,拷贝的就是这里的数据
工作目录(Working Directory)
1. 对项目某个版本独立提取出的内容2.提取出来后在磁盘上供使用或修改
暂存区(Staging Area一个文件)
保存了下次将提交的文件列表信息
flowchart [LR]
A[工作目录(修改并暂存文件)] --快照--> B[暂存区]
B --提交更新--> C[Git仓库(永久存入提交的快照)]
状态
区域相关的三个状态:已提交、已修改和已暂存
状态
说明
已提交(committed)
数据已经安全的保存在本地数据库中
已修改(modified)
修改了文件,但还没保存到数据库中
已暂存(staged)
对已修改文件的当前版本做了标记,使之包含在下次提交的快照中
文件状态
跟踪(git add,添加内容到下一次提交)
工作目录下的每一个文 ...
Git原理(1)——Git特性
一、对待数据的方式:快照流
把数据看作是对小型文件系统的一组快照。
每次提交更新或在 Git 中保存项目状态时,对当时的全部文件制作一个快照并保存这个快照的索引
如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件
二、近乎所有操作都是本地执行
绝大多数操作都只需要访问本地文件和资源
三、保证完整性
所有数据在存储前都计算校验和(SHA-1 散列),然后以校验和来引用
不可能在 Git 不知情时更改任何文件内容或目录内容
Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名
四、一般只添加数据
Git 操作,几乎只往 Git 数据库中增加数据
Git快速入门
提交规范
commit信息
commit message格式:
():
type(必须)
用于说明git commit的类别,只允许使用下面的标识。
• feat:新功能(feature)。
• fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
• fix:产生diff并自动修复此问题。适合于一次提交直接修复问题
• to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
• docs:文档(documentation)。
• style:格式(不影响代码运行的变动)。
• refactor:重构(即不是新增功能,也不是修改bug的代码变动)。
• perf:优化相关,比如提升性能、体验。
• test:增加测试。
• chore:构建过程或辅助工具的变动。
• revert:回滚到上一个版本。
• merge:代码合并。
• sync:同步主线或分支的Bug。
scope(可选)
这里是否必须,以及范围是什么内容,可以看实际公司的情况。
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等, ...
Harmony案例分析(3)——神领物流
任务背景
任务描述
两层结构:commons和Entry
训练目标
实现思路
应用icon配置
new一个Image Asset。并设置foreground为所用icon,这样可以生成各种分辨率的icon
Hap的module.json5->abilities->label(ctrl+b进去设置foreground)、startWindowIcon两个都改成自己的icon
广告跳转与窗口管理
commons中设置数据类、api、常量
entry中设置entryAbility
async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); let ad = await getAdInfo() let use ...
Harmony三层架构
层次说明
层次
说明
特点
产品层(products)
HAP,即应用整体
可安装和运行在不同设备上
功能层(features)
HSP,动态共享,应用的功能
1.不能独立运行,需要依赖于产品 Hap 包2.可有page页面
资源(common)
HAR,静态共享库,功能依赖的资源
1.不能独立运行2.没有page页面
HSP和HAR
特点
HSP不支持在设备上单独安装/运行,需要与依赖该HSP的HAP一起安装/运行。HSP的版本号必须与HAP版本号一致。
HSP不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
HSP可以依赖其他HAR或HSP,但不支持循环依赖,也不支持依赖传递。
两者异同
相同点:
模块间资源共享
不支持在设备上单独安装/运行
不支持在配置文件中声明UIAbility组件与文档中心组件
不支持循环依赖,也不支持依赖传递
不同点:
har 发布二方或三方仓使用(hsp 不可以)2.har 中不支持在配置文件中声明pages页面3. hsp 中支持在配置文件中声明pages页面
hsR多模块依赖只 ...
Harmony小技巧(4)——命令与按键
构建相关
命令
命令
说明
hvigorw taskTree
根据工程中的模块获取模块中注册的任务树(上一行依赖更短的下一行,因此下一行先执行)
hdc shell
进入设备的shell命令行
ps -p -T
查看指定应用进程的线程信息(为需要指定的应用进程的进程ID)
观察
按键
预览——>查看变量是否保存到磁盘——>com.YOUR_PROJECT/haps/preferences
Harmony混合开发——Web
Web页面的显示过程可以被分为多个阶段,包括DNS解析、建立连接、发送请求、接收响应、解析HTML、下载资源等步骤
import { webview } from '@kit.ArkWeb';@Entry@Componentstruct Hybrid { @State message: string = 'Hello World'; webController:webview.WebviewController = new webview.WebviewController() build() { Column(){ Button('modify') .onClick(()=>{ // this.webController.runJavaScript(`myFunction()`) this.webController.registerJavaScriptProxy(new Inject() ...
Harmony注意事项
起点默认左上角
await必须在有async修饰的函数内
行首左对齐,行尾右对齐
Column({ space: 10 }) { Row({ space: 20 }) { Text(this.leftContent) .fontSize(15) .fontColor($r('app.color.text_secondary')) Row() { Text(this.rightContent) .fontSize(15) Image($r('app.media.ic_phone')).visibility(this.isShowIcon ? Visibility.Visible : Visibility.None) .width(25) .aspectRatio(1) } } .width('100%') ...
Harmony画板
settings:RenderingContextSettings = new RenderingContextSettings(true)canvas:CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)//起点默认左上角Canvas(this.canvas) .width("100%") .height("100%") .onReady(()=>{ //自定义起点 this.canvas.moveTo(this.posLast[0],this.posLast[1]) this.canvas.lineTo(100,100) this.canvas.lineWidth = 10 this.canvas.strokeStyle = "#5bcbd1" //边缘线 this.canvas.stroke() ...
Harmony手势
模态转场
新的界面覆盖在旧的界面上,旧的界面不消失
属性
说明
bindContentCover
自定义全屏的模态展示界面(e.g. 点击查看大图)
bindSheet
半模态展示界面(e.g. 分享框)
bindMenu
点击弹出菜单(e.g. 点击"+"号弹出菜单)
bindContextMenu
长按/右键点击弹出菜单(e.g. 长按浮起)
bindPopup
弹出Popup弹框(e.g. 弹出临时说明)
if
增加/删除组件(e.g. 临时显示某页面)
手势说明
触摸事件——手势的基础
所有手势的基础:触摸事件(onTouch:Down,Up,Move,Cancel)
.onTouch((event)=>{ switch(event.type){ //按下 case TouchType.Down: //event.touches[0]表示最新的数据 console.log("pos x: "+ev ...