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

[Feature Request]: 支持超合金组件 #266

Open
XDcedar opened this issue Dec 22, 2022 · 22 comments
Open

[Feature Request]: 支持超合金组件 #266

XDcedar opened this issue Dec 22, 2022 · 22 comments
Labels
enhancement New feature request

Comments

@XDcedar
Copy link

XDcedar commented Dec 22, 2022

虽然现在基本不可能考虑这个问题,但姑且发个 Issue。

你想添加的新功能

复刻超合金组件。做成类似主站现有的超合金组件就好。
但要是 CSS 能类似 Stylus 一样支持 @-moz-document 关键词以及类似 Tampermonkey 一样提供一些内置命令比如 GM_addstyle 的话就更好了。

你希望的解决方案

俺也不知道有什么解决方案,也许已经做出了超合金组件的 Sai 老板知道?

其他可能的替代方案

Tampermonkey 可以替代。但是有两个问题:
一是 Tampermonkey 无法跨浏览器共享用户数据,你在PC上使用的插件没法在手机浏览器上启用。
二是与账号无关,登出后仍然会生效。(尽管这样做也有好处。)

其他相关信息

希望新站点能让 DOM 解析更简洁!现在构建页面会通过 CSS Modules 处理,导致类名不再固定,这对经常需要解析页面元素的超合金组件实在是不友好。举例:group 页面 中几乎所有元素都有了小尾巴。如果能想办法规避就好了。比如手动加上简单的类名(不考虑重名毕竟CSS不通过它渲染)或 ID,或者能提供前端 API 用于获取页面元素,之类的?

