Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

解决一些仓库和提交历史相关的遗留问题 #28

Merged
merged 9 commits into from
Jul 12, 2024

Conversation

WavinFlag
Copy link
Contributor

  1. 对文本文件进行正确的 line-ending normalization。

    通常情况下,git 存储在仓库中的文本文件换行符总是 LF,这点是遵循 POSIX 的。使用者可以通过 git config 中的 core.autocrlf、或者仅本地生效的 git attributes 中的 {pattern} eol=crlf 规则来控制“将文件 checkout 到工作区时是否将换行转化为 CRLF”。

    参考:git attributes 的官方文档

    以及:

  2. 更改了 github workflow 中,使得最后一个步骤 deploy 仅在 push 到 master 分支时才会触发。

    这个步骤会将构建结果部署到“生产服务器”,对于 PR 来说这显然是不对的。(好在目前还没有发生 PR 被拒但发起者有仓库写权限的情形)

    我暂时没有直接更改整个 workflow 的根条件,因此 PR 发起时,直到 build 的步骤都会仍然进行。理论上我们应该有一个 staging 环境,用于部署 PR 并进行 review/test,不过本项目显然是不存在这种条件(和需求)了。所以这个 workflow 对 PR 的唯一意义可能就在于确定“it builds without error”——虽然这也说明不了什么……

    注:该 if 条件是参考 github docs 写的,但没有实际验证过,理论上存在出错的可能,需要后续观察 workflow 的运行状况以确认。

  3. 6bc858d 这个提交似乎存在一些误操作,导致在此之前的部分代码逻辑改动被“回退”了(JSON 数据的部分因为每次都会用脚本重新生成而未受影响)。其中影响比较大的是两个 issue fix,关于技能的”首轮加载时间缩短“ #3对轴目标间隔设置为0时,会引发网页崩溃 #9

    重新“应用”这两个更改之后,“预装填”也得以“曲线”实现。(fix 阿尔萨斯预装填缺失 #26)

  4. 修复了问题:部分组件因没有赋予 key 属性而发生“就地更新”,对于存在状态的组件来说,会导致“状态遗留”。(fix 舰娘管理删除bug #27)

    参考:List Rendering #Maintaining State with key - Vue.js guide

    值得注意的是,对 v-if/else 分支渲染的组件,也存在这个问题。然而官方文档里无论在 v-if 还是 key 部分都没有提及。

    目前为 v-for 块都尽可能地添加了 key 属性,除非 块的渲染内容非常简单、无状态 ,且 无法方便地从 list item 导出合适的 key

这将使项目得以在任意带前缀的路径下部署(即,不再必须部署在域名的根路径下)
重新应用了两个因误操作 (6bc858d) 而被 revert 的 commit
44ae894 fix AzurLaneTools#3 支持手动输入首轮CD Buff
9e5eea0 fix AzurLaneTools#9 完善固定间隔对轴目标处理逻辑。完善固定间隔对轴目标处理逻辑, 间隔<=0时返回空列表
这个问题和 v-for 列表渲染时需要“通过 key 管理状态”是一个原因;
但我不知道为什么 v-if/else 的不同分支下也会出现“就地更新”的问题。
如果 v-for 渲染的 list item 包含带状态的组件,则必须为其指定唯一的 key 以避免“就地更新”。
实际上,官方建议在“任何可行的时候”都为 item 指定唯一的 key。
参见: https://vuejs.org/guide/essentials/list.html#maintaining-state-with-key
@WavinFlag
Copy link
Contributor Author

所以这个 workflow 对 PR 的唯一意义可能就在于确定“it builds without error”——虽然这也说明不了什么……

然后……

Error: src/components/FleetDetail.vue(167,50): error TS2322: Type 'string | null' is not assignable to type 'string | number | symbol | undefined'.
  Type 'null' is not assignable to type 'string | number | symbol | undefined'.

世界名画.jpg 🤣


实际上我在本地 run dev 了,但是……

// in package.json
"scripts": {
  "dev": "vite", // ⚠️ without tsc check
  "build": "vue-tsc --noEmit && vite build", // with tsc check
}

教训+1

@WavinFlag
Copy link
Contributor Author

注:该 if 条件是参考 github docs 写的,但没有实际验证过,理论上存在出错的可能,需要后续观察 workflow 的运行状况以确认。

PR 的情形没问题👌

@AutumnSun1996 AutumnSun1996 merged commit 5b01f10 into AzurLaneTools:master Jul 12, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

舰娘管理删除bug 阿尔萨斯预装填缺失
2 participants