mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-06-17 04:31:22 +08:00
Compare commits
20 Commits
d2585a431c
...
main
Author | SHA1 | Date | |
---|---|---|---|
cb3b1b89c5 | |||
721b876dea | |||
1cd3c369ea | |||
e15d66956c | |||
32862fe194 | |||
626e70a666 | |||
47cf42deff | |||
55ee13ad5f | |||
3a106842b3 | |||
0feb5644c9 | |||
139d107454 | |||
7011e08a95 | |||
d48cf7d4ec | |||
b833cb0981 | |||
e97857cb7e | |||
faed604ead | |||
6b8fdb3366 | |||
78f60f418c | |||
9e66decded | |||
4e2bc83644 |
@ -351,7 +351,7 @@ jobs:
|
|||||||
<a href="https://github.com/qyl27" title="雨落"><img src="https://avatars.githubusercontent.com/u/53731501?v=4" width="42;" alt="雨落"/></a>
|
<a href="https://github.com/qyl27" title="雨落"><img src="https://avatars.githubusercontent.com/u/53731501?v=4" width="42;" alt="雨落"/></a>
|
||||||
<a href="https://github.com/MackDing" title="Blossom"><img src="https://avatars.githubusercontent.com/u/19878893?v=4" width="42;" alt="Blossom"/></a>
|
<a href="https://github.com/MackDing" title="Blossom"><img src="https://avatars.githubusercontent.com/u/19878893?v=4" width="42;" alt="Blossom"/></a>
|
||||||
<a href="https://github.com/1250422131" title="萌新杰少"><img src="https://avatars.githubusercontent.com/u/52126790?v=4" width="42;" alt="萌新杰少"/></a>
|
<a href="https://github.com/1250422131" title="萌新杰少"><img src="https://avatars.githubusercontent.com/u/52126790?v=4" width="42;" alt="萌新杰少"/></a>
|
||||||
<a href="https://github.com/richuff" title="richuff"><img src="https://avatars.githubusercontent.com/u/162144087?v=4" width="42;" alt="richuff"/></a>
|
<a href="https://github.com/zine0" title="zine yu"><img src="https://avatars.githubusercontent.com/u/46991452?v=4" width="42;" alt="zine yu"/></a>
|
||||||
<a href="https://github.com/Harris-H" title="Hao He"><img src="https://avatars.githubusercontent.com/u/57698783?v=4" width="42;" alt="Hao He"/></a>
|
<a href="https://github.com/Harris-H" title="Hao He"><img src="https://avatars.githubusercontent.com/u/57698783?v=4" width="42;" alt="Hao He"/></a>
|
||||||
<a href="https://github.com/LiuYuan-SHU" title="Yuan Liu"><img src="https://avatars.githubusercontent.com/u/96400967?v=4" width="42;" alt="Yuan Liu"/></a>
|
<a href="https://github.com/LiuYuan-SHU" title="Yuan Liu"><img src="https://avatars.githubusercontent.com/u/96400967?v=4" width="42;" alt="Yuan Liu"/></a>
|
||||||
<a href="https://github.com/long-910" title="Small Long"><img src="https://avatars.githubusercontent.com/u/7323488?v=4" width="42;" alt="Small Long"/></a>
|
<a href="https://github.com/long-910" title="Small Long"><img src="https://avatars.githubusercontent.com/u/7323488?v=4" width="42;" alt="Small Long"/></a>
|
||||||
@ -359,10 +359,11 @@ jobs:
|
|||||||
<a href="https://github.com/xia0ne" title="YuRuiH"><img src="https://avatars.githubusercontent.com/u/32591223?v=4" width="42;" alt="YuRuiH"/></a>
|
<a href="https://github.com/xia0ne" title="YuRuiH"><img src="https://avatars.githubusercontent.com/u/32591223?v=4" width="42;" alt="YuRuiH"/></a>
|
||||||
<a href="https://github.com/chaos-cn" title="chaos"><img src="https://avatars.githubusercontent.com/u/71205599?v=4" width="42;" alt="chaos"/></a>
|
<a href="https://github.com/chaos-cn" title="chaos"><img src="https://avatars.githubusercontent.com/u/71205599?v=4" width="42;" alt="chaos"/></a>
|
||||||
<a href="https://github.com/QinIndexCode" title="fault"><img src="https://avatars.githubusercontent.com/u/177287013?v=4" width="42;" alt="fault"/></a>
|
<a href="https://github.com/QinIndexCode" title="fault"><img src="https://avatars.githubusercontent.com/u/177287013?v=4" width="42;" alt="fault"/></a>
|
||||||
<a href="https://github.com/wsypower" title="魏"><img src="https://avatars.githubusercontent.com/u/31298317?v=4" width="42;" alt="魏"/></a>
|
<a href="https://github.com/richuff" title="richuff"><img src="https://avatars.githubusercontent.com/u/162144087?v=4" width="42;" alt="richuff"/></a>
|
||||||
<a href="https://github.com/wangdaodao" title="王叨叨"><img src="https://avatars.githubusercontent.com/u/2317442?v=4" width="42;" alt="王叨叨"/></a>
|
<a href="https://github.com/wangdaodao" title="王叨叨"><img src="https://avatars.githubusercontent.com/u/2317442?v=4" width="42;" alt="王叨叨"/></a>
|
||||||
<a href="https://github.com/itldg" title="老大哥"><img src="https://avatars.githubusercontent.com/u/13432299?v=4" width="42;" alt="老大哥"/></a>
|
<a href="https://github.com/wsypower" title="魏"><img src="https://avatars.githubusercontent.com/u/31298317?v=4" width="42;" alt="魏"/></a>
|
||||||
<a href="https://github.com/buyfakett" title="buyfakett"><img src="https://avatars.githubusercontent.com/u/46560426?v=4" width="42;" alt="buyfakett"/></a>
|
<a href="https://github.com/buyfakett" title="buyfakett"><img src="https://avatars.githubusercontent.com/u/46560426?v=4" width="42;" alt="buyfakett"/></a>
|
||||||
|
<a href="https://github.com/itldg" title="老大哥"><img src="https://avatars.githubusercontent.com/u/13432299?v=4" width="42;" alt="老大哥"/></a>
|
||||||
<a href="https://github.com/catcto" title="小武Alan"><img src="https://avatars.githubusercontent.com/u/5467932?v=4" width="42;" alt="小武Alan"/></a>
|
<a href="https://github.com/catcto" title="小武Alan"><img src="https://avatars.githubusercontent.com/u/5467932?v=4" width="42;" alt="小武Alan"/></a>
|
||||||
<a href="https://github.com/witt-bit" title="witt"><img src="https://avatars.githubusercontent.com/u/52407727?v=4" width="42;" alt="witt"/></a>
|
<a href="https://github.com/witt-bit" title="witt"><img src="https://avatars.githubusercontent.com/u/52407727?v=4" width="42;" alt="witt"/></a>
|
||||||
<a href="https://github.com/ryanhex53" title="ryanhex53"><img src="https://avatars.githubusercontent.com/u/360426?v=4" width="42;" alt="ryanhex53"/></a>
|
<a href="https://github.com/ryanhex53" title="ryanhex53"><img src="https://avatars.githubusercontent.com/u/360426?v=4" width="42;" alt="ryanhex53"/></a>
|
||||||
@ -407,7 +408,7 @@ jobs:
|
|||||||
<a href="https://github.com/godot42x" title="godot42"><img src="https://avatars.githubusercontent.com/u/79260851?v=4" width="42;" alt="godot42"/></a>
|
<a href="https://github.com/godot42x" title="godot42"><img src="https://avatars.githubusercontent.com/u/79260851?v=4" width="42;" alt="godot42"/></a>
|
||||||
<a href="https://github.com/gi-b716" title="Gavin"><img src="https://avatars.githubusercontent.com/u/78394473?v=4" width="42;" alt="Gavin"/></a>
|
<a href="https://github.com/gi-b716" title="Gavin"><img src="https://avatars.githubusercontent.com/u/78394473?v=4" width="42;" alt="Gavin"/></a>
|
||||||
<a href="https://github.com/fjqz177" title="fjqz177"><img src="https://avatars.githubusercontent.com/u/83070583?v=4" width="42;" alt="fjqz177"/></a>
|
<a href="https://github.com/fjqz177" title="fjqz177"><img src="https://avatars.githubusercontent.com/u/83070583?v=4" width="42;" alt="fjqz177"/></a>
|
||||||
<a href="https://github.com/fenglielie" title="fenglielie"><img src="https://avatars.githubusercontent.com/u/51266402?v=4" width="42;" alt="fenglielie"/></a>
|
<a href="https://github.com/fenglielie" title="fenglielie (风猎猎)"><img src="https://avatars.githubusercontent.com/u/51266402?v=4" width="42;" alt="fenglielie (风猎猎)"/></a>
|
||||||
<a href="https://github.com/fakevn" title="fakevn"><img src="https://avatars.githubusercontent.com/u/11464386?v=4" width="42;" alt="fakevn"/></a>
|
<a href="https://github.com/fakevn" title="fakevn"><img src="https://avatars.githubusercontent.com/u/11464386?v=4" width="42;" alt="fakevn"/></a>
|
||||||
<a href="https://github.com/emoji-share" title="emoji-share🤪"><img src="https://avatars.githubusercontent.com/u/192275245?v=4" width="42;" alt="emoji-share🤪"/></a>
|
<a href="https://github.com/emoji-share" title="emoji-share🤪"><img src="https://avatars.githubusercontent.com/u/192275245?v=4" width="42;" alt="emoji-share🤪"/></a>
|
||||||
<a href="https://github.com/cool9203" title="cool9203"><img src="https://avatars.githubusercontent.com/u/29609607?v=4" width="42;" alt="cool9203"/></a>
|
<a href="https://github.com/cool9203" title="cool9203"><img src="https://avatars.githubusercontent.com/u/29609607?v=4" width="42;" alt="cool9203"/></a>
|
||||||
@ -427,8 +428,8 @@ jobs:
|
|||||||
<a href="https://github.com/LuckyJie12" title="夜未央"><img src="https://avatars.githubusercontent.com/u/102901105?v=4" width="42;" alt="夜未央"/></a>
|
<a href="https://github.com/LuckyJie12" title="夜未央"><img src="https://avatars.githubusercontent.com/u/102901105?v=4" width="42;" alt="夜未央"/></a>
|
||||||
<a href="https://github.com/kele527" title="吹衣轻飏"><img src="https://avatars.githubusercontent.com/u/345445?v=4" width="42;" alt="吹衣轻飏"/></a>
|
<a href="https://github.com/kele527" title="吹衣轻飏"><img src="https://avatars.githubusercontent.com/u/345445?v=4" width="42;" alt="吹衣轻飏"/></a>
|
||||||
<a href="https://github.com/lvzhenbo" title="无聊波波"><img src="https://avatars.githubusercontent.com/u/32427677?v=4" width="42;" alt="无聊波波"/></a>
|
<a href="https://github.com/lvzhenbo" title="无聊波波"><img src="https://avatars.githubusercontent.com/u/32427677?v=4" width="42;" alt="无聊波波"/></a>
|
||||||
|
<a href="https://github.com/ChuwuYo" title="初五"><img src="https://avatars.githubusercontent.com/u/141227996?v=4" width="42;" alt="初五"/></a>
|
||||||
<a href="https://github.com/zxx457" title="Xianxin Zeng"><img src="https://avatars.githubusercontent.com/u/114141362?v=4" width="42;" alt="Xianxin Zeng"/></a>
|
<a href="https://github.com/zxx457" title="Xianxin Zeng"><img src="https://avatars.githubusercontent.com/u/114141362?v=4" width="42;" alt="Xianxin Zeng"/></a>
|
||||||
<a href="https://github.com/zine0" title="zine yu"><img src="https://avatars.githubusercontent.com/u/46991452?v=4" width="42;" alt="zine yu"/></a>
|
|
||||||
<a href="https://github.com/zhouhw0306" title="zhouhw0306"><img src="https://avatars.githubusercontent.com/u/82752681?v=4" width="42;" alt="zhouhw0306"/></a>
|
<a href="https://github.com/zhouhw0306" title="zhouhw0306"><img src="https://avatars.githubusercontent.com/u/82752681?v=4" width="42;" alt="zhouhw0306"/></a>
|
||||||
<a href="https://github.com/hiyms" title="yms"><img src="https://avatars.githubusercontent.com/u/84654050?v=4" width="42;" alt="yms"/></a>
|
<a href="https://github.com/hiyms" title="yms"><img src="https://avatars.githubusercontent.com/u/84654050?v=4" width="42;" alt="yms"/></a>
|
||||||
<a href="https://github.com/giteeking" title="xunjian"><img src="https://avatars.githubusercontent.com/u/166626162?v=4" width="42;" alt="xunjian"/></a>
|
<a href="https://github.com/giteeking" title="xunjian"><img src="https://avatars.githubusercontent.com/u/166626162?v=4" width="42;" alt="xunjian"/></a>
|
||||||
|
63
README.md
63
README.md
@ -21,6 +21,7 @@ Quick Reference
|
|||||||
非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor)<!--rehype:target=_blank--> 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app)<!--rehype:target=_blank--> 来支持我。以下是我个人独立开发的 macOS 应用列表:
|
非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor)<!--rehype:target=_blank--> 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app)<!--rehype:target=_blank--> 来支持我。以下是我个人独立开发的 macOS 应用列表:
|
||||||
|
|
||||||
<p style="display: inline-block">
|
<p style="display: inline-block">
|
||||||
|
<a target="_blank" href="https://wangchujiang.com/mousio-hint/" title="Mousio Hint for macOS"><img align="center" alt="Mousio Hint" height="52" width="52" src="./appicon/mousio-hint.png"></a>
|
||||||
<a target="_blank" href="https://apps.apple.com/app/6746747327" title="Mousio for macOS"><img align="center" alt="Mousio" height="52" width="52" src="./appicon/mousio.png"></a>
|
<a target="_blank" href="https://apps.apple.com/app/6746747327" title="Mousio for macOS"><img align="center" alt="Mousio" height="52" width="52" src="./appicon/mousio.png"></a>
|
||||||
<a target="_blank" href="https://apps.apple.com/app/6745227444" title="Musicer for macOS"><img align="center" alt="Musicer" height="52" width="52" src="./appicon/musicer.png"></a>
|
<a target="_blank" href="https://apps.apple.com/app/6745227444" title="Musicer for macOS"><img align="center" alt="Musicer" height="52" width="52" src="./appicon/musicer.png"></a>
|
||||||
<a target="_blank" href="https://apps.apple.com/app/6743841447" title="Audioer for macOS"><img align="center" alt="Audioer" height="52" width="52" src="./appicon/audioer.png"></a>
|
<a target="_blank" href="https://apps.apple.com/app/6743841447" title="Audioer for macOS"><img align="center" alt="Audioer" height="52" width="52" src="./appicon/audioer.png"></a>
|
||||||
@ -85,14 +86,8 @@ Quick Reference
|
|||||||
[C#](./docs/cs.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->
|
[C#](./docs/cs.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->
|
||||||
[C++](./docs/cpp.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->
|
[C++](./docs/cpp.md)<!--rehype:style=background: rgb(6 147 13);&class=contributing-->
|
||||||
[Dart](./docs/dart.md)<!--rehype:style=background: rgb(64 196 255);-->
|
[Dart](./docs/dart.md)<!--rehype:style=background: rgb(64 196 255);-->
|
||||||
[Docker](./docs/docker.md)<!--rehype:style=background: rgb(72 143 223);-->
|
|
||||||
[Docker Compose](./docs/docker-compose.md)<!--rehype:style=background: rgb(72 143 223);&class=contributing tag&data-lang=Docker-->
|
|
||||||
[Dockerfile](./docs/dockerfile.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Docker-->
|
|
||||||
[Django](./docs/django.md)<!--rehype:style=background: rgb(12 75 51);&class=contributing tag&data-lang=Python-->
|
|
||||||
[Elixir](./docs/elixir.md)<!--rehype:style=background: rgb(124 26 156);&class=contributing tag&data-lang=Elixir-->
|
[Elixir](./docs/elixir.md)<!--rehype:style=background: rgb(124 26 156);&class=contributing tag&data-lang=Elixir-->
|
||||||
[Erlang](./docs/erlang.md)<!--rehype:style=background: rgb(206 55 97);&class=contributing-->
|
[Erlang](./docs/erlang.md)<!--rehype:style=background: rgb(206 55 97);&class=contributing-->
|
||||||
[Flask](./docs/flask.md)<!--rehype:style=background: rgb(210 168 255);&class=contributing tag&data-lang=Python-->
|
|
||||||
[FastAPI](./docs/fastapi.md)<!--rehype:style=background: rgb(210 168 255);&class=contributing tag&data-lang=Python-->
|
|
||||||
[Flutter](./docs/flutter.md)<!--rehype:style=background: rgb(150 220 254);&class=contributing tag&data-lang=Dart-->
|
[Flutter](./docs/flutter.md)<!--rehype:style=background: rgb(150 220 254);&class=contributing tag&data-lang=Dart-->
|
||||||
[Golang](./docs/golang.md)<!--rehype:style=background: rgb(39 160 193);-->
|
[Golang](./docs/golang.md)<!--rehype:style=background: rgb(39 160 193);-->
|
||||||
[GraphQL](./docs/graphql.md)<!--rehype:style=background: rgb(214 66 146);-->
|
[GraphQL](./docs/graphql.md)<!--rehype:style=background: rgb(214 66 146);-->
|
||||||
@ -106,7 +101,6 @@ Quick Reference
|
|||||||
[Markdown](./docs/markdown.md)<!--rehype:style=background: rgb(103 61 156);-->
|
[Markdown](./docs/markdown.md)<!--rehype:style=background: rgb(103 61 156);-->
|
||||||
[MATLAB](./docs/matlab.md)<!--rehype:style=background: rgb(0 118 168);&class=contributing-->
|
[MATLAB](./docs/matlab.md)<!--rehype:style=background: rgb(0 118 168);&class=contributing-->
|
||||||
[PHP](./docs/php.md)<!--rehype:style=background: rgb(79 91 147);-->
|
[PHP](./docs/php.md)<!--rehype:style=background: rgb(79 91 147);-->
|
||||||
[Python](./docs/python.md)<!--rehype:style=background: rgb(43 91 132);-->
|
|
||||||
[R 语言](./docs/r.md)<!--rehype:style=background: rgb(39 108 192);&class=contributing&data-info-->
|
[R 语言](./docs/r.md)<!--rehype:style=background: rgb(39 108 192);&class=contributing&data-info-->
|
||||||
[Ruby](./docs/ruby.md)<!--rehype:style=background: rgb(204 52 45);-->
|
[Ruby](./docs/ruby.md)<!--rehype:style=background: rgb(204 52 45);-->
|
||||||
[Rust](./docs/rust.md)<!--rehype:style=background: rgb(71 71 71);-->
|
[Rust](./docs/rust.md)<!--rehype:style=background: rgb(71 71 71);-->
|
||||||
@ -115,11 +109,16 @@ Quick Reference
|
|||||||
[SwiftUI](./docs/swiftui.md)<!--rehype:style=background: rgb(10 127 247);&class=tag&data-lang=swift-->
|
[SwiftUI](./docs/swiftui.md)<!--rehype:style=background: rgb(10 127 247);&class=tag&data-lang=swift-->
|
||||||
[Spring Boot](./docs/springboot.md)<!--rehype:style=background: rgb(0 149 0);&class=tag&data-lang=Java-->
|
[Spring Boot](./docs/springboot.md)<!--rehype:style=background: rgb(0 149 0);&class=tag&data-lang=Java-->
|
||||||
[Lua](./docs/lua.md)<!--rehype:style=background: rgb(3 3 128);-->
|
[Lua](./docs/lua.md)<!--rehype:style=background: rgb(3 3 128);-->
|
||||||
[Pytorch](./docs/pytorch.md)<!--rehype:style=background: rgb(238 76 44);&class=contributing tag&data-lang=Python&data-info=👆看看还缺点儿什么?-->
|
|
||||||
[Jupyter](./docs/jupyter.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Python-->
|
|
||||||
[Minio](./docs/minio.md)<!--rehype:style=background: rgb(3 3 128);-->
|
[Minio](./docs/minio.md)<!--rehype:style=background: rgb(3 3 128);-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
[Docker](./docs/docker.md)<!--rehype:style=background: rgb(72 143 223);-->
|
||||||
|
[Docker Compose](./docs/docker-compose.md)<!--rehype:style=background: rgb(72 143 223);&class=contributing tag&data-lang=Docker-->
|
||||||
|
[Dockerfile](./docs/dockerfile.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Docker-->
|
||||||
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## 配置
|
## 配置
|
||||||
|
|
||||||
[INI](./docs/ini.md)<!--rehype:style=background: rgb(57 59 60);-->
|
[INI](./docs/ini.md)<!--rehype:style=background: rgb(57 59 60);-->
|
||||||
@ -131,7 +130,6 @@ Quick Reference
|
|||||||
## 前端
|
## 前端
|
||||||
|
|
||||||
[前端导航](./docs/feds.md)<!--rehype:style=background: rgb(35 115 205);&class=tag&data-lang=导航-->
|
[前端导航](./docs/feds.md)<!--rehype:style=background: rgb(35 115 205);&class=tag&data-lang=导航-->
|
||||||
[Electron](./docs/electron.md)<!--rehype:style=background: rgb(0 72 153);-->
|
|
||||||
[Emmet](./docs/emmet.md)<!--rehype:style=background: rgb(122 203 23);-->
|
[Emmet](./docs/emmet.md)<!--rehype:style=background: rgb(122 203 23);-->
|
||||||
[ES 6](./docs/es6.md)<!--rehype:style=background: rgb(122 203 23);&class=tag&data-lang=JS-->
|
[ES 6](./docs/es6.md)<!--rehype:style=background: rgb(122 203 23);&class=tag&data-lang=JS-->
|
||||||
[HTML](./docs/html.md)<!--rehype:style=background: rgb(228 77 39);-->
|
[HTML](./docs/html.md)<!--rehype:style=background: rgb(228 77 39);-->
|
||||||
@ -142,9 +140,7 @@ Quick Reference
|
|||||||
[RxJS](./docs/rxjs.md)<!--rehype:style=background: rgb(151 0 81);-->
|
[RxJS](./docs/rxjs.md)<!--rehype:style=background: rgb(151 0 81);-->
|
||||||
[React](./docs/react.md)<!--rehype:style=background: rgb(34 143 173);-->
|
[React](./docs/react.md)<!--rehype:style=background: rgb(34 143 173);-->
|
||||||
[React Router](./docs/reactrouter.md)<!--rehype:style=background: rgb(244 66 79);&class=tag&data-lang=React-->
|
[React Router](./docs/reactrouter.md)<!--rehype:style=background: rgb(244 66 79);&class=tag&data-lang=React-->
|
||||||
[React Native](./docs/react-native.md)<!--rehype:style=background: rgb(34 143 173);&class=tag&data-lang=React-->
|
|
||||||
[TypeScript](./docs/typescript.md)<!--rehype:style=background: rgb(49 120 198);-->
|
[TypeScript](./docs/typescript.md)<!--rehype:style=background: rgb(49 120 198);-->
|
||||||
[Tauri](./docs/tauri.md)<!--rehype:style=background: rgb(103 214 237);&class=contributing-->
|
|
||||||
[Vue 2](./docs/vue2.md)<!--rehype:style=background: rgb(64 184 131);&class=tag&data-lang=Vue-->
|
[Vue 2](./docs/vue2.md)<!--rehype:style=background: rgb(64 184 131);&class=tag&data-lang=Vue-->
|
||||||
[Vue 3](./docs/vue.md)<!--rehype:style=background: rgb(64 184 131);&class=tag&class=contributing tag&data-lang=Vue-->
|
[Vue 3](./docs/vue.md)<!--rehype:style=background: rgb(64 184 131);&class=tag&class=contributing tag&data-lang=Vue-->
|
||||||
[</> htmx](./docs/htmx.md)<!--rehype:style=background: rgb(52 101 164);&class=contributing-->
|
[</> htmx](./docs/htmx.md)<!--rehype:style=background: rgb(52 101 164);&class=contributing-->
|
||||||
@ -162,6 +158,14 @@ Quick Reference
|
|||||||
[StyleX](./docs/stylex.md)<!--rehype:style=background: rgb(91 79 163);&class=tag&data-lang=CSS-->
|
[StyleX](./docs/stylex.md)<!--rehype:style=background: rgb(91 79 163);&class=tag&data-lang=CSS-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
|
## 客户端
|
||||||
|
|
||||||
|
[Electron](./docs/electron.md)<!--rehype:style=background: rgb(0 72 153);-->
|
||||||
|
[React Native](./docs/react-native.md)<!--rehype:style=background: rgb(34 143 173);&class=tag&data-lang=React-->
|
||||||
|
[Tauri](./docs/tauri.md)<!--rehype:style=background: rgb(103 214 237);&class=contributing-->
|
||||||
|
[Wails](./docs/wails.md)<!--rehype:style=background: rgb(194 106 107);&class=contributing-->
|
||||||
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## Nodejs
|
## Nodejs
|
||||||
|
|
||||||
[Express.js](./docs/expressjs.md)<!--rehype:style=background: rgb(95 151 206);-->
|
[Express.js](./docs/expressjs.md)<!--rehype:style=background: rgb(95 151 206);-->
|
||||||
@ -179,6 +183,19 @@ Quick Reference
|
|||||||
[Bun](./docs/bun.md)<!--rehype:style=background: rgb(157 49 81);-->
|
[Bun](./docs/bun.md)<!--rehype:style=background: rgb(157 49 81);-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
[Python](./docs/python.md)<!--rehype:style=background: rgb(43 91 132);-->
|
||||||
|
[Django](./docs/django.md)<!--rehype:style=background: rgb(12 75 51);&class=contributing tag&data-lang=Python-->
|
||||||
|
[Flask](./docs/flask.md)<!--rehype:style=background: rgb(210 168 255);&class=contributing tag&data-lang=Python-->
|
||||||
|
[FastAPI](./docs/fastapi.md)<!--rehype:style=background: rgb(210 168 255);&class=contributing tag&data-lang=Python-->
|
||||||
|
[Pytorch](./docs/pytorch.md)<!--rehype:style=background: rgb(238 76 44);&class=contributing tag&data-lang=Python&data-info=👆看看还缺点儿什么?-->
|
||||||
|
[Jupyter](./docs/jupyter.md)<!--rehype:style=background: rgb(0 72 153);&class=tag&data-lang=Python-->
|
||||||
|
[Conda](./docs/conda.md)<!--rehype:style=background: rgb(68 168 51);&class=tag&data-lang=Python-->
|
||||||
|
[pip](./docs/pip.md)<!--rehype:style=background: rgb(24 147 209);&class=tag contributing&data-lang=Python-->
|
||||||
|
[uv](./docs/uv.md)<!--rehype:style=background: rgb(26 35 126);&class=tag contributing&data-lang=Python-->
|
||||||
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## 命令
|
## 命令
|
||||||
|
|
||||||
[ADB, Android Debug Bridge](./docs/adb.md)<!--rehype:style=background: rgb(238 0 0);&class=contributing tag&data-lang=Android&data-info=👆看看还缺点儿什么?-->
|
[ADB, Android Debug Bridge](./docs/adb.md)<!--rehype:style=background: rgb(238 0 0);&class=contributing tag&data-lang=Android&data-info=👆看看还缺点儿什么?-->
|
||||||
@ -193,6 +210,7 @@ Quick Reference
|
|||||||
[.NET CLI](./docs/dotnet-cli.md)<!--rehype:style=background: rgb(16 185 129);&class=contributing tag&data-lang=#C-->
|
[.NET CLI](./docs/dotnet-cli.md)<!--rehype:style=background: rgb(16 185 129);&class=contributing tag&data-lang=#C-->
|
||||||
[Find](./docs/find.md)<!--rehype:style=background: rgb(16 185 129);-->
|
[Find](./docs/find.md)<!--rehype:style=background: rgb(16 185 129);-->
|
||||||
[FFmpeg](./docs/ffmpeg.md)<!--rehype:style=background: rgb(0 193 9);&class=contributing-->
|
[FFmpeg](./docs/ffmpeg.md)<!--rehype:style=background: rgb(0 193 9);&class=contributing-->
|
||||||
|
[FTP](./docs/ftp.md)<!--rehype:style=background: rgb(99 99 99);-->
|
||||||
[Gdb](./docs/gdb.md)<!--rehype:style=background: rgb(215 89 62);-->
|
[Gdb](./docs/gdb.md)<!--rehype:style=background: rgb(215 89 62);-->
|
||||||
[Glances](./docs/glances.md)<!--rehype:style=background: rgb(16 185 129);-->
|
[Glances](./docs/glances.md)<!--rehype:style=background: rgb(16 185 129);-->
|
||||||
[Grep](./docs/grep.md)<!--rehype:style=background: rgb(16 185 129);-->
|
[Grep](./docs/grep.md)<!--rehype:style=background: rgb(16 185 129);-->
|
||||||
@ -217,7 +235,6 @@ Quick Reference
|
|||||||
[tar](./docs/tar.md)<!--rehype:style=background: rgb(215 89 62);&class=tag&data-lang=解压缩-->
|
[tar](./docs/tar.md)<!--rehype:style=background: rgb(215 89 62);&class=tag&data-lang=解压缩-->
|
||||||
[Yazi](./docs/yazi.md)<!--rehype:style=background: rgb(255 165 0);&class=tag&data-lang=文件管理器;&class=contributing-->
|
[Yazi](./docs/yazi.md)<!--rehype:style=background: rgb(255 165 0);&class=tag&data-lang=文件管理器;&class=contributing-->
|
||||||
[Zip](./docs/zip.md)<!--rehype:style=background: rgb(99 99 99);&class=tag&data-lang=解压缩-->
|
[Zip](./docs/zip.md)<!--rehype:style=background: rgb(99 99 99);&class=tag&data-lang=解压缩-->
|
||||||
[FTP](./docs/ftp.md)<!--rehype:style=background: rgb(99 99 99);-->
|
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
|
|
||||||
## 工具
|
## 工具
|
||||||
@ -237,12 +254,10 @@ Quick Reference
|
|||||||
|
|
||||||
[APT](./docs/apt.md)<!--rehype:style=background: rgb(30 144 255);-->
|
[APT](./docs/apt.md)<!--rehype:style=background: rgb(30 144 255);-->
|
||||||
[Conan](./docs/conan.md)<!--rehype:style=background: rgb(0 193 9);&class=tag&data-lang=C/C++-->
|
[Conan](./docs/conan.md)<!--rehype:style=background: rgb(0 193 9);&class=tag&data-lang=C/C++-->
|
||||||
[Conda](./docs/conda.md)<!--rehype:style=background: rgb(68 168 51);&class=tag&data-lang=Python-->
|
|
||||||
[CocoaPods](./docs/cocoapods.md)<!--rehype:style=background: rgb(251 0 6);&class=tag&data-lang=C/C++-->
|
[CocoaPods](./docs/cocoapods.md)<!--rehype:style=background: rgb(251 0 6);&class=tag&data-lang=C/C++-->
|
||||||
[Cargo](./docs/cargo.md)<!--rehype:style=background: rgb(71 71 71);&class=tag&data-lang=Rust-->
|
[Cargo](./docs/cargo.md)<!--rehype:style=background: rgb(71 71 71);&class=tag&data-lang=Rust-->
|
||||||
[Homebrew](./docs/homebrew.md)<!--rehype:style=background: rgb(252 185 87);&class=tag&data-lang=macOS-->
|
[Homebrew](./docs/homebrew.md)<!--rehype:style=background: rgb(252 185 87);&class=tag&data-lang=macOS-->
|
||||||
[Pacman](./docs/pacman.md)<!--rehype:style=background: rgb(24 147 209);&class=tag&data-lang=archlinux&class=contributing-->
|
[Pacman](./docs/pacman.md)<!--rehype:style=background: rgb(24 147 209);&class=tag contributing&data-lang=Linux-->
|
||||||
[pip](./docs/pip.md)<!--rehype:style=background: rgb(24 147 209);&class=tag&data-lang=Python&class=contributing-->
|
|
||||||
[YUM](./docs/yum.md)<!--rehype:style=background: rgb(86 86 123);-->
|
[YUM](./docs/yum.md)<!--rehype:style=background: rgb(86 86 123);-->
|
||||||
[SDKMAN](./docs/sdkman.md)<!--rehype:style=background: rgb(0 118 198);-->
|
[SDKMAN](./docs/sdkman.md)<!--rehype:style=background: rgb(0 118 198);-->
|
||||||
<!--rehype:class=home-card-->
|
<!--rehype:class=home-card-->
|
||||||
@ -352,7 +367,7 @@ Quick Reference
|
|||||||
<a href="https://github.com/qyl27" title="雨落"><img src="https://avatars.githubusercontent.com/u/53731501?v=4" width="42;" alt="雨落"/></a>
|
<a href="https://github.com/qyl27" title="雨落"><img src="https://avatars.githubusercontent.com/u/53731501?v=4" width="42;" alt="雨落"/></a>
|
||||||
<a href="https://github.com/MackDing" title="Blossom"><img src="https://avatars.githubusercontent.com/u/19878893?v=4" width="42;" alt="Blossom"/></a>
|
<a href="https://github.com/MackDing" title="Blossom"><img src="https://avatars.githubusercontent.com/u/19878893?v=4" width="42;" alt="Blossom"/></a>
|
||||||
<a href="https://github.com/1250422131" title="萌新杰少"><img src="https://avatars.githubusercontent.com/u/52126790?v=4" width="42;" alt="萌新杰少"/></a>
|
<a href="https://github.com/1250422131" title="萌新杰少"><img src="https://avatars.githubusercontent.com/u/52126790?v=4" width="42;" alt="萌新杰少"/></a>
|
||||||
<a href="https://github.com/richuff" title="richuff"><img src="https://avatars.githubusercontent.com/u/162144087?v=4" width="42;" alt="richuff"/></a>
|
<a href="https://github.com/zine0" title="zine yu"><img src="https://avatars.githubusercontent.com/u/46991452?v=4" width="42;" alt="zine yu"/></a>
|
||||||
<a href="https://github.com/Harris-H" title="Hao He"><img src="https://avatars.githubusercontent.com/u/57698783?v=4" width="42;" alt="Hao He"/></a>
|
<a href="https://github.com/Harris-H" title="Hao He"><img src="https://avatars.githubusercontent.com/u/57698783?v=4" width="42;" alt="Hao He"/></a>
|
||||||
<a href="https://github.com/LiuYuan-SHU" title="Yuan Liu"><img src="https://avatars.githubusercontent.com/u/96400967?v=4" width="42;" alt="Yuan Liu"/></a>
|
<a href="https://github.com/LiuYuan-SHU" title="Yuan Liu"><img src="https://avatars.githubusercontent.com/u/96400967?v=4" width="42;" alt="Yuan Liu"/></a>
|
||||||
<a href="https://github.com/long-910" title="Small Long"><img src="https://avatars.githubusercontent.com/u/7323488?v=4" width="42;" alt="Small Long"/></a>
|
<a href="https://github.com/long-910" title="Small Long"><img src="https://avatars.githubusercontent.com/u/7323488?v=4" width="42;" alt="Small Long"/></a>
|
||||||
@ -360,10 +375,11 @@ Quick Reference
|
|||||||
<a href="https://github.com/xia0ne" title="YuRuiH"><img src="https://avatars.githubusercontent.com/u/32591223?v=4" width="42;" alt="YuRuiH"/></a>
|
<a href="https://github.com/xia0ne" title="YuRuiH"><img src="https://avatars.githubusercontent.com/u/32591223?v=4" width="42;" alt="YuRuiH"/></a>
|
||||||
<a href="https://github.com/chaos-cn" title="chaos"><img src="https://avatars.githubusercontent.com/u/71205599?v=4" width="42;" alt="chaos"/></a>
|
<a href="https://github.com/chaos-cn" title="chaos"><img src="https://avatars.githubusercontent.com/u/71205599?v=4" width="42;" alt="chaos"/></a>
|
||||||
<a href="https://github.com/QinIndexCode" title="fault"><img src="https://avatars.githubusercontent.com/u/177287013?v=4" width="42;" alt="fault"/></a>
|
<a href="https://github.com/QinIndexCode" title="fault"><img src="https://avatars.githubusercontent.com/u/177287013?v=4" width="42;" alt="fault"/></a>
|
||||||
<a href="https://github.com/wsypower" title="魏"><img src="https://avatars.githubusercontent.com/u/31298317?v=4" width="42;" alt="魏"/></a>
|
<a href="https://github.com/richuff" title="richuff"><img src="https://avatars.githubusercontent.com/u/162144087?v=4" width="42;" alt="richuff"/></a>
|
||||||
<a href="https://github.com/wangdaodao" title="王叨叨"><img src="https://avatars.githubusercontent.com/u/2317442?v=4" width="42;" alt="王叨叨"/></a>
|
<a href="https://github.com/wangdaodao" title="王叨叨"><img src="https://avatars.githubusercontent.com/u/2317442?v=4" width="42;" alt="王叨叨"/></a>
|
||||||
<a href="https://github.com/itldg" title="老大哥"><img src="https://avatars.githubusercontent.com/u/13432299?v=4" width="42;" alt="老大哥"/></a>
|
<a href="https://github.com/wsypower" title="魏"><img src="https://avatars.githubusercontent.com/u/31298317?v=4" width="42;" alt="魏"/></a>
|
||||||
<a href="https://github.com/buyfakett" title="buyfakett"><img src="https://avatars.githubusercontent.com/u/46560426?v=4" width="42;" alt="buyfakett"/></a>
|
<a href="https://github.com/buyfakett" title="buyfakett"><img src="https://avatars.githubusercontent.com/u/46560426?v=4" width="42;" alt="buyfakett"/></a>
|
||||||
|
<a href="https://github.com/itldg" title="老大哥"><img src="https://avatars.githubusercontent.com/u/13432299?v=4" width="42;" alt="老大哥"/></a>
|
||||||
<a href="https://github.com/catcto" title="小武Alan"><img src="https://avatars.githubusercontent.com/u/5467932?v=4" width="42;" alt="小武Alan"/></a>
|
<a href="https://github.com/catcto" title="小武Alan"><img src="https://avatars.githubusercontent.com/u/5467932?v=4" width="42;" alt="小武Alan"/></a>
|
||||||
<a href="https://github.com/witt-bit" title="witt"><img src="https://avatars.githubusercontent.com/u/52407727?v=4" width="42;" alt="witt"/></a>
|
<a href="https://github.com/witt-bit" title="witt"><img src="https://avatars.githubusercontent.com/u/52407727?v=4" width="42;" alt="witt"/></a>
|
||||||
<a href="https://github.com/ryanhex53" title="ryanhex53"><img src="https://avatars.githubusercontent.com/u/360426?v=4" width="42;" alt="ryanhex53"/></a>
|
<a href="https://github.com/ryanhex53" title="ryanhex53"><img src="https://avatars.githubusercontent.com/u/360426?v=4" width="42;" alt="ryanhex53"/></a>
|
||||||
@ -408,7 +424,7 @@ Quick Reference
|
|||||||
<a href="https://github.com/godot42x" title="godot42"><img src="https://avatars.githubusercontent.com/u/79260851?v=4" width="42;" alt="godot42"/></a>
|
<a href="https://github.com/godot42x" title="godot42"><img src="https://avatars.githubusercontent.com/u/79260851?v=4" width="42;" alt="godot42"/></a>
|
||||||
<a href="https://github.com/gi-b716" title="Gavin"><img src="https://avatars.githubusercontent.com/u/78394473?v=4" width="42;" alt="Gavin"/></a>
|
<a href="https://github.com/gi-b716" title="Gavin"><img src="https://avatars.githubusercontent.com/u/78394473?v=4" width="42;" alt="Gavin"/></a>
|
||||||
<a href="https://github.com/fjqz177" title="fjqz177"><img src="https://avatars.githubusercontent.com/u/83070583?v=4" width="42;" alt="fjqz177"/></a>
|
<a href="https://github.com/fjqz177" title="fjqz177"><img src="https://avatars.githubusercontent.com/u/83070583?v=4" width="42;" alt="fjqz177"/></a>
|
||||||
<a href="https://github.com/fenglielie" title="fenglielie"><img src="https://avatars.githubusercontent.com/u/51266402?v=4" width="42;" alt="fenglielie"/></a>
|
<a href="https://github.com/fenglielie" title="fenglielie (风猎猎)"><img src="https://avatars.githubusercontent.com/u/51266402?v=4" width="42;" alt="fenglielie (风猎猎)"/></a>
|
||||||
<a href="https://github.com/fakevn" title="fakevn"><img src="https://avatars.githubusercontent.com/u/11464386?v=4" width="42;" alt="fakevn"/></a>
|
<a href="https://github.com/fakevn" title="fakevn"><img src="https://avatars.githubusercontent.com/u/11464386?v=4" width="42;" alt="fakevn"/></a>
|
||||||
<a href="https://github.com/emoji-share" title="emoji-share🤪"><img src="https://avatars.githubusercontent.com/u/192275245?v=4" width="42;" alt="emoji-share🤪"/></a>
|
<a href="https://github.com/emoji-share" title="emoji-share🤪"><img src="https://avatars.githubusercontent.com/u/192275245?v=4" width="42;" alt="emoji-share🤪"/></a>
|
||||||
<a href="https://github.com/cool9203" title="cool9203"><img src="https://avatars.githubusercontent.com/u/29609607?v=4" width="42;" alt="cool9203"/></a>
|
<a href="https://github.com/cool9203" title="cool9203"><img src="https://avatars.githubusercontent.com/u/29609607?v=4" width="42;" alt="cool9203"/></a>
|
||||||
@ -428,8 +444,8 @@ Quick Reference
|
|||||||
<a href="https://github.com/LuckyJie12" title="夜未央"><img src="https://avatars.githubusercontent.com/u/102901105?v=4" width="42;" alt="夜未央"/></a>
|
<a href="https://github.com/LuckyJie12" title="夜未央"><img src="https://avatars.githubusercontent.com/u/102901105?v=4" width="42;" alt="夜未央"/></a>
|
||||||
<a href="https://github.com/kele527" title="吹衣轻飏"><img src="https://avatars.githubusercontent.com/u/345445?v=4" width="42;" alt="吹衣轻飏"/></a>
|
<a href="https://github.com/kele527" title="吹衣轻飏"><img src="https://avatars.githubusercontent.com/u/345445?v=4" width="42;" alt="吹衣轻飏"/></a>
|
||||||
<a href="https://github.com/lvzhenbo" title="无聊波波"><img src="https://avatars.githubusercontent.com/u/32427677?v=4" width="42;" alt="无聊波波"/></a>
|
<a href="https://github.com/lvzhenbo" title="无聊波波"><img src="https://avatars.githubusercontent.com/u/32427677?v=4" width="42;" alt="无聊波波"/></a>
|
||||||
|
<a href="https://github.com/ChuwuYo" title="初五"><img src="https://avatars.githubusercontent.com/u/141227996?v=4" width="42;" alt="初五"/></a>
|
||||||
<a href="https://github.com/zxx457" title="Xianxin Zeng"><img src="https://avatars.githubusercontent.com/u/114141362?v=4" width="42;" alt="Xianxin Zeng"/></a>
|
<a href="https://github.com/zxx457" title="Xianxin Zeng"><img src="https://avatars.githubusercontent.com/u/114141362?v=4" width="42;" alt="Xianxin Zeng"/></a>
|
||||||
<a href="https://github.com/zine0" title="zine yu"><img src="https://avatars.githubusercontent.com/u/46991452?v=4" width="42;" alt="zine yu"/></a>
|
|
||||||
<a href="https://github.com/zhouhw0306" title="zhouhw0306"><img src="https://avatars.githubusercontent.com/u/82752681?v=4" width="42;" alt="zhouhw0306"/></a>
|
<a href="https://github.com/zhouhw0306" title="zhouhw0306"><img src="https://avatars.githubusercontent.com/u/82752681?v=4" width="42;" alt="zhouhw0306"/></a>
|
||||||
<a href="https://github.com/hiyms" title="yms"><img src="https://avatars.githubusercontent.com/u/84654050?v=4" width="42;" alt="yms"/></a>
|
<a href="https://github.com/hiyms" title="yms"><img src="https://avatars.githubusercontent.com/u/84654050?v=4" width="42;" alt="yms"/></a>
|
||||||
<a href="https://github.com/giteeking" title="xunjian"><img src="https://avatars.githubusercontent.com/u/166626162?v=4" width="42;" alt="xunjian"/></a>
|
<a href="https://github.com/giteeking" title="xunjian"><img src="https://avatars.githubusercontent.com/u/166626162?v=4" width="42;" alt="xunjian"/></a>
|
||||||
@ -583,7 +599,7 @@ Quick Reference
|
|||||||
[gistudy.net](https://reference.gistudy.net/)<!--rehype:target=_blank-->
|
[gistudy.net](https://reference.gistudy.net/)<!--rehype:target=_blank-->
|
||||||
[deyout.com](https://ref.deyout.com)<!--rehype:target=_blank-->
|
[deyout.com](https://ref.deyout.com)<!--rehype:target=_blank-->
|
||||||
[const.team](https://reference.const.team)<!--rehype:target=_blank-->
|
[const.team](https://reference.const.team)<!--rehype:target=_blank-->
|
||||||
[liamng.top](https://refer.liamng.top/)<!--rehype:target=_blank-->
|
[liamng.de](https://refer.liamng.de)<!--rehype:target=_blank-->
|
||||||
[zcsk18.cn](https://reference.zcsk18.cn/)<!--rehype:target=_blank-->
|
[zcsk18.cn](https://reference.zcsk18.cn/)<!--rehype:target=_blank-->
|
||||||
[hhxyrk.icu](http://hhxy.hhxyrk.icu/)<!--rehype:target=_blank-->
|
[hhxyrk.icu](http://hhxy.hhxyrk.icu/)<!--rehype:target=_blank-->
|
||||||
[vhcffh.com](https://docs.vhcffh.com)<!--rehype:target=_blank-->
|
[vhcffh.com](https://docs.vhcffh.com)<!--rehype:target=_blank-->
|
||||||
@ -602,6 +618,9 @@ Quick Reference
|
|||||||
[ecdata.cn](http://ref.ecdata.cn)<!--rehype:target=_blank-->
|
[ecdata.cn](http://ref.ecdata.cn)<!--rehype:target=_blank-->
|
||||||
[cnxiaobai.com](https://quickref.cnxiaobai.com)<!--rehype:target=_blank-->
|
[cnxiaobai.com](https://quickref.cnxiaobai.com)<!--rehype:target=_blank-->
|
||||||
[web.app](https://reference-f1cf1.web.app)<!--rehype:target=_blank-->
|
[web.app](https://reference-f1cf1.web.app)<!--rehype:target=_blank-->
|
||||||
|
[OneNAS.space](https://ref.onenas.space)<!--rehype:target=_blank-->
|
||||||
|
[leonus.cn](https://ref.leonus.cn/)<!--rehype:target=_blank-->
|
||||||
|
[taotaome.com](http://www.taotaome.com/)<!--rehype:target=_blank-->
|
||||||
<!--rehype:class=home-card home-links-->
|
<!--rehype:class=home-card home-links-->
|
||||||
|
|
||||||
下面网站暂时飞走了
|
下面网站暂时飞走了
|
||||||
|
BIN
appicon/mousio-hint.png
Executable file
BIN
appicon/mousio-hint.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
3
assets/uv.svg
Normal file
3
assets/uv.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M-5.28619e-06 0.168629L0.0843098 20.1685L0.151762 36.1683C0.161075 38.3774 1.95947 40.1607 4.16859 40.1514L20.1684 40.084L30.1684 40.0418L31.1852 40.0375C33.3877 40.0282 35.1683 38.2026 35.1683 36V36L37.0003 36L37.0003 39.9992L40.1683 39.9996L39.9996 -9.94653e-07L21.5998 0.0775689L21.6774 16.0185L21.6774 25.9998L20.0774 25.9998L18.3998 25.9998L18.4774 16.032L18.3998 0.0910593L-5.28619e-06 0.168629Z" fill="currentColor" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 537 B |
41
assets/wails.svg
Normal file
41
assets/wails.svg
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="43px" height="25px" viewBox="0 0 43 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<title>wails</title>
|
||||||
|
<defs>
|
||||||
|
<linearGradient x1="-0.2%" y1="49.9996942%" x2="99.8%" y2="49.9996942%" id="linearGradient-1">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="57.4612403%" y1="49.999806%" x2="105.910853%" y2="49.999806%" id="linearGradient-2">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="37.15%" y1="49.9997381%" x2="137.15%" y2="49.9997381%" id="linearGradient-3">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="112.55%" y1="91.3957%" x2="32.3601%" y2="31.6497%" id="linearGradient-4">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="11.95%" y1="49.9998072%" x2="111.95%" y2="49.9998072%" id="linearGradient-5">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient x1="25.85%" y1="50.0000968%" x2="125.85%" y2="50.0000968%" id="linearGradient-6">
|
||||||
|
<stop stop-color="#E33232" offset="0%"></stop>
|
||||||
|
<stop stop-color="#6B000D" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="wails" transform="translate(-2, -16)">
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-1)" fill-rule="nonzero" transform="translate(7.0309, 29.4785) scale(-1, 1) rotate(1.5717) translate(-7.0309, -29.4785)" points="11.9494683 28.4327958 2.11242576 30.5241355 3.85520888 28.6651669"></polygon>
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-2)" fill-rule="nonzero" transform="translate(36.5284, 31.0714) scale(-1, 1) rotate(-8.5836) translate(-36.5284, -31.0714)" points="45.1336155 28.6949336 37.2037952 36.9916435 27.9231538 35.590792 37.9375746 32.7974273 30.7582105 31.7134351 40.7726313 28.9200704 33.6016056 27.8360782 43.2241214 25.1511127"></polygon>
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-3)" fill-rule="nonzero" transform="translate(26.7683, 36.8365) scale(-1, 1) rotate(-54.8194) translate(-26.7683, -36.8365)" points="31.562747 36.2208083 28.8692495 35.9745456 27.514805 43.5625128 20.0037949 32.9116542 28.8230753 30.1104168 33.532848 30.1104168"></polygon>
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-4)" fill-rule="nonzero" transform="translate(25.014, 20.7986) scale(-1, 1) rotate(128.5441) translate(-25.014, -20.7986)" points="21.9947129 16.4027699 26.1092974 16.4027699 27.4413571 19.4221053 28.0333837 25.1943641"></polygon>
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-5)" fill-rule="nonzero" transform="translate(36.3109, 20.727) scale(-1, 1) rotate(-14.7678) translate(-36.3109, -20.727)" points="38.8713907 20.875032 39.5522206 22.562306 33.0695361 18.8917449"></polygon>
|
||||||
|
<polygon id="Path" fill="#FFFFFF" transform="translate(23.7731, 24.2307) rotate(-70.4489) translate(-23.7731, -24.2307)" points="23.1059371 22.8465329 24.9921646 25.6148058 22.5539813 23.7394335"></polygon>
|
||||||
|
<polygon id="Path" fill="url(#linearGradient-6)" fill-rule="nonzero" transform="translate(21.3064, 24.9941) scale(-1, 1) rotate(-6.2086) translate(-21.3064, -24.9941)" points="19.70206 25.0327874 20.4365745 24.298273 35.7067436 25.4580326 32.0341713 28.4347491 22.8720698 27.6229174 19.70206 30.2130473 29.8692865 32.493908 26.4286662 35.2773312 17.3052234 32.1846388 13.7872857 26.2698644 6.90604496 14.7109263"></polygon>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.0 KiB |
@ -209,7 +209,7 @@ attrib命令可以列出或修改磁盘上文件的属性,
|
|||||||
`cliconfg` | SQL SERVER 客户端网络实用工具
|
`cliconfg` | SQL SERVER 客户端网络实用工具
|
||||||
`cmstp` | 连接管理器配置文件安装程序
|
`cmstp` | 连接管理器配置文件安装程序
|
||||||
`compmgmt.msc` | 计算机管理
|
`compmgmt.msc` | 计算机管理
|
||||||
`omexp.msc` | 打开系统组件服务
|
`comexp.msc` | 打开系统组件服务
|
||||||
`control` | 控制面版
|
`control` | 控制面版
|
||||||
|
|
||||||
### 启动程序(二)
|
### 启动程序(二)
|
||||||
|
89
docs/java.md
89
docs/java.md
@ -351,7 +351,7 @@ for (int a: arr) {
|
|||||||
```java
|
```java
|
||||||
int[][] matrix = {{1, 2, 3}, {4, 5}, {6}};
|
int[][] matrix = {{1, 2, 3}, {4, 5}, {6}};
|
||||||
int x = matrix[1][0]; // 4
|
int x = matrix[1][0]; // 4
|
||||||
System.out.Println(Arrays.deepToString(matrix));
|
System.out.println(Arrays.deepToString(matrix));
|
||||||
// 输出: [[1, 2, 3], [4, 5], [6]]
|
// 输出: [[1, 2, 3], [4, 5], [6]]
|
||||||
for (int i = 0; i < matrix.length; ++i) {
|
for (int i = 0; i < matrix.length; ++i) {
|
||||||
for(int j = 0; j < matrix[i].length; ++j) {
|
for(int j = 0; j < matrix[i].length; ++j) {
|
||||||
@ -622,7 +622,7 @@ public class Dog {
|
|||||||
public void Say() {
|
public void Say() {
|
||||||
// 局部变量
|
// 局部变量
|
||||||
String sentence = "hello";
|
String sentence = "hello";
|
||||||
System.out.Println(sentence);
|
System.out.println(sentence);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -649,7 +649,7 @@ public Animal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void eat() {
|
public void eat() {
|
||||||
System.out.Println("eat something");
|
System.out.println("eat something");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -752,6 +752,89 @@ public class Overloading {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Java 抽象类
|
||||||
|
|
||||||
|
抽象类不能被实例化为对象,因此,抽象类必须被继承才能够使用
|
||||||
|
抽象类使用abstract 关键字进行修饰
|
||||||
|
|
||||||
|
```java
|
||||||
|
public abstract class Animal {
|
||||||
|
String name;
|
||||||
|
|
||||||
|
public Animal(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Dog extends Animal {
|
||||||
|
public Dog(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
使用abstract 关键字修饰的方法是抽象方法
|
||||||
|
抽象方法必须包含在抽象类中
|
||||||
|
子类必须重写父类中的所有抽象方法,除非子类也是抽象类
|
||||||
|
|
||||||
|
```java
|
||||||
|
public abstract class Animal {
|
||||||
|
String name;
|
||||||
|
|
||||||
|
public Animal(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void Say();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Dog extends Animal {
|
||||||
|
public Dog(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Say(){
|
||||||
|
System.out.println("Dog");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Java 接口
|
||||||
|
|
||||||
|
#### 接口的定义
|
||||||
|
|
||||||
|
与类的继承不同,接口可以继承多个接口
|
||||||
|
|
||||||
|
```java
|
||||||
|
[可见度] interface 接口名称 [extends 其他的接口名] {
|
||||||
|
// 声明变量
|
||||||
|
// 抽象方法
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 接口的实现
|
||||||
|
|
||||||
|
一个类可以实现多个接口
|
||||||
|
类必须实现接口的所有方法,除非该类是抽象类
|
||||||
|
|
||||||
|
```java
|
||||||
|
public interface Animal {
|
||||||
|
public void eat();
|
||||||
|
public void say();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Dog implements Animal {
|
||||||
|
public void eat() {
|
||||||
|
System.out.println("Dog eat something");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void say() {
|
||||||
|
System.out.println("Dog say something");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Java 多线程
|
Java 多线程
|
||||||
---
|
---
|
||||||
|
|
||||||
|
123
docs/uv.md
Normal file
123
docs/uv.md
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
uv 备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
一个用 Rust 编写的极快的 Python 包和项目管理工具
|
||||||
|
|
||||||
|
安装
|
||||||
|
---
|
||||||
|
|
||||||
|
### 使用独立安装程序安装
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
#### macOS or Linux
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
|
||||||
|
```sh
|
||||||
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 通过PyPI
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# pip
|
||||||
|
pip install uv
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# pipx
|
||||||
|
pipx install uv
|
||||||
|
```
|
||||||
|
|
||||||
|
入门
|
||||||
|
---
|
||||||
|
|
||||||
|
### 创建新项目
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
```sh
|
||||||
|
# 创建一个目录作为项目的根目录
|
||||||
|
uv init project_name
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 将当前目录作为项目的根目录
|
||||||
|
uv init
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 项目的结构
|
||||||
|
|
||||||
|
```sh
|
||||||
|
.
|
||||||
|
├── .venv/ # 虚拟环境目录
|
||||||
|
│ ├── bin/ # 可执行文件
|
||||||
|
│ ├── lib/ # 安装的库
|
||||||
|
│ └── pyvenv.cfg # 虚拟环境配置
|
||||||
|
├── .python-version # 指定 Python 版本
|
||||||
|
├── README.md # 项目说明文档
|
||||||
|
├── main.py # 主程序入口
|
||||||
|
├── pyproject.toml # 项目配置与依赖声明
|
||||||
|
└── uv.lock # 依赖锁定文件(自动生成)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 管理项目依赖
|
||||||
|
<!--rehype:wrap-class=row-span-2-->
|
||||||
|
|
||||||
|
#### 添加依赖
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv add requests
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 指定依赖版本或替代来源
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 指定版本
|
||||||
|
uv add 'requests==2.28.1'
|
||||||
|
|
||||||
|
# 指定来源
|
||||||
|
uv add git+https://github.com/psf/requests
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 从`requirements.txt`迁移
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv add -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 删除一个包
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv remove requests
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 升级一个包
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv lock --upgrade-package requests
|
||||||
|
```
|
||||||
|
|
||||||
|
### 运行脚本
|
||||||
|
|
||||||
|
指定脚本运行
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv run main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
指定Python版本运行
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv run --python 3.10 main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### 构建项目
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv build
|
||||||
|
```
|
||||||
|
|
||||||
|
构建结果存储在`dist`目录下
|
438
docs/wails.md
Normal file
438
docs/wails.md
Normal file
@ -0,0 +1,438 @@
|
|||||||
|
Wails V2 备忘清单
|
||||||
|
===
|
||||||
|
|
||||||
|
[](https://github.com/wailsapp/wails) [](https://github.com/wailsapp/wails/releases/latest) [](https://pkg.go.dev/github.com/wailsapp/wails/v2)
|
||||||
|
|
||||||
|
Wails 是一个基于 Go 和现代 Web 技术(如 Vue、React)构建跨平台桌面应用的轻量级开源框架,可作为 Electron 的替代方案,以下是 Wails v2 的常用命令和示例速查(v3 仍在开发中)。
|
||||||
|
|
||||||
|
<!--rehype:style=padding-top: 12px;-->
|
||||||
|
|
||||||
|
## 命令行工具 (CLI)
|
||||||
|
|
||||||
|
### 安装与更新
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 安装 Wails CLI
|
||||||
|
$ go install github.com/wailsapp/wails/v2/cmd/wails@latest
|
||||||
|
|
||||||
|
# 更新到最新稳定版
|
||||||
|
$ wails update
|
||||||
|
# 更新到最新预发布版
|
||||||
|
$ wails update -pre
|
||||||
|
```
|
||||||
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
### 常用命令参数
|
||||||
|
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||||||
|
|
||||||
|
| 命令 | 参数 | 描述 |
|
||||||
|
| ------- | ----------------------- | ---------------------------------------------------------- |
|
||||||
|
| `init` | `-n` | **项目名称 (必填)** |
|
||||||
|
| | `-t` | 模板名称 (`vue`, `react`) 或模板 URL |
|
||||||
|
| | `-ide` | 为 `vscode` 或 `goland` 生成 IDE 配置 |
|
||||||
|
| `dev` | `-browser` | 在浏览器中打开前端界面进行调试 |
|
||||||
|
| | `-assetdir` | 指定前端资产目录的路径 |
|
||||||
|
| | `-frontenddevserverurl` | 使用外部前端开发服务器的 URL |
|
||||||
|
| | `-wailsjsdir` | 指定生成的 Wails JS 模块目录 |
|
||||||
|
| `build` | `-platform` | 交叉编译目标平台, 如 `darwin/arm64` |
|
||||||
|
| | `-clean` | 构建前清理 `build/bin` 目录 |
|
||||||
|
| | `-upx` | 使用 UPX 压缩最终的二进制文件 |
|
||||||
|
| | `-nsis` | (Windows) 生成 NSIS 安装程序 |
|
||||||
|
| | `-webview2` | (Windows) WebView2 依赖处理策略 (`download`, `embed`, `browser`) |
|
||||||
|
| | `-debug` | 保留调试信息 |
|
||||||
|
| | `-devtools` | 在生产版本中启用开发者工具 |
|
||||||
|
<!--rehype:className=wrap-text left-align-->
|
||||||
|
|
||||||
|
### 项目命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 初始化新项目 (以 Vue 模板为例)
|
||||||
|
$ wails init -n my-project -t vue
|
||||||
|
|
||||||
|
# 进入项目目录并启动实时开发
|
||||||
|
$ cd my-project
|
||||||
|
$ wails dev
|
||||||
|
|
||||||
|
# 构建生产版本 (以 Windows 平台为例)
|
||||||
|
$ wails build -platform windows/amd64 -clean -upx
|
||||||
|
# 检查环境依赖
|
||||||
|
$ wails doctor
|
||||||
|
```
|
||||||
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
## 项目配置
|
||||||
|
|
||||||
|
### 项目结构
|
||||||
|
|
||||||
|
```shell
|
||||||
|
my-project/
|
||||||
|
├── build/ # 构建输出目录
|
||||||
|
├── frontend/ # 前端源文件
|
||||||
|
│ └── wailsjs/ # Wails 自动生成的模块
|
||||||
|
├── app.go # 应用核心逻辑
|
||||||
|
├── main.go # 应用入口
|
||||||
|
├── go.mod
|
||||||
|
└── wails.json # 项目配置文件
|
||||||
|
```
|
||||||
|
|
||||||
|
### `wails.json` 详解
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
| 配置项 | 描述 | 示例 |
|
||||||
|
| ---------------------- | ---------------------------- | --------------------------- |
|
||||||
|
| `name` | 项目名称 | `"my-app"` |
|
||||||
|
| `outputfilename` | 输出的二进制文件名 | `"my-app.exe"` |
|
||||||
|
| `frontend:install` | 前端依赖安装命令 | `"npm install"` |
|
||||||
|
| `frontend:build` | 前端构建命令 | `"npm run build"` |
|
||||||
|
| `frontend:dev:watcher` | 开发模式下运行的前端监视命令 | `"npm run dev"` |
|
||||||
|
| `wailsjsdir` | 生成 JS 模块的目录 | `"./frontend/wailsjs"` |
|
||||||
|
| `author.name` | 作者名称,用于打包元数据 | `"Your Name"` |
|
||||||
|
| `info` | (macOS) 用于 `Info.plist` 的元数据 | `{"CFBundleName": "MyApp"}` |
|
||||||
|
<!--rehype:className=wrap-text left-align-->
|
||||||
|
|
||||||
|
## 核心交互与生命周期
|
||||||
|
|
||||||
|
### 方法绑定 (Go <-> JS)
|
||||||
|
|
||||||
|
在 Go 中定义公共方法,即可在前端直接调用。
|
||||||
|
|
||||||
|
```go
|
||||||
|
// app.go
|
||||||
|
type App struct {
|
||||||
|
ctx context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *App) Greet(name string) string {
|
||||||
|
return fmt.Sprintf("Hello %s!", name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// main.go
|
||||||
|
app := NewApp()
|
||||||
|
err := wails.Run(&options.App{
|
||||||
|
Title: "My App",
|
||||||
|
Bind: []interface{}{
|
||||||
|
app, // 暴露 app 实例的所有公共方法
|
||||||
|
},
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// frontend/main.js
|
||||||
|
import { Greet } from '../wailsjs/go/main/App';
|
||||||
|
|
||||||
|
Greet("World").then(result => console.log(result));
|
||||||
|
```
|
||||||
|
|
||||||
|
### 事件系统 (Events)
|
||||||
|
|
||||||
|
用于在 Go 和前端之间异步发送和监听消息。
|
||||||
|
|
||||||
|
#### Go 端 (`runtime.Events*`)
|
||||||
|
|
||||||
|
```go
|
||||||
|
import "github.com/wailsapp/wails/v2/pkg/runtime"
|
||||||
|
|
||||||
|
// 发送事件到前端
|
||||||
|
runtime.EventsEmit(app.ctx, "go-event", "data from Go")
|
||||||
|
|
||||||
|
// 监听来自前端的事件
|
||||||
|
runtime.EventsOn(app.ctx, "js-event", func(optionalData ...interface{}) {
|
||||||
|
// ... 处理数据
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
#### JavaScript 端 (`runtime.Events*`)
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { EventsOn, EventsEmit } from '../wailsjs/runtime';
|
||||||
|
|
||||||
|
// 发送事件到 Go
|
||||||
|
EventsEmit("js-event", { "payload": 123 });
|
||||||
|
|
||||||
|
// 监听来自 Go 的事件
|
||||||
|
EventsOn("go-event", (data) => {
|
||||||
|
console.log("Received data from Go:", data);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### 应用生命周期钩子
|
||||||
|
|
||||||
|
在 `wails.Run()` 中定义,用于在应用关键节点执行 Go 代码。
|
||||||
|
|
||||||
|
```go
|
||||||
|
// main.go
|
||||||
|
err := wails.Run(&options.App{
|
||||||
|
// ...
|
||||||
|
OnStartup: app.startup,
|
||||||
|
OnDomReady: app.domReady,
|
||||||
|
OnShutdown: app.shutdown,
|
||||||
|
|
||||||
|
// 返回 bool 值决定是否关闭
|
||||||
|
OnBeforeClose: app.beforeClose,
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
| 钩子 | 描述 |
|
||||||
|
| --------------- | ------------------------- |
|
||||||
|
| `OnStartup` | 应用启动时,在窗口创建前调用 |
|
||||||
|
| `OnDomReady` | 前端 DOM 加载完成后调用 |
|
||||||
|
| `OnShutdown` | 应用关闭前,在窗口销毁后调用 |
|
||||||
|
| `OnBeforeClose` | 用户关闭窗口时调用,返回 `true` 可阻止关闭 |
|
||||||
|
<!--rehype:className=wrap-text left-align-->
|
||||||
|
|
||||||
|
## 运行时 API (Runtime)
|
||||||
|
|
||||||
|
### 窗口 (Window)
|
||||||
|
<!--rehype:wrap-class=col-span-3-->
|
||||||
|
|
||||||
|
| 功能 | Go 示例 (`runtime.*`) | JS 示例 (`runtime.*`) |
|
||||||
|
| ------------- | ------------------------------------- | --------------------------------------------- |
|
||||||
|
| **设置标题** | `WindowSetTitle(ctx, "New")` | `WindowSetTitle("New")` |
|
||||||
|
| **设置尺寸** | `WindowSetSize(ctx, 800, 600)` | `WindowSetSize(800, 600)` |
|
||||||
|
| **设置最小/最大尺寸** | `WindowSetMinSize(ctx, 400, 300)` | `WindowSetMinSize(400, 300)` |
|
||||||
|
| **居中** | `WindowCenter(ctx)` | `WindowCenter()` |
|
||||||
|
| **全屏/取消全屏** | `WindowFullscreen(ctx)` | `WindowFullscreen()` |
|
||||||
|
| **显示/隐藏** | `WindowShow(ctx)` / `WindowHide(ctx)` | `WindowShow()` / `WindowHide()` |
|
||||||
|
| **设为置顶** | `WindowSetAlwaysOnTop(ctx, true)` | `WindowSetAlwaysOnTop(true)` |
|
||||||
|
| **拖动窗口** | (仅 JS) | 在 HTML 元素上设置 `style="--wails-draggable:drag"` |
|
||||||
|
<!--rehype:className=wrap-text left-align-->
|
||||||
|
|
||||||
|
### 对话框 (Dialog)
|
||||||
|
<!--rehype:wrap-class=col-span-3-->
|
||||||
|
|
||||||
|
#### Go 端
|
||||||
|
|
||||||
|
```go
|
||||||
|
dialogOpts := &runtime.OpenDialogOptions{ Title: "Select File" }
|
||||||
|
filePath, err := runtime.OpenFileDialog(app.ctx, *dialogOpts)
|
||||||
|
```
|
||||||
|
|
||||||
|
| 对话框类型 | Go 方法 (`runtime.*`) |
|
||||||
|
| -------- | ---------------------------------------------------------- |
|
||||||
|
| **信息框** | `MessageDialog(ctx, runtime.MessageDialogOptions{...})` |
|
||||||
|
| **打开文件** | `OpenFileDialog(ctx, runtime.OpenDialogOptions{...})` |
|
||||||
|
| **保存文件** | `SaveFileDialog(ctx, runtime.SaveDialogOptions{...})` |
|
||||||
|
| **打开目录** | `OpenDirectoryDialog(ctx, runtime.OpenDialogOptions{...})` |
|
||||||
|
<!--rehype:className=wrap-text left-align-->
|
||||||
|
|
||||||
|
#### JavaScript 端
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { OpenFileDialog } from '../wailsjs/runtime';
|
||||||
|
|
||||||
|
async function selectFile() {
|
||||||
|
const filePath = await OpenFileDialog({ title: "Select File" });
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 菜单 (Menu)
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
```go
|
||||||
|
// main.go
|
||||||
|
appMenu := menu.NewMenu()
|
||||||
|
fileMenu := appMenu.AddSubmenu("File")
|
||||||
|
fileMenu.AddText("Quit", keys.CmdOrCtrl("q"), func(_ *menu.CallbackData) {
|
||||||
|
runtime.Quit(app.ctx)
|
||||||
|
})
|
||||||
|
|
||||||
|
err := wails.Run(&options.App{
|
||||||
|
// ...
|
||||||
|
Menu: appMenu,
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
| 菜单项类型 | 示例 |
|
||||||
|
| ------- | --------------------------------------------------------- |
|
||||||
|
| **文本项** | `menu.AddText("Item", accelerator, callback)` |
|
||||||
|
| **复选框** | `menu.AddCheckbox("Toggle", true, accelerator, callback)` |
|
||||||
|
| **分隔符** | `menu.AddSeparator()` |
|
||||||
|
| **子菜单** | `menu.AddSubmenu("Submenu")` |
|
||||||
|
|
||||||
|
<!--rehype:className=wrap-text -->
|
||||||
|
|
||||||
|
### 其他 Runtime API
|
||||||
|
|
||||||
|
#### 日志
|
||||||
|
|
||||||
|
```go
|
||||||
|
// Go 示例 (`runtime.*`)
|
||||||
|
LogInfo(ctx, "Message")
|
||||||
|
// JS 示例 (`runtime.*`)
|
||||||
|
LogInfo("Message")
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 剪贴板
|
||||||
|
|
||||||
|
```go
|
||||||
|
// Go 示例 (`runtime.*`)
|
||||||
|
ClipboardSetText(ctx, "text")
|
||||||
|
// JS 示例 (`runtime.*`)
|
||||||
|
ClipboardSetText("text")
|
||||||
|
```
|
||||||
|
|
||||||
|
应用打包与分发
|
||||||
|
---
|
||||||
|
|
||||||
|
### Windows 打包
|
||||||
|
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||||||
|
|
||||||
|
#### <red>■</red> 默认生成: `.exe` 可执行文件。
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform windows/amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
#### <red>■</red> 生成 NSIS 安装程序:
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
**前提条件**: 需要预先安装 [NSIS (Nullsoft Scriptable Install System)](https://nsis.sourceforge.io/Download)。
|
||||||
|
|
||||||
|
- **下载 NSIS**: 从 [NSIS 官方网站](https://nsis.sourceforge.io/Download) 下载最新版本的 NSIS 安装程序。
|
||||||
|
- **安装 NSIS**: 运行安装程序并按照提示完成安装。**确保**在安装过程中选择将 NSIS 添加到系统的 `PATH` 环境变量中,以便 `makensis` 命令可以在命令行中全局访问。
|
||||||
|
- **验证安装**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ makensis -VERSION
|
||||||
|
```
|
||||||
|
|
||||||
|
如果安装正确,您将看到 NSIS 的版本号输出。
|
||||||
|
|
||||||
|
**生成安装程序**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform windows/amd64 -nsis
|
||||||
|
```
|
||||||
|
|
||||||
|
#### <red>■</red> 处理 WebView2 依赖:
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
`download`: 提示用户下载 WebView2。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform windows/amd64 -webview2 download
|
||||||
|
```
|
||||||
|
`embed`: 将 WebView2 嵌入到应用中(推荐)。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform windows/amd64 -webview2 embed
|
||||||
|
```
|
||||||
|
`browser`: 在浏览器中打开下载页面。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform windows/amd64 -webview2 browser
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS 打包
|
||||||
|
|
||||||
|
|
||||||
|
#### <red>■</red> 默认生成: `.app` 应用程序包。
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform darwin/amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
#### <red>■</red> 代码签名与公证:
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
需要通过 Apple 开发者账户进行 **代码签名** 和 **公证** 才能分发。
|
||||||
|
|
||||||
|
#### <red>■</red> 跳过打包成 `.app` 步骤:
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform darwin/amd64 -skippackage
|
||||||
|
```
|
||||||
|
<!--rehype:className=wrap-text-->
|
||||||
|
|
||||||
|
### Linux 打包
|
||||||
|
|
||||||
|
#### <red>■</red> 生成可执行文件
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform linux/amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
#### <red>■</red> 打包成 `.deb`
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform linux/amd64 -deb
|
||||||
|
```
|
||||||
|
|
||||||
|
#### <red>■</red> 打包成 `.rpm`
|
||||||
|
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ wails build -platform linux/amd64 -rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### AppImage 支持
|
||||||
|
|
||||||
|
Wails 不直接内置对 AppImage 的支持,但可以使用外部工具手动创建。使用 `appimagetool`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
appimagetool ./your-app-dir
|
||||||
|
```
|
||||||
|
|
||||||
|
**安装 `appimagetool`**:
|
||||||
|
|
||||||
|
- 您可以从 [AppImage 官方网站](https://appimage.org/) 获取 `appimagetool`。
|
||||||
|
- 下载后,将其添加到您的 `PATH` 中以便全局访问。
|
||||||
|
|
||||||
|
## 进阶主题与杂项
|
||||||
|
|
||||||
|
### 平台特定构建选项
|
||||||
|
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||||||
|
|
||||||
|
在 `main.go` 的 `wails.Run()` 中为不同平台提供细粒度配置。
|
||||||
|
|
||||||
|
```go
|
||||||
|
err := wails.Run(&options.App{
|
||||||
|
// ...
|
||||||
|
Windows: &windows.Options{
|
||||||
|
WebviewIsTransparent: true, // WebView2 背景透明
|
||||||
|
WindowIsTranslucent: true, // 窗口背景透明
|
||||||
|
},
|
||||||
|
Mac: &mac.Options{
|
||||||
|
TitleBar: &mac.TitleBar{
|
||||||
|
TitlebarAppearsTransparent: true, // 透明标题栏
|
||||||
|
},
|
||||||
|
About: &mac.AboutInfo{
|
||||||
|
Title: "My Awesome App",
|
||||||
|
Message: "© 2025 Me",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使用 TypeScript
|
||||||
|
|
||||||
|
Wails 会自动为 Go 绑定的方法生成 TypeScript 定义。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# wails.json
|
||||||
|
"frontend:build": "npm run build"
|
||||||
|
|
||||||
|
# package.json
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc && vite build"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 调试
|
||||||
|
|
||||||
|
- **Go 部分**: 使用 `wails dev -debug` 启动并附加您的 Go 调试器。
|
||||||
|
- **前端部分**: 在 `wails dev` 模式下,右键点击应用,选择“检查”打开浏览器开发者工具。
|
||||||
|
|
||||||
|
参考资料
|
||||||
|
---
|
||||||
|
|
||||||
|
- [Wails 官方文档](https://wails.io/) _(wails.io)_
|
||||||
|
- [Wails GitHub 仓库](https://github.com/wailsapp/wails) _(github.com)_
|
||||||
|
- [Wails Discord 社区](https://discord.gg/4K6VHPkG5c) _discord.gg_
|
Reference in New Issue
Block a user