(补充说明:小尾巴指尾部会有一个 hash 值,比如 _title_gvkfu_51 中的 _gvkfu_51

@XDcedar XDcedar added the enhancement New feature request label Dec 22, 2022
@trim21
Copy link
Contributor

trim21 commented Dec 22, 2022

moz-document 不是浏览器支持的功能,不太可能支持这个。

之前考虑过把超合金组件的更新和审核放到github上面来,通过PR就可以直接提交新版本。这样社区可以审核,更新频率可以高一点。

@trim21
Copy link
Contributor

trim21 commented Dec 22, 2022

至于共享数据的问题,后面倒是可以提供个API

@XDcedar
Copy link
Author

XDcedar commented Dec 22, 2022

moz-document 不是浏览器支持的功能,不太可能支持这个。

其实我的意思是能有类似的功能,目的是让不同的页面能自动加载不同的 CSS,不一定要用 moz-document b38。不过这个不太重要,现在没有这功能,组件也能正常运行。

之前考虑过把超合金组件的更新和审核放到github上面来,通过PR就可以直接提交新版本。这样社区可以审核,更新频率可以高一点。

这样也行吧,只要使用时不会依赖 Tampermonkey 之类的外部扩展就行..而且现在bgm可以统计启用人数和排序,这个在 github 上应该做不到,所以主站还是需要一个界面用于启用和展示..

至于共享数据的问题,后面倒是可以提供个API

这是数据能保存在服务器上的意思么?这个好诶

@XDcedar
Copy link
Author

XDcedar commented Dec 22, 2022

另外那个 CSS Modules 是不是很难解决了?只能拖着小尾巴了么

@trim21
Copy link
Contributor

trim21 commented Dec 22, 2022

另外那个 CSS Modules 是不是很难解决了?只能拖着小尾巴了么

@trim21
Copy link
Contributor

trim21 commented Dec 22, 2022

另外那个 CSS Modules 是不是很难解决了?只能拖着小尾巴了么

其实也未必,我也不知道有没有办法解决

@trim21
Copy link
Contributor

trim21 commented Dec 22, 2022

这样也行吧,只要使用时不会依赖 Tampermonkey 之类的外部扩展就行..而且现在bgm可以统计启用人数和排序,这个在 github 上应该做不到,所以主站还是需要一个界面用于启用和展示..

只是把审核之类的放到github上来

@XDcedar
Copy link
Author

XDcedar commented Dec 22, 2022

其实也未必,我也不知道有没有办法解决

我感觉如果要用 CSS Modules 的话那应该是很难了..这毕竟是它的核心特性 😢
我只能说,好歹前缀有意义,不像 reddit 完全是乱码..

好像可以!参考下方评论

@FoundTheWOUT
Copy link

FoundTheWOUT commented Dec 23, 2022

小尾巴 是指作者栏的省略号吗,这样做是为了避免在切换页数的时候整个表格发生 Layout Shift。其实应该给这些元素加上 title 属性,这样鼠标移上去的时候就能看到完整信息,但我忘了
至于你说的 超合金组件,我的理解其实就是不同用户需要注入不同 js 和 css 的问题。这个在以后做了 SSR 后是水到渠成的问题,和 CSS Modules 无关(想了想,可能不需要 SSR 也许也可以做🤔

@trim21
Copy link
Contributor

trim21 commented Dec 23, 2022

小尾巴 是指作者栏的省略号吗,这样做是为了保证整个页面不要 Layout Shift。其实应该给这些元素加上 title 属性,这样鼠标移上去的时候就能看到完整信息,但我忘了。 至于你说的 超合金组件,我的理解其实就是不同用户需要注入不同 js 和 css 的问题。这个在以后做了 SSR 后是水到渠成的问题,和 CSS Modules 无关。

是这个
image

会导致外部用户没法写基于类名的css选择器

@FoundTheWOUT
Copy link

FoundTheWOUT commented Dec 23, 2022

是这个 image

意思是这样的类名对获取不友好吗🤔
懂了

@trim21
Copy link
Contributor

trim21 commented Dec 23, 2022

是这个 image

意思是这样的类名对获取不友好吗🤔

会导致外部用户没法写基于类名的css选择器

而且是不是每次编译都会重新生成?

@FoundTheWOUT
Copy link

而且是不是每次编译都会重新生成?

这个不太清楚

@FoundTheWOUT
Copy link

CSS Modules 的问题应该改下 vite 的配置就好了。倒是有个问题,按现在这样做的话,以前的超合金组件是不是都要废弃了,有没有必要考虑和之前的组件的兼容问题 @trim21

@XDcedar
Copy link
Author

XDcedar commented Dec 23, 2022

会导致外部用户没法写基于类名的css选择器

也不是完全没法写,如果前缀不变的话是能写的,但是写起来很麻烦。以前是 .infobox,现在是[class*="infobox"]。这种写法也有点影响执行效率。

@trim21
Copy link
Contributor

trim21 commented Dec 23, 2022

有没有必要考虑和之前的组件的兼容问题

没有

@trim21
Copy link
Contributor

trim21 commented Dec 23, 2022

有没有必要考虑和之前的组件的兼容问题

没有

有限的精力还是用在开发新网页上比较好(

而且现在开源之后也能PR了。

@XDcedar
Copy link
Author

XDcedar commented Dec 23, 2022

以前的超合金组件是不是都要废弃了,有没有必要考虑和之前的组件的兼容问题

这个我之前在 Slack 上问过了。布局变了之后超合金组件肯定是没法兼容的。但只要类名能固定的话,大部分组件跟进一下就能继续用了,不是大问题。

@XDcedar
Copy link
Author

XDcedar commented Dec 23, 2022

CSS Modules 的问题应该改下 vite 的配置就好了。

@FoundTheWOUT 这个怎么配置?我搜了一圈没看到怎么写能去掉 hash

@FoundTheWOUT
Copy link

https://github.com/madyankin/postcss-modules#generating-scoped-names

@XDcedar
Copy link
Author

XDcedar commented Dec 23, 2022

@FoundTheWOUT 原来如此..但是去掉 hash 的话,怎么保证类名不冲突?还是说,能添加两个类?

@FoundTheWOUT
Copy link

@FoundTheWOUT 原来如此..但是去掉 hash 的话,怎么保证类名不冲突?还是说,能添加两个类?

要从几个方面进行考虑

  1. 区分网站样式与 design 包样式,比如加个前缀 _website_
  2. website 包下的组件样式可以直接取组件名作为 suffix
  3. 而页面样式比如 index.module.less 或者 style.module.less 可以从路径入手,也可以按照某种约定(比如路由地址)修改现有样式名,再直接用该名作为 suffix。

你可以去前端那里提个 PR 让大家来讨论讨论,我最近不是很有空~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature request
Projects
None yet
Development

No branches or pull requests

3 participants