Compare commits

...

316 Commits

Author SHA1 Message Date
xugaoyi a1cb764503 blog: 更新友链信息 2024-01-12 19:54:35 +08:00
xugaoyi e8fd9c7c82 chore: 添加dev:win & 添加友链 2024-01-12 15:26:26 +08:00
xugaoyi 26fbc5a078 chore: 添加windows平台运行脚本时的提示 2023-11-23 12:43:04 +08:00
xugaoyi 77bdf60a33 test: ci 2023-11-01 16:52:51 +08:00
xugaoyi e438e31d4e chore: 更换图床链接 2023-11-01 14:17:17 +08:00
xugaoyi 5c3393118c blog: 添加友链 2023-10-10 20:20:33 +08:00
xugaoyi 91b52adcfc blog: 网格布局中的动画 2023-09-15 17:34:13 +08:00
xugaoyi 3e9c399a74 blog: 更新友链 2023-08-05 13:41:12 +08:00
xugaoyi 1e5042c61a feat: v1.12.9 2023-08-04 17:23:16 +08:00
xugaoyi 6bfc99dc50 fix: 修复不兼容node17及以上版本的问题 2023-08-04 14:05:02 +08:00
xugaoyi 82938e5d71 chore: 修改vercel.json 2023-07-09 19:53:06 +08:00
xugaoyi 76f5b5435b chore: 添加vercel.json 2023-07-09 19:48:07 +08:00
xugaoyi 0989c4f9f5 blog fix: 修复代码冲突 2023-06-17 19:27:19 +08:00
xugaoyi 877e49e3e3 blog: 添加友链 2023-06-17 18:34:56 +08:00
xugaoyi 99b3d4b6c9 blog: 更新友链 2023-02-20 15:11:28 +08:00
xugaoyi 63588e1951 chore: 更换赞助商图片 2022-12-01 11:58:53 +08:00
xugaoyi 93a033ddc7 chore: 添加赞助商 2022-11-09 17:36:15 +08:00
xugaoyi 2a590518a8 chore: 更新赞助商图片 2022-11-09 17:25:43 +08:00
xugaoyi 316cbf996e chore: 添加赞助商 2022-11-09 17:21:13 +08:00
xugaoyi 85260f5cbe blog: 添加收藏内容 2022-10-14 09:19:57 +08:00
xugaoyi 70db98e0aa blog: 删除重复数据 2022-09-26 10:01:29 +08:00
xugaoyi 97666191a4 blog: 添加友链 2022-09-26 10:00:51 +08:00
xugaoyi 6dbd428d35 fix: 主题依赖添加node版本限制 2022-08-24 10:03:27 +08:00
xugaoyi 21f74b4ff9 blog: ts 2022-08-22 21:28:56 +08:00
xugaoyi 87370e0be1 blog: ts 2022-08-21 23:10:19 +08:00
xugaoyi a2b103c239 fix: 微调分类栏UI样式 2022-08-19 17:05:35 +08:00
xugaoyi d1876d35d6 blog: 添加收藏 2022-08-19 09:55:10 +08:00
xugaoyi a086d6eba4 fix: v1.12.8 2022-08-18 14:19:14 +08:00
xugaoyi 039eafddab blog: 修改错别字 2022-08-16 17:18:49 +08:00
xugaoyi 597734c792 blog: 添加收藏内容 2022-08-11 18:03:30 +08:00
xugaoyi 35a032e268 blog: Git修改分支名 2022-08-11 10:53:30 +08:00
xugaoyi 6c36c2d8be feat: v1.12.7 页面编辑支持gitee 2022-07-31 18:16:15 +08:00
Evan Xu ed4be73eb2
Merge pull request #624 from bwcx-jzy/patch-2
feat:page edit 支持 gitee.com
2022-07-31 18:05:40 +08:00
蒋小小 83c002300c
page edit 支持 gitee.com
page edit 支持 gitee.com
2022-07-29 21:43:45 +08:00
xugaoyi d6d01e8581 fix: v1.12.6 修复配置moreArticle后在首页不生效的问题 2022-07-27 14:09:12 +08:00
xugaoyi 946319aa6d chore: 添加备案信息备注 2022-07-27 10:29:13 +08:00
xugaoyi d4be4e8679 chore: 更新二维码 2022-07-19 14:12:04 +08:00
xugaoyi 4b930d634b blog: 添加《git修改分支名》 2022-07-14 14:58:47 +08:00
xugaoyi 3d09961b23 test: 测试ci 2022-07-11 11:39:10 +08:00
xugaoyi df3fad4349 test: 测试ci 2022-07-11 10:59:56 +08:00
xugaoyi 47eaf6b34b deploy: 优化部署脚本 2022-07-11 10:26:13 +08:00
Evan Xu 8c1d787797
Merge pull request #614 from ShuaiGao/patch-2
feat: 自动化部署流程优化,关键信息自动获取
2022-07-11 09:22:23 +08:00
Dongua 15cbf13723
自动化部署流程优化,关键信息自动获取 2022-07-09 10:32:00 +08:00
xugaoyi 07f93f17b1 feat: v1.12.5 2022-07-08 10:34:32 +08:00
xugaoyi 1ac26b3189 chore: 添加”备注加群“ 2022-07-07 10:44:37 +08:00
xugaoyi 555d2fdf41 blog: 添加文章 2022-06-29 09:36:22 +08:00
xugaoyi 9eee1524a0 chore: 添加友链 2022-06-27 11:52:37 +08:00
xugaoyi 07eefcca83 feat: v1.12.4 2022-06-23 17:04:33 +08:00
xugaoyi 6a400169ca blog: 添加友链 2022-06-17 16:45:12 +08:00
xugaoyi 5141505df0 chore: key 改为 path 2022-06-09 23:16:02 +08:00
xugaoyi 82c001732b chore: 修改图片cdn地址 2022-06-06 14:39:40 +08:00
xugaoyi bc6cc128e2 feat: v1.12.3 2022-06-03 20:42:34 +08:00
xugaoyi a6ea991a29 feat: v1.12.1 2022-06-03 19:53:42 +08:00
xugaoyi 7c5ab13a07 chore: 添加docsBranch配置说明 2022-06-02 10:39:03 +08:00
xugaoyi b069788b16 feat: v1.12.0 2022-06-01 11:42:01 +08:00
Evan Xu 9f5a20eb28
Merge pull request #598 from jaw52/master
feat(背景图): 增加切换时间设置
2022-05-31 09:48:08 +08:00
jaw52 053051ec07 chore: 增加忽略项 2022-05-31 09:16:00 +08:00
jaw52 7dcedcfa75 feat(背景图): 增加切换时间设置 2022-05-30 18:01:22 +08:00
xugaoyi 877ff2b05a blog: 添加收藏 2022-05-23 12:47:26 +08:00
xugaoyi 3457fe4895 fix: 去掉badgeTipColor 2022-05-22 20:00:59 +08:00
xugaoyi 1695e6c6f9 fix: 去掉badgeTipColor变量 2022-05-22 19:58:46 +08:00
xugaoyi 31ea46dced fix: 修改readFileList文件获取文件的一下问题 2022-05-22 19:32:55 +08:00
xugaoyi 7cc62dd399 blog: 添加收藏 2022-05-13 09:52:47 +08:00
xugaoyi 70ed9142ea blog: 添加友链 2022-05-09 09:53:42 +08:00
xugaoyi bf47eacad6 chore: 修改配置 2022-05-02 12:40:58 +08:00
xugaoyi 86669dd62b chore: 添加友链 2022-05-02 12:27:45 +08:00
xugaoyi aa0a73d358 chore: 更换搜索插件 2022-05-02 12:20:58 +08:00
xugaoyi f064a3b88e chore: 更新README 2022-04-26 14:45:27 +08:00
xugaoyi d9163b646a feat: v1.11.2 2022-04-21 10:04:24 +08:00
xugaoyi 523133d316 feat: 首页配置中添加隐藏右侧边栏配置项 2022-04-21 09:51:06 +08:00
xugaoyi 8f3df4a892 fix: 修复分类和标签设置为false时在自动生成front matter中依然有分类标签数据的问题 2022-04-21 09:44:46 +08:00
xugaoyi 6b3b4804f5 fix: 修复目录页底下有标题时遮挡目录链接的问题 2022-04-16 15:34:12 +08:00
xugaoyi 26510a3eb4 fix: 卡片容器链接添加withBase 2022-04-14 09:59:50 +08:00
Evan Xu 73166332c5
Merge pull request #577 from AllenYu0118/patch-1
fix: The build error Module parse failed
2022-04-13 10:37:15 +08:00
Evan Xu 02167f3288
Merge branch 'master' into patch-1 2022-04-13 10:36:00 +08:00
xugaoyi cdee77264d fix: v1.11.1 - 修复一些node版本不支持可选链操作符问题 2022-04-13 10:13:44 +08:00
allenyu 27af9705dd
fix: The build error Module parse failed
close: #576
2022-04-12 22:56:24 +08:00
xugaoyi 755e30211c chore: 永久链接添加 / 2022-04-12 14:43:22 +08:00
xugaoyi 369cb90065 feat: v1.11.0 - 添加新配置项extendFrontmatter,用于扩展自动生成frontmatter 2022-04-12 14:38:08 +08:00
xugaoyi 6fed91182b feat: 添加extendFrontmatter配置项 2022-04-12 14:00:56 +08:00
xugaoyi b554f8f3d4 feat: v1.10.4 - 适配浏览器打印和导出pdf时的页面样式 2022-04-09 22:00:37 +08:00
xugaoyi b6ecfe03e2 feat: 命名约定兼容文件名中间有'.' 2022-04-08 18:35:35 +08:00
xugaoyi 3844f83f6d fix: v1.10.2 - 修复nav不规范配置时导致浏览器控制台以及build时报错的问题 2022-04-08 16:48:47 +08:00
xugaoyi 2b945d3dcb fix: 修改文档站地址 2022-04-02 11:27:19 +08:00
xugaoyi 12ac2c1b8a v1.10.1 2022-03-29 14:59:13 +08:00
Evan Xu afedae844e
Merge pull request #570 from jyehn/master
fix routepath
2022-03-29 14:30:14 +08:00
xcjm 6d594ae82e
fix routepath 2022-03-28 20:05:11 +08:00
xugaoyi aff9c676d3 blog: 添加友链 2022-03-23 09:42:36 +08:00
Evan Xu 16c6d84e13
Update ci.yml 2022-03-20 00:18:49 +08:00
xugaoyi 6c8f2ebfbf v1.10.0 2022-03-18 14:56:57 +08:00
xugaoyi 6b7ad009c5 test: 全文搜索 2022-03-17 23:23:17 +08:00
xugaoyi b9cf8362ed test: 全文搜索 2022-03-17 23:12:03 +08:00
xugaoyi 7a04841d41 test: 测试不使用全文搜索 2022-03-17 22:30:37 +08:00
xugaoyi c0543c49b4 test: 测试 2022-03-17 22:14:45 +08:00
xugaoyi 34925f1160 blog: 添加友链 2022-03-11 17:25:41 +08:00
xugaoyi b28061675b chore: 添加友链 2022-03-11 16:03:41 +08:00
xugaoyi b49d9d6a78 fix: 修改二维码图片 2022-03-08 17:00:16 +08:00
xugaoyi dff4436a89 fix: plugins配置改成数组式 2022-03-08 16:46:26 +08:00
xugaoyi 3fd40d0f2f chore: qq群 2022-03-05 22:22:10 +08:00
xugaoyi 3d9db3a356 chore: 更新readme 2022-03-05 00:01:42 +08:00
xugaoyi 43cdf3fb31 chore: 更新readme 2022-03-04 23:57:30 +08:00
xugaoyi b902f9d5c5 chore: 添加extraWatchFiles配置 2022-03-03 09:31:26 +08:00
xugaoyi 7208263eb6 v1.9.5 2022-02-26 19:15:56 +08:00
xugaoyi 7f1747a94e feat: 目录页中添加titleTag 2022-02-26 18:20:00 +08:00
xugaoyi 684060fd39 chore: 更新README 2022-02-26 17:21:32 +08:00
Evan Xu 32236a2fad
Merge pull request #558 from GitHub-Xzhi/master
feat: 在目录页添加标题标记功能
2022-02-26 17:17:27 +08:00
Xzhi e458cf548a [New] 在目录页添加标题标记功能 2022-02-21 22:46:25 +08:00
xugaoyi 290c318d10 blog: 更新收藏 2022-02-18 14:29:49 +08:00
xugaoyi 607155f2ea blog: 更新收藏 2022-02-18 11:13:13 +08:00
xugaoyi 5fc2ccc23c blog: 更新收藏 2022-02-17 17:38:21 +08:00
xugaoyi 734705cefb blog: 更新收藏 2022-02-17 14:45:10 +08:00
xugaoyi a26dfa3d0a blog: 添加收藏 2022-02-11 09:56:01 +08:00
xugaoyi bbf3f7842f blog: 新增文章 2022-01-28 15:17:57 +08:00
xugaoyi d229cb6c5e fix: 修改ISSUE_TEMPLATE 2022-01-22 11:50:04 +08:00
xugaoyi 637d729d5f fix: 修改ISSUE_TEMPLATE 2022-01-22 11:35:46 +08:00
xugaoyi 2e780b7e08 fix: 修改ISSUE_TEMPLATE 2022-01-22 11:20:01 +08:00
xugaoyi 68a786305b fix: htmlModules文件改为ts 2022-01-19 11:26:09 +08:00
xugaoyi a475b4f14b blog: 更新收藏 2022-01-14 09:57:59 +08:00
xugaoyi 24e371b5c0 edit issue template 2022-01-13 15:50:25 +08:00
xugaoyi aaa323e729 add issue template 2022-01-13 15:42:10 +08:00
xugaoyi a3bb724ae8 fix: 修复line-clamp不起作用问题 2022-01-10 12:40:35 +08:00
xugaoyi 3c1e12ccf6 v1.9.4 2022-01-06 20:47:36 +08:00
xugaoyi 801022b780 fix: 目录页的图片改为非必填 2022-01-06 20:47:36 +08:00
xugaoyi 492260d5ea fix: 修复搜索结果框移动端下显示不全问题 2022-01-06 15:19:22 +08:00
xugaoyi 5e466ea5e6 fix: 更换全文搜索插件 2022-01-04 21:40:05 +08:00
xugaoyi aad31fb284 v1.9.3 2022-01-04 18:22:00 +08:00
Evan Xu e0ae5732b1
Merge pull request #533 from kaokei/master
feat: frontmatter增加showSidebar属性
2022-01-04 15:32:05 +08:00
xugaoyi 0a62255afd blog: 添加收藏内容 2022-01-04 09:24:13 +08:00
kaokei 98ddc1b8c6
frontmatter增加showSidebar属性
在文章的frontmatter中增加showSidebar属性,当showSidebar=false时,就不显示左侧sidebar,但是不影响右侧的rightMenu。
这个是为了补充sidebar=false时同时也会导致不显示rightMenu的不足。
2022-01-03 23:00:21 +08:00
xugaoyi bc26495567 fix: 主题升级v1.9.0 2022-01-03 11:29:29 +08:00
xugaoyi d8e4447252 fix: 优化设计图标尺寸 2022-01-03 11:19:53 +08:00
xugaoyi 7d9c17f094 fix: 修改本地主题包的文件名 2022-01-02 21:59:27 +08:00
xugaoyi 88c17acf91 feat: 完善主题的ts文件 2022-01-02 21:52:07 +08:00
xugaoyi fc34b35537 feat: 添加一些小功能&使config支持ts(未完成) 2022-01-01 23:49:51 +08:00
xugaoyi 41e7fac18b blog: 更新收藏夹 2021-12-31 10:39:44 +08:00
xugaoyi 5e2dd09ca3 blog: 添加工具大全 2021-12-19 15:55:42 +08:00
xugaoyi 541e3c7b30 blog: 更新收藏夹 2021-12-19 15:55:42 +08:00
xugaoyi ea790b0fda blog: 更新收藏夹 2021-12-19 15:55:42 +08:00
xugaoyi a2f03e993d test: htmlModules 2021-12-16 14:51:09 +08:00
xugaoyi 649dcee766 test: baiduCode 2021-12-16 12:38:40 +08:00
xugaoyi 9bc7358e3f update: 更新README 2021-12-15 21:39:02 +08:00
xugaoyi ae3caa7202 v1.8.6 2021-12-15 21:29:37 +08:00
xugaoyi fd433522cf blog: 添加友链 2021-12-12 23:50:41 +08:00
xugaoyi d2eb0f5292 blog: 优化配置文件 2021-12-11 12:51:45 +08:00
xugaoyi ba3fd270b0 blog: 添加友链一枚 2021-12-11 11:57:58 +08:00
xugaoyi c372dac795 blog: 更新收藏夹 2021-12-07 09:59:58 +08:00
xugaoyi ed03f07039 blog: 更新收藏内容 2021-12-03 10:15:18 +08:00
xugaoyi 0500937fad blog: 添加收藏内容 2021-11-29 15:09:35 +08:00
xugaoyi 9d8710856c blog: 修改置顶文章 2021-11-25 16:33:01 +08:00
xugaoyi a013caa770 blog: 添加实用技巧文章 2021-11-25 16:25:27 +08:00
xugaoyi e457106df9 blog: 更新友链 2021-11-24 17:48:33 +08:00
xugaoyi ccb529fac2 blog: 更新收藏内容 2021-11-19 17:57:14 +08:00
xugaoyi f2f8893c7b blog: 添加收藏内容 2021-11-16 10:58:04 +08:00
xugaoyi 219048e30e blog: 添加友链一枚 2021-11-12 16:16:22 +08:00
xugaoyi d1608f984a blog: 添加收藏内容 2021-11-05 10:03:01 +08:00
xugaoyi 144654fd3f blog: 新增文章 2021-11-02 09:57:19 +08:00
xugaoyi 5e45eaf901 v1.8.5 2021-10-30 18:34:03 +08:00
Evan Xu 194dcd2338
Merge pull request #508 from VisionYi/fix-canonicalLink-on-ssr
fix: canonicalLink on ssr template
2021-10-30 17:21:11 +08:00
Evan Xu 1486ae6403
Merge pull request #507 from VisionYi/feat-add-siderbar-hover-trigger-open
[新增]  鼠標滑動到左側邊彈出側邊欄的功能
2021-10-30 17:19:27 +08:00
Vision Hung c64896c58a fix: add canonicalLink on ssr template 2021-10-29 20:46:55 +08:00
Vision Hung 4bd22d1648 feat: add sidebar-hover-trigger function & theme config 2021-10-29 18:15:49 +08:00
xugaoyi 45d98731b4 v1.8.4 2021-10-26 14:51:09 +08:00
xugaoyi 03bbcada4f blog: 更新收藏内容 2021-10-25 09:50:50 +08:00
xugaoyi 5075ae7caf blog: 更新收藏夹 2021-10-15 18:00:34 +08:00
xugaoyi d665bf0637 blog: 更新收藏夹 2021-10-12 10:20:04 +08:00
xugaoyi 9f141ab619 blog: 添加收藏内容 2021-10-09 20:56:21 +08:00
xugaoyi d909f98179 blog: 添加友链一枚 2021-09-30 15:45:24 +08:00
xugaoyi 45cf1aa390 blog: 更新公众号信息 2021-09-25 13:44:23 +08:00
xugaoyi 189f932707 blog: 更新收藏内容 2021-09-22 18:17:52 +08:00
xugaoyi 6c76c0638c blog: 更新收藏内容 2021-09-22 14:48:57 +08:00
xugaoyi 1e6e402d95 blog: 添加收藏内容 2021-09-17 09:39:22 +08:00
Evan Xu 34d58e680b blog: 更新收藏内容 2021-09-03 11:28:10 +08:00
xugaoyi 503d3b4366 blog: 更新收藏内容 2021-09-02 14:33:08 +08:00
xugaoyi ade9df8f62 blog: 更新收藏内容 2021-09-02 11:11:47 +08:00
xugaoyi 2e02b67412 blog: 更新关于 2021-08-07 18:40:22 +08:00
Evan Xu 9651493528
Merge pull request #481 from resetmylife/patch-1
Update index.js
2021-08-07 18:15:21 +08:00
xugaoyi 15b19f2494 blog: 更新友链 2021-08-03 12:38:26 +08:00
xugaoyi 918fd1d627 blog: 更新文章 2021-08-02 18:20:44 +08:00
xugaoyi 31bd1dc060 blog: 删除过时文章 2021-08-01 14:11:36 +08:00
xugaoyi 990c1fea1d blog: 代码评审 2021-08-01 14:05:56 +08:00
xugaoyi ec82c1ab51 blog: 添加友链 2021-07-30 10:01:31 +08:00
resetmylife e864ef7dba
Update index.js 2021-07-20 15:40:37 +08:00
xugaoyi fff15b3907 blog: 添加友链一枚 2021-07-13 21:41:27 +08:00
xugaoyi a45fb1a8c6 blog: 更新文章 2021-07-06 15:45:14 +08:00
xugaoyi ff9731d2d4 blog: 更新文章 2021-07-04 23:25:49 +08:00
xugaoyi f09b2a61bc blog: 添加友链一枚 2021-06-30 09:50:47 +08:00
xugaoyi 59d9a20f17 blog: 添加友链一枚 2021-06-27 19:12:04 +08:00
xugaoyi f1a6f4f01b blog: 更新收藏内容 2021-06-25 17:51:05 +08:00
xugaoyi 514ee9d5c9 blog: 添加友链一枚 2021-06-24 14:19:16 +08:00
xugaoyi 5b7b684d78 blog: 添加收藏内容 2021-06-19 23:03:08 +08:00
xugaoyi 85da4eeb1a blog: 关注公众号 2021-06-19 17:44:01 +08:00
xugaoyi 994db824be blog: 添加公众号 2021-06-17 23:55:26 +08:00
xugaoyi bbb73fd6d1 blog: 更新`关于` 2021-06-17 20:01:24 +08:00
xugaoyi 5d075fec98 blog: 更新`关于` 2021-06-17 19:57:50 +08:00
xugaoyi 58cbc93a48 blog: 添加友链一枚 2021-05-08 21:44:52 +08:00
xugaoyi 728c7c610c blog: 添加友链一枚 2021-05-08 21:24:43 +08:00
xugaoyi 947f83476e v1.8.3 2021-05-03 23:36:13 +08:00
xugaoyi 3fb8ea12cb v1.8.2 2021-05-03 01:09:49 +08:00
Evan Xu 46ce942e19
Merge pull request #461 from GitHub-Xzhi/master
【新增】新增指定目录页配置处理功能。
2021-05-02 22:48:39 +08:00
Xzhi 87c955f468 【新增】新增指定目录页配置处理功能。
【用法】在目录页(.md文件)的pageComponent.data.key设置你想要指定显示的目录。
【格式】父子目录之间的路径用[ / ](因为考虑到在Windows和Linux系统下的目录都不能使用带有/符号命名)分割。
【例子】01.父/01.子/01.孙。其中[01.孙]即是你想要指定显示的目录。
2021-04-26 11:44:05 +08:00
xugaoyi e8e80f0427 blog: 添加<高教书苑>收藏 2021-04-16 09:35:02 +08:00
xugaoyi 03a3d8f97a test: 测试vercel部署 2021-04-08 20:30:50 +08:00
xugaoyi 47c0ea7297 test: 测试vercel部署 2021-04-08 19:59:03 +08:00
xugaoyi 0a1ce549a8 blog: 添加友链一枚 2021-04-07 15:07:36 +08:00
xugaoyi 57dccdeb6f blog: 更新React hook笔记 2021-04-06 19:14:18 +08:00
xugaoyi 7a662a9288 blog: 更新React hook笔记 2021-04-06 19:13:06 +08:00
xugaoyi 9748c8df8c blog: 添加友链一枚 2021-04-04 13:04:33 +08:00
xugaoyi 84f56ad252 blog: 更新React文章 - hook 2021-03-27 18:02:10 +08:00
xugaoyi 0858abaed6 blog: 添加React笔记-案例演示 2021-03-27 17:43:22 +08:00
xugaoyi 87444e54f8 blog: 添加React笔记 2021-03-26 18:22:32 +08:00
xugaoyi 108e7973bf blog: 添加React学习笔记 2021-03-25 20:24:44 +08:00
xugaoyi d9384449a5 blog: 新增文章-设计模式 2021-03-07 13:28:11 +08:00
xugaoyi ce3fc405df blog: 添加友链\ 2021-03-07 12:51:55 +08:00
xugaoyi f1a5507d30 blog: 添加收藏网站 2021-02-07 14:36:18 +08:00
xugaoyi ee0ff29245 v1.8.1 2021-01-29 23:47:17 +08:00
xugaoyi 127b4392e8 v1.8.0 2021-01-29 16:13:29 +08:00
xugaoyi de9948c298 v1.8.0 2021-01-29 07:52:23 +08:00
xugaoyi aad00ce147 feat: vuepress update v1.8.0 2021-01-28 19:17:56 +08:00
xugaoyi b489cb4710 ci: 设置时区 2021-01-21 21:09:57 +08:00
xugaoyi 0c92991233 test: 更新时间测试 2021-01-21 20:45:19 +08:00
xugaoyi 6c13cbbb37 test: 部署测试 2021-01-16 11:49:08 +08:00
xugaoyi 63c9e64c83 blog: 添加友链 2021-01-16 10:07:19 +08:00
xugaoyi 3fba71e6d2 blog: 添加友链一枚 2021-01-12 19:20:23 +08:00
xugaoyi 50a3e159c3 ci: 更新ci.yml中的node版本 2021-01-12 19:11:11 +08:00
xugaoyi c1d1fdbb2b 添加友链 2021-01-08 18:01:25 +08:00
xugaoyi 9b8a3a81b1 添加友链 2021-01-08 14:10:39 +08:00
xugaoyi cb40fa4c3a update .gitignore 2020-12-27 15:47:22 +08:00
xugaoyi 0ad2820a2a v1.7.2 2020-12-25 14:42:35 +08:00
xugaoyi b410bf56d0 v1.7.1 2020-12-21 18:01:03 +08:00
xugaoyi c09e4f03e1 添加友链 2020-12-20 17:15:20 +08:00
Evan Xu 3b08bde3f0
Merge pull request #432 from northword/master
修复高亮行的代码块无法拖动与选择的bug #431
2020-12-18 21:43:25 +08:00
Northword b71fbabe48 修复https://github.com/xugaoyi/vuepress-theme-vdoing/issues/431 one-click-copy 插件与主题一个样式的更改 2020-12-18 21:02:11 +08:00
Northword 6c5a3ad82b
Merge pull request #2 from xugaoyi/master
同步上游更新
2020-12-18 20:07:38 +08:00
xugaoyi ffa4b1629f update ad 2020-12-18 14:41:35 +08:00
xugaoyi 2358b861ec test ad 2020-12-18 11:04:19 +08:00
xugaoyi ad84ac2db9 test ad 2020-12-18 10:48:37 +08:00
xugaoyi cc4a84bc93 更新html模块 2020-12-18 09:58:05 +08:00
xugaoyi 34db7db25b v1.7.0 2020-12-17 17:51:15 +08:00
Northword 388fbcb071 Merge remote-tracking branch 'upstream/master' 2020-12-16 15:33:35 +08:00
xugaoyi bcd0339353 更新文档站地址 2020-12-16 12:42:48 +08:00
xugaoyi b3700a7a21 ad test 2020-12-15 23:41:23 +08:00
xugaoyi dc71b181f0 ad test 2020-12-15 23:35:43 +08:00
xugaoyi efa8a58e14 google ads test 2020-12-15 23:21:20 +08:00
xugaoyi c818433eff v1.6.4 2020-12-15 22:10:43 +08:00
Northword ca3a831399
修复表格过宽时溢出的问题
https://github.com/xugaoyi/vuepress-theme-vdoing/issues/428
2020-12-15 18:24:16 +08:00
Evan Xu c4d7b889ed
Merge pull request #427 from northword/master
#426  侧边栏文章标题默认取front matter的title
2020-12-15 16:42:17 +08:00
Northword 3f255c4bc3
#426 侧边栏文章标题默认取front matter的title
解决issue #426 ,从 front matter 提取 title 作为侧边栏文章的标题,这样可以与文章标题本身是front matter title相对应。如果没有定义front matter title,则使用文件名。
2020-12-15 16:23:31 +08:00
xugaoyi 8a75b5bb65 v1.6.3 2020-12-15 15:59:42 +08:00
xugaoyi a306a030b9 ads test 2020-12-14 18:17:56 +08:00
xugaoyi cec6bafd7c Add Google AdSense 2020-12-14 17:54:56 +08:00
xugaoyi a821199858 update palette.styl 2020-12-12 22:52:27 +08:00
xugaoyi 34ad055817 v1.6.2 2020-12-12 22:49:26 +08:00
xugaoyi a16232c12e v1.6.1 2020-12-11 13:07:09 +08:00
xugaoyi d24035edc2 v1.6.1: 修复1.6.0无法正常启动问题 2020-12-11 12:54:54 +08:00
xugaoyi 0e1a6fd0f7 v1.6.0 2020-12-10 21:59:57 +08:00
xugaoyi 8aaa310abb v1.5.3 2020-12-04 15:21:35 +08:00
xugaoyi 2c241d7354 v1.5.3 2020-12-04 15:12:16 +08:00
xugaoyi ee9837b87e v1.5.2 2020-12-04 14:27:41 +08:00
xugaoyi fad3ba0a0a 更新TS笔记 2020-12-03 16:13:02 +08:00
xugaoyi 916395a74e 更新nav配置 2020-12-03 11:33:16 +08:00
xugaoyi f8a8f491e4 更新文章:《TypeScript笔记》 2020-11-28 23:33:28 +08:00
xugaoyi 3ede11288c 更新Git命令清單 2020-11-26 11:30:10 +08:00
xugaoyi 0eed19b872 更新文章:《Git变基合并》 2020-11-25 17:18:06 +08:00
xugaoyi 05315cafeb add:网站收藏内容 2020-11-24 15:12:39 +08:00
xugaoyi b4c786cb13 feat: 关于页增加repo卡片 2020-11-20 09:22:23 +08:00
xugaoyi c333a8e231 添加:《Git》学习笔记 2020-11-18 18:13:30 +08:00
xugaoyi d4f8657cd2 添加友鏈一枚 2020-11-18 09:09:40 +08:00
xugaoyi 36f426fa95 fix: 修复`上次更新`时间错误的问题 2020-11-10 19:35:30 +08:00
xugaoyi 9eb68c2b53 添加: 文章-2分钟规则 2020-11-09 11:12:24 +08:00
Evan Xu 2a5e4a02d5 更新:收藏内容 2020-11-08 11:20:17 +08:00
Evan Xu 9b9bbb3b66 添加:添加一些收藏内容 2020-11-08 01:15:03 +08:00
Evan Xu dd8734d2ac 更新:README & 关于 2020-10-31 22:34:08 +08:00
Evan Xu d422ae59c3 Merge branch 'master' of github.com:xugaoyi/Evan-blog 2020-10-29 23:38:22 +08:00
Evan Xu 567bd8e5a7 更新:README.MD 2020-10-29 23:35:18 +08:00
Evan Xu 9350e0ad9e
Update README.MD 2020-10-26 23:16:54 +08:00
Evan Xu 73d02052ce
Update 01.关于.md 2020-10-25 22:21:54 +08:00
Evan Xu adf46c7a64 更新:关于页 2020-10-25 20:39:17 +08:00
Evan Xu ded87a4079 v1.5.1 2020-10-13 23:05:40 +08:00
Evan Xu 70047ff7b5 add <TypeScript> note 2020-10-08 22:42:31 +08:00
Evan Xu faefa01194 update README 2020-09-26 16:53:40 +08:00
xugaoyi e14d02f952 v1.5.0 2020-09-26 13:59:34 +08:00
xugaoyi 35eba2ecb8 添加友链 2020-09-06 14:15:39 +08:00
xugaoyi dc8c72f74e 更新:关于页 2020-09-05 17:09:01 +08:00
xugaoyi d9db2fab06 v1.4.4 2020-09-02 21:37:10 +08:00
xugaoyi 87b3faa080 添加收藏内容 2020-09-02 21:35:13 +08:00
Evan Xu 1a94d6b86c
Update nav.js 2020-08-25 23:59:49 +08:00
xugaoyi d949cb0a77 v1.4.3 2020-08-24 22:19:00 +08:00
xugaoyi 9c4b8ace6b v1.4.2 2020-08-19 00:00:43 +08:00
xugaoyi 38e5ede890 更新:README 2020-08-14 16:17:33 +08:00
xugaoyi c5f577ff54 更新:README 2020-08-14 15:54:23 +08:00
xugaoyi 11d9feee61 debug 2020-08-12 23:18:47 +08:00
xugaoyi 7ec3b64ff8 添加友链 2020-08-12 23:13:08 +08:00
xugaoyi 08d0c4891c debug 2020-08-12 22:40:30 +08:00
xugaoyi 6a008d1e74 debug 2020-08-12 22:15:13 +08:00
xugaoyi bb48df5c71 添加css收藏 2020-08-11 17:23:31 +08:00
xugaoyi 3d5e51a468 添加友链 2020-08-10 21:41:10 +08:00
xugaoyi 74d81082ca 添加笔记 2020-08-08 22:47:57 +08:00
xugaoyi 39197d8d2b v1.4.1 2020-08-08 22:42:29 +08:00
xugaoyi 23454cf272 添加友链 2020-08-06 15:46:00 +08:00
xugaoyi 89db0f1f86 添加友链 2020-08-02 21:31:51 +08:00
xugaoyi 1d0a8122ca 新增国内源文档站 2020-08-02 12:03:18 +08:00
xugaoyi adaf01d715 添加作者 2020-08-01 14:31:12 +08:00
xugaoyi 5b3d38d28d v1.4.0 ane 更新笔记 2020-07-30 13:00:35 +08:00
xugaoyi b7afc89d1b 更新文章 2020-07-22 14:37:38 +08:00
xugaoyi c10d661b1b 新增文章 2020-07-22 13:13:11 +08:00
xugaoyi 804d2b150d 添加友链 2020-07-17 10:29:56 +08:00
xugaoyi f24aedc29d update about 2020-07-16 14:43:35 +08:00
xugaoyi 08f8ef6f72 Merge branch 'master' of github.com:xugaoyi/Evan-blog 2020-07-16 14:39:08 +08:00
xugaoyi 1506c56552 update about 2020-07-16 14:37:55 +08:00
xugaoyi 686e42c505 update about 2020-07-16 14:28:37 +08:00
xugaoyi 096ed69c83 v1.3.6 + 新增文章 2020-07-16 14:24:34 +08:00
Evan Xu bd09802801
Update README.MD 2020-07-15 15:01:23 +08:00
xugaoyi 2f7209901e update README 2020-07-12 13:01:06 +08:00
xugaoyi 31d2f6e527 update README 2020-07-12 12:57:54 +08:00
xugaoyi 5e3690ddf7 更新README 2020-07-12 12:34:02 +08:00
xugaoyi 7d38658717 ES6 复习 2020-07-11 14:43:08 +08:00
345 changed files with 16745 additions and 7490 deletions

24
.github/ISSUE_TEMPLATE/ join_case.md vendored Normal file
View File

@ -0,0 +1,24 @@
---
name: 申请加入案例
about: 申请将你的站点展示在文档站案例页
title: 申请加入案例
labels: 申请加入案例
---
<!--
请按照模板填写,否则此申请将可能不会被通过并直接关闭。
站点要求:
1.使用Vdoing主题
2.有10篇以上文章
3.保留 footer 的主题推荐链接
-->
名称:站点名称
简介:站点简介
链接:站点链接
截图:站点截图链接
作者:作者名称
头像:作者头像链接
备注(可选) 知识库兼博客 | 社区 | 知识库 | 博客 | 文档站

32
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,32 @@
---
name: 报告bug
about: 创建一个报告来帮助我们改进
title: "[bug]: "
labels: bug
---
<!--请按照模板填写否则此issue将可能被关闭-->
## 问题描述
<!--xxxx-->
## 重现步骤
<!--
1. [xxx]
2. [xxx]
3. [xxx]
-->
## 重现链接(如有)
<!--https://xxx.com-->
## 问题截图(如有)
<!--![](xxx.jpg)-->
## 依赖版本
- node.js: <!--v1x.x.x-->
- @vuepress: <!--v1.x.x-->
- vuepress-theme-vdoing: <!--v1.x.x-->
## 补充说明(可选)
<!--xxxx-->

32
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@ -0,0 +1,32 @@
---
name: 提交疑问
about: 提交你的疑问
title: "[提问]: "
labels: 提问
---
<!--提示问题描述越详细提供的信息越完整越可能得到回答。但也不能保证所有问题都能得到回答。你也可以加入我们的交流QQ群694387113-->
## 问题描述
<!--xxxx-->
## 重现步骤(可选)
<!--
1. [xxx]
2. [xxx]
3. [xxx]
-->
## 重现链接(可选)
<!--https://xxx.com-->
## 问题截图(可选)
<!--![](xxx.jpg)-->
## 依赖版本(可选)
- node.js: <!--v1x.x.x-->
- @vuepress: <!--v1.x.x-->
- vuepress-theme-vdoing: <!--v1.x.x-->
## 补充说明(可选)
<!--xxxx-->

View File

@ -3,37 +3,46 @@ name: CI
#on: [push]
# 在master分支发生push事件时触发。
on:
on:
push:
branches:
- master
jobs: # 工作流
env: # 设置环境变量
TZ: Asia/Shanghai # 时区(设置时区可使页面中的`最近更新时间`使用该时区时间)
jobs:
build: # 自定义名称
runs-on: ubuntu-latest #运行在虚拟机环境ubuntu-latest
runs-on: ubuntu-latest # 运行在虚拟机环境ubuntu-latest
strategy:
matrix:
node-version: [10.x]
node-version: [18.x]
steps: # 步骤
steps:
- name: Checkout # 步骤1
uses: actions/checkout@v1 # 使用的动作。格式userName/repoName。作用检出仓库获取源码。 官方actions库https://github.com/actions
- name: Use Node.js ${{ matrix.node-version }} # 步骤2
uses: actions/setup-node@v1 # 作用安装nodejs
uses: actions/setup-node@v3 # 作用安装nodejs
with:
node-version: ${{ matrix.node-version }} # 版本
- name: run deploy.sh # 步骤3 同时部署到github和coding
env: # 设置环境变量
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} # toKen私密变量
CODING_TOKEN: ${{ secrets.CODING_TOKEN }}
run: npm install && npm run deploy
# - name: Build and Deploy # 步骤3 只提交到github可以使用这个步骤
# uses: JamesIves/github-pages-deploy-action@master # 作用将项目构建和部署到github。 https://github.com/JamesIves/github-pages-deploy-action
# env: # 设置环境变量
# ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} # toKen私密变量
# BASE_BRANCH: master # 要部署的文件夹所在的分支.
# BRANCH: gh-pages # 部署到的分支
# FOLDER: docs/.vuepress/dist # 要部署的文件夹.
# BUILD_SCRIPT: npm install && npm run build && cd docs/.vuepress/dist && echo 'xugaoyi.com' > CNAME && cd - # 部署前要执行的命令记得cd进入某个目录后后面要cd -退回开始的目录)
- name: Build-and-deploy # 步骤3
run: |
remote_addr=`git remote get-url --push origin`
commit_info=`git describe --all --always --long`
user_name=`git log -1 --pretty=format:'%an'`
user_email=`git log -1 --pretty=format:'%ae'`
deploy_branch=gh-pages
yarn
yarn build
cd docs/.vuepress/dist
git config --global init.defaultBranch $deploy_branch
git init
git config user.name ${user_name}
git config user.email ${user_email}
git add -A
git commit -m "auto deploy, $commit_info"
remote_addr=`echo $remote_addr | awk -F'://' '{print $2}'`
remote_addr=https://${user_name}:${{secrets.GITHUB_TOKEN}}@${remote_addr}
git remote add origin ${remote_addr}
git push origin HEAD:$deploy_branch --force # 推送到github $deploy_branch分支

14
.gitignore vendored
View File

@ -2,11 +2,21 @@
package-lock.json
node_modules
# yarn
yarn.lock
yarn-error.log
# pnpm
pnpm-lock.yaml
# vscode
.vscode
# vuepress
# vuepress
docs/.vuepress/dist
# 百度链接推送
urls.txt
urls.txt
# mac
.DS_Store

View File

@ -1,22 +1,31 @@
<p align="center"><a href="https://xugaoyi.com/" target="_blank" rel="noopener noreferrer"><img width="180" src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200409124835.png" alt="logo"></a></p>
<p align="center"><a href="https://xugaoyi.com/" target="_blank" rel="noopener noreferrer"><img width="180" src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200409124835.png" alt="logo"></a></p>
<p align="center">
<a href="https://www.npmjs.com/package/vuepress-theme-vdoing"><img alt="npm" src="https://img.shields.io/npm/v/vuepress-theme-vdoing"></a>
<a href="https://www.npmjs.com/package/vuepress-theme-vdoing" target="_blank"><img src="https://img.shields.io/npm/dt/vuepress-theme-vdoing" alt="npm" ></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing/stargazers"><img src="https://img.shields.io/github/stars/xugaoyi/vuepress-theme-vdoing?logo=ReverbNation&logoColor=rgba(255,255,255,.6)" alt="GitHub stars"></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing/actions?query=workflow%3ACI"><img src="https://github.com/xugaoyi/vuepress-theme-vdoing/workflows/CI/badge.svg" alt="CI"></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing/actions?query=workflow%3AbaiduPush"><img src="https://github.com/xugaoyi/vuepress-theme-vdoing/workflows/baiduPush/badge.svg" alt="baiduPush"></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/LICENSE"><img src="https://img.shields.io/github/license/xugaoyi/vuepress-theme-vdoing
" alt="License"></a>
<a href="https://www.npmjs.com/package/vuepress-theme-vdoing"><img alt="npm" src="https://img.shields.io/npm/v/vuepress-theme-vdoing"></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing/stargazers"><img src="https://img.shields.io/github/stars/xugaoyi/vuepress-theme-vdoing?logo=ReverbNation&logoColor=rgba(255,255,255,.6)" alt="GitHub stars"></a>
</p>
<h2 align="center">vuepress-theme-vdoing</h2>
[使用文档](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/) | [Evan's blog](https://xugaoyi.com/)
[文档](https://doc.xugaoyi.com/) |
[效果](https://xugaoyi.com/) |
[本仓库的gitee镜像](https://gitee.com/xugaoyi/vuepress-theme-vdoing)
<br/>
<p align="center" style="color: #999;">
赞助商
</p>
<p align="center">
<!-- <a href="http://apifox.cn/a103xugaoyi" target="_blank"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/blog-gitalk-comment@master/img/Apifox-860x320.ic7tz1417sw.png" alt="赞助商" style="width: 400px;border-radius: 2px;"></a> -->
<a href="http://apifox.cn/a103xugaoyi" target="_blank"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/blog-gitalk-comment@master/img/441669861566_.2bedplbm21hc.jpg" alt="赞助商" style="width: 400px;border-radius: 2px;"></a>
</p>
<p align="center" style="color: #999; font-size:13px;">(进入赞助商扫码注册可为本项目作者充电~</p>
## 介绍
1. 这个主题的初衷是打造一个好用的、面向程序员的`知识管理工具`
@ -24,18 +33,13 @@
3. 博客功能提供一种知识的`碎片化`形态,并支持个性化博客配置。
4. `简洁高效`,以 Markdown 为中心的项目结构。内置自动化工具,以更少的配置完成更多的事。配合多维索引快速定位每个知识点。
## 上新推荐 🎉
* `v1.2.x`这个版本对整体的UI细节做了很多优化比如标签栏和分类栏等 (2020.06.09)
* `v1.1.x`:从这个版本开始主题新增了两个`超好用`、`高颜值`的Markdown容器快去 [体验](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/pages/d0d7eb) 吧~ (2020.05.29)
更多上新请查阅:[更新日志](https://github.com/xugaoyi/vuepress-theme-vdoing/releases)
[**更新日志**](https://github.com/xugaoyi/vuepress-theme-vdoing/releases)
## 这个主题可以做什么?
* 案例1[知识库兼博客站](https://xugaoyi.com/)
* 案例2[仅博客站](https://xugaoyi.github.io/vdoing-demo-blog/)
* 案例3[仅知识库](https://xugaoyi.github.io/vdoing-demo-repository/)
* 案例4[文档站](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/)
* 案例4[文档站](https://doc.xugaoyi.com/)
## 快速上手
@ -53,16 +57,54 @@ npm install # or yarn install
# develop
npm run dev # or yarn dev
```
## 更新日志
[更新日志](https://github.com/xugaoyi/vuepress-theme-vdoing/releases)
## 赞赏
**愿这款知识管理主题能够助你变得强大。**
你任何形式的支持都是对我的肯定,我会坚持初心把这个项目做得更好。当然,能获得赞赏将会使我更有动力去做好这个项目😀~~
如果你觉得这个项目对你有帮助,可以给作者打赏一杯咖啡☕ ,前往 [赞赏](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/pages/1b12ed/) 。
<!-- ## ⚡️未来...
期待 [VuePress v2.0](https://github.com/vuepress/vuepress-next) 以及 [VitePress](https://github.com/vuejs/vitepress) 的正式发布...
届时VuePress 1.x 编译慢的缺点将得到极大的改善。我将会视情况把主题升级至 VuePress v2.0 或 VitePress也可能两个都升级。目前(2020.10.29)来看还需要一段时间才能让大家使用上基于它们的新版本,还希望大家多多 [:sparkling_heart:支持](https://doc.xugaoyi.com/pages/1b12ed/) 哟,持续关注吧~ -->
## :sparkling_heart:支持这个项目
如果你正在使用这个项目并感觉良好,或只是想要支持我继续开发,你可以通过如下*任意* 方式支持我:
1. *Star* 并 分享这个项目 :rocket:
2. 保留主题 footer(页脚) 的主题链接 :D
3. 关注公众号`yqyjs666`,回复`前端资源`,可获取 [前端学习资源](https://github.com/xugaoyi/blog-gitalk-comment/wiki/Front-end-Study)
<!-- 4. 轻轻点击一次页面广告 ✨ -->
4. 通过以下二维码 一次性捐款。 我多半会买一杯 ~~咖啡~~ 茶。:tea:
谢谢! :heart:
| 微信赞赏 | 微信 | 支付宝 |
| :---: | :---: | :---: |
| <img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200523131533.jpg" alt="赞赏码" width=150> | <img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200410113708.jpg" alt="Wechat QRcode" width=150>| <img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200410113707.jpg" alt="Alipay QRcode" width=150> |
二维码没有正常显示?点 [这里😎](https://doc.xugaoyi.com/pages/1b12ed/)
## 致谢
感谢为这个项目贡献过代码的朋友们 → [Contributors](https://github.com/xugaoyi/vuepress-theme-vdoing/graphs/contributors)
:heart:感谢支持这个项目的朋友
:heart:感谢为这个项目贡献代码的朋友 → [Contributors](https://github.com/xugaoyi/vuepress-theme-vdoing/graphs/contributors)
## 交流群
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<img src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/SaV6d0YfaAS0naAeQWibGVkSt6DxSaqGxdkJaeEqoJJ6M1NV1kq9aUqE3lGo7BuroTAoMg4rgibIIay1ibfvqXEiaA/0?wx_fmt=jpeg" class="no-zoom" style="width:120px;margin: 10px;">
<p>vdoing微信群(添加我微信备注"加群")</p>
</td>
<td align="center" valign="middle">
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store@master/qq.3ugglfuuwz00.webp" alt="群号: 694387113" class="no-zoom" style="width:120px;margin: 10px;">
<p>vdoing QQ群: 694387113</p>
</td>
</tr>
</tbody>
</table>
## 许可证
[MIT](https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/LICENSE)

View File

@ -6,4 +6,4 @@ set -e
# 百度链接推送
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://xugaoyi.com&token=T5PEAzhGaPNbjQ2X"
rm -rf urls.txt # 灭迹
rm -rf urls.txt # 删除文件

View File

@ -3,38 +3,22 @@
# 确保脚本抛出遇到的错误
set -e
push_addr=`git remote get-url --push origin` # git提交地址也可以手动设置比如push_addr=git@github.com:xugaoyi/vuepress-theme-vdoing.git
commit_info=`git describe --all --always --long`
dist_path=docs/.vuepress/dist # 打包生成的文件夹路径
push_branch=gh-pages # 推送的分支
# 生成静态文件
npm run build
# 进入生成的文件夹
cd docs/.vuepress/dist
cd $dist_path
# deploy to github
echo 'b.xugaoyi.com' > CNAME
if [ -z "$GITHUB_TOKEN" ]; then
msg='deploy'
githubUrl=git@github.com:xugaoyi/vuepress-theme-vdoing.git
else
msg='来自github actions的自动部署'
githubUrl=https://xugaoyi:${GITHUB_TOKEN}@github.com/xugaoyi/vuepress-theme-vdoing.git
git config --global user.name "xugaoyi"
git config --global user.email "894072666@qq.com"
fi
git init
git add -A
git commit -m "${msg}"
git push -f $githubUrl master:gh-pages # 推送到github
git commit -m "deploy, $commit_info"
git push -f $push_addr HEAD:$push_branch
# deploy to coding
echo 'www.xugaoyi.com\nxugaoyi.com' > CNAME # 自定义域名
if [ -z "$CODING_TOKEN" ]; then # -z 字符串 长度为0则为true$CODING_TOKEN来自于github仓库`Settings/Secrets`设置的私密环境变量
codingUrl=git@e.coding.net:xgy/xgy.git
else
codingUrl=https://HmuzsGrGQX:${CODING_TOKEN}@e.coding.net/xgy/xgy.git
fi
git add -A
git commit -m "${msg}"
git push -f $codingUrl master # 推送到coding
cd - # 退回开始所在目录
rm -rf docs/.vuepress/dist
cd -
rm -rf $dist_path

View File

@ -1,200 +0,0 @@
const nav = require('./config/nav.js');
module.exports = {
title: "Evan's blog",
description: 'web前端技术博客,简洁至上,专注web前端学习与总结。JavaScript,js,ES6,TypeScript,vue,python,css3,html5,Node,git,github等技术文章。', // 描述,以 <meta> 标签渲染到页面html中
// base: '/vuepress-theme-vdoing/', // '/<github仓库名>/' 默认'/'
head: [ // 注入到页面<head> 中的标签,格式[tagName, { attrName: attrValue }, innerHTML?]
['link', { rel: 'icon', href: '/img/favicon.ico' }], //favicons资源放在public文件夹
['meta', { name: 'keywords', content: '前端博客,个人技术博客,前端,前端开发,前端框架,web前端,前端面试题,技术文档,学习,面试,JavaScript,js,ES6,TypeScript,vue,python,css3,html5,Node,git,github,markdown'}],
['meta', { name: 'baidu-site-verification', content: '7F55weZDDc'}],// 百度统计博主验证
['meta', { name: 'theme-color', content: '#11a8cd'}], // 移动浏览器主题颜色
// ['meta', { name: 'viewport', content: 'width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no'}], // 移动端阻止页面缩放
],
markdown: {
lineNumbers: true // 代码行号
},
theme: 'vdoing', // 使用依赖包主题
// theme: require.resolve('../../theme-vdoing'), // 使用本地主题
themeConfig: { // 主题配置
nav,
sidebarDepth: 2, // 侧边栏显示深度默认1最大2显示到h3标题
logo: '/img/EB-logo.png', // 导航栏logo
repo: 'xugaoyi/vuepress-theme-vdoing', // 导航栏右侧生成Github链接
searchMaxSuggestions: 10, // 搜索结果显示最大数
lastUpdated: '上次更新', // 更新的时间,及前缀文字 string | boolean (取值为git提交时间)
docsDir: 'docs', // 编辑的文件夹
editLinks: true, // 启用编辑
editLinkText: '编辑',
// 以下配置是Vdoing主题改动的和新增的配置
// category: false, // 是否打开分类功能默认true。 如打开会做的事情有1. 自动生成的frontmatter包含分类字段 2.页面中显示与分类相关的信息和模块 3.自动生成分类页面(在@pages文件夹。如关闭则反之。
// tag: false, // 是否打开标签功能默认true。 如打开会做的事情有1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹。如关闭则反之。
// archive: false, // 是否打开归档功能默认true。 如打开会做的事情有1.自动生成归档页面(在@pages文件夹。如关闭则反之。
// categoryText: '随笔', // 碎片化文章_posts文件夹的文章预设生成的分类值默认'随笔'
// bodyBgImg: [
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175828.jpeg',
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175845.jpeg',
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175846.jpeg'
// ], // body背景大图默认无。 单张图片 String || 多张图片 Array, 多张图片时每隔15秒换一张。
// titleBadge: false, // 文章标题前的图标是否显示默认true
// titleBadgeIcons: [ // 文章标题前图标的地址,默认主题内置图标
// '图标地址1',
// '图标地址2'
// ],
sidebar: 'structuring', // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页
// sidebarOpen: false, // 初始状态是否打开侧边栏默认true
// updateBar: { // 最近更新栏
// showToArticle: true, // 显示到文章页底部默认true
// moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives'
// },
author: { // 文章默认的作者信息可在md文件中单独配置此信息 String | {name: String, link: String}
name: 'Evan Xu', // 必需
link: 'https://github.com/xugaoyi' // 可选的
},
blogger:{ // 博主信息,显示在首页侧边栏
avatar: 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg',
name: 'Evan Xu',
slogan: '前端界的小学生'
},
social:{ // 社交图标,显示于博主信息栏和页脚栏
// iconfontCssFile: '//at.alicdn.com/t/font_1678482_u4nrnp8xp6g.css', // 可选阿里图标库在线css文件地址对于主题没有的图标可自由添加
icons: [
{
iconClass: 'icon-youjian',
title: '发邮件',
link: 'mailto:894072666@qq.com'
},
{
iconClass: 'icon-github',
title: 'GitHub',
link: 'https://github.com/xugaoyi'
},
{
iconClass: 'icon-erji',
title: '听音乐',
link: 'https://music.163.com/#/playlist?id=755597173'
}
]
},
footer:{ // 页脚信息
createYear: 2019, // 博客创建年份
copyrightInfo: 'Evan Xu | <a href="https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/LICENSE" target="_blank">MIT License</a>', // 博客版权信息支持a标签
}
},
plugins: [ // 插件
// [require('./plugins/love-me'), { // 鼠标点击爱心特效
// color: '#11a8cd', // 爱心颜色,默认随机色
// excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空''
// }],
['thirdparty-search', { // 可以添加第三方搜索链接的搜索框(原官方搜索框的参数仍可用)
thirdparty: [ // 可选,默认 []
{
title: '在MDN中搜索',
frontUrl: 'https://developer.mozilla.org/zh-CN/search?q=', // 搜索链接的前面部分
behindUrl: '' // 搜索链接的后面部分,可选,默认 ''
},
{
title: '在Runoob中搜索',
frontUrl: 'https://www.runoob.com/?s=',
},
{
title: '在Vue API中搜索',
frontUrl: 'https://cn.vuejs.org/v2/api/#',
},
{
title: '在Bing中搜索',
frontUrl: 'https://cn.bing.com/search?q='
},
{
title: '通过百度搜索本站的',
frontUrl: 'https://www.baidu.com/s?wd=site%3Axugaoyi.com%20'
}
]
}],
'vuepress-plugin-baidu-autopush', // 百度自动推送
['one-click-copy', { // 代码块复制按钮
copySelector: ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], // String or Array
copyMessage: '复制成功', // default is 'Copy successfully and then paste it for use.'
duration: 1000, // prompt message display time.
showInMobile: false // whether to display on the mobile side, default: false.
}],
['demo-block', { // demo演示模块 https://github.com/xiguaxigua/vuepress-plugin-demo-block
settings: {
// jsLib: ['http://xxx'], // 在线示例(jsfiddle, codepen)中的js依赖
// cssLib: ['http://xxx'], // 在线示例中的css依赖
// vue: 'https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js', // 在线示例中的vue依赖
jsfiddle: false, // 是否显示 jsfiddle 链接
codepen: true, // 是否显示 codepen 链接
horizontal: false // 是否展示为横向样式
}
}],
[
'vuepress-plugin-zooming', // 放大图片
{
selector:'.theme-vdoing-content img:not(.no-zoom)', // 排除class是no-zoom的图片
options: {
bgColor: 'rgba(0,0,0,0.6)'
},
},
],
[
'vuepress-plugin-baidu-tongji', // 百度统计
{
hm: '503f098e7e5b3a5b5d8c5fc2938af002'
}
],
[
'vuepress-plugin-comment', // 评论
// {
// choosen: 'valine',
// options: {
// el: '#valine-vuepress-comment',
// appId: 'Your own appId',
// appKey: 'Your own appKey'
// }
// }
{
choosen: 'gitalk',
options: {
clientID: 'a6e1355287947096b88b',
clientSecret: 'f0e77d070fabfcd5af95bebb82b2d574d7248d71',
repo: 'vuepress-theme-vdoing', // GitHub 仓库
owner: 'xugaoyi', // GitHub仓库所有者
admin: ['xugaoyi'], // 对仓库有写权限的人
// distractionFreeMode: true,
pagerDirection: 'last', // 'first'正序 | 'last'倒序
id: "<%- (frontmatter.permalink || frontmatter.to.path).slice(-16) %>", // 页面的唯一标识,长度不能超过50
title: "「评论」<%- frontmatter.title %>", // GitHub issue 的标题
labels: ["Gitalk", "Comment"], // GitHub issue 的标签
body:"页面:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>" // GitHub issue 的内容
}
}
],
[
'@vuepress/last-updated', // "上次更新"时间格式
{
transformer: (timestamp, lang) => {
const moment = require('moment') // https://momentjs.com/
return moment(timestamp).format('YYYY/MM/DD, H:MM:SS');
}
}
]
],
// configureWebpack: {
// //webpack别名 如![Image from alias](~@alias/image.png)
// resolve: {
// alias: {
// '@alias': 'path/to/some/dir'
// }
// }
// }
}

367
docs/.vuepress/config.ts Normal file
View File

@ -0,0 +1,367 @@
/**
* 使JS版本的配置文件可参考https://github.com/xugaoyi/vuepress-theme-vdoing/tree/a2f03e993dd2f2a3afdc57cf72adfc6f1b6b0c32/docs/.vuepress
*/
import { resolve } from 'path'
import { defineConfig4CustomTheme, UserPlugins } from 'vuepress/config'
import { VdoingThemeConfig } from 'vuepress-theme-vdoing/types'
import dayjs from 'dayjs'
import baiduCode from './config/baiduCode' // 百度统计hm码
import htmlModules from './config/htmlModules' // 自定义插入的html块
const DOMAIN_NAME = 'xugaoyi.com' // 域名 (不带https)
const WEB_SITE = `https://${DOMAIN_NAME}` // 网址
export default defineConfig4CustomTheme<VdoingThemeConfig>({
theme: 'vdoing', // 使用npm主题包
// theme: resolve(__dirname, '../../vdoing'), // 使用本地主题包
locales: {
'/': {
lang: 'zh-CN',
title: "Evan's blog",
description: 'web前端技术博客,专注web前端学习与总结。JavaScript,js,ES6,TypeScript,vue,React,python,css3,html5,Node,git,github等技术文章。',
}
},
// base: '/', // 默认'/'。如果你想将你的网站部署到如 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/",(否则页面将失去样式等文件)
// 主题配置
themeConfig: {
// 导航配置
nav: [
{ text: '首页', link: '/' },
{
text: '前端',
link: '/web/', //目录页链接此处link是vdoing主题新增的配置项有二级导航时可以点击一级导航跳到目录页
items: [
// 说明以下所有link的值只是在相应md文件头部定义的永久链接不是什么特殊编码。另外注意结尾是有斜杠的
{
text: '前端文章',
items: [
{ text: 'JavaScript', link: '/pages/8143cc480faf9a11/' },
],
},
{
text: '学习笔记',
items: [
{ text: '《JavaScript教程》', link: '/note/javascript/' },
{ text: '《JavaScript高级程序设计》', link: '/note/js/' },
{ text: '《ES6 教程》', link: '/note/es6/' },
{ text: '《Vue》', link: '/note/vue/' },
{ text: '《React》', link: '/note/react/' },
{
text: '《TypeScript 从零实现 axios》',
link: '/note/typescript-axios/',
},
{
text: '《Git》',
link: '/note/git/',
},
{
text: 'TypeScript',
link: '/pages/51afd6/',
},
{
text: 'JS设计模式总结',
link: '/pages/4643cd/',
},
],
},
],
},
{
text: '页面',
link: '/ui/',
items: [
{ text: 'HTML', link: '/pages/8309a5b876fc95e3/' },
{ text: 'CSS', link: '/pages/0a83b083bdf257cb/' },
],
},
{
text: '技术',
link: '/technology/',
items: [
{ text: '技术文档', link: '/pages/9a7ee40fc232253e/' },
{ text: 'GitHub技巧', link: '/pages/4c778760be26d8b3/' },
{ text: 'Nodejs', link: '/pages/117708e0af7f0bd9/' },
{ text: '博客搭建', link: '/pages/41f87d890d0a02af/' },
],
},
{
text: '更多',
link: '/more/',
items: [
{ text: '学习', link: '/pages/f2a556/' },
{ text: '面试', link: '/pages/aea6571b7a8bae86/' },
{ text: '心情杂货', link: '/pages/2d615df9a36a98ed/' },
{ text: '实用技巧', link: '/pages/baaa02/' },
{ text: '友情链接', link: '/friends/' },
],
},
{ text: '关于', link: '/about/' },
{
text: '收藏',
link: '/pages/beb6c0bd8a66cea6/',
// items: [
// { text: '网站', link: '/pages/beb6c0bd8a66cea6/' },
// { text: '资源', link: '/pages/eee83a9211a70f9d/' },
// { text: 'Vue资源', link: '/pages/12df8ace52d493f6/' },
// ],
},
{
text: '索引',
link: '/archives/',
items: [
{ text: '分类', link: '/categories/' },
{ text: '标签', link: '/tags/' },
{ text: '归档', link: '/archives/' },
],
},
],
sidebarDepth: 2, // 侧边栏显示深度默认1最大2显示到h3标题
logo: '/img/logo.png', // 导航栏logo
repo: 'xugaoyi/vuepress-theme-vdoing', // 导航栏右侧生成Github链接
searchMaxSuggestions: 10, // 搜索结果显示最大数
lastUpdated: '上次更新', // 开启更新时间,并配置前缀文字 string | boolean (取值为git提交时间)
docsDir: 'docs', // 编辑的文件夹
// docsBranch: 'master', // 编辑的文件所在分支默认master。 注意如果你的分支是main则修改为main
editLinks: true, // 启用编辑
editLinkText: '编辑',
//*** 以下是Vdoing主题相关配置文档https://doc.xugaoyi.com/pages/a20ce8/ ***//
// category: false, // 是否打开分类功能默认true
// tag: false, // 是否打开标签功能默认true
// archive: false, // 是否打开归档功能默认true
// categoryText: '随笔', // 碎片化文章_posts文件夹的文章预设生成的分类值默认'随笔'
// pageStyle: 'line', // 页面风格,可选值:'card'卡片 | 'line' 线未设置bodyBgImg时才生效 默认'card'。 说明card时背景显示灰色衬托出卡片样式line时背景显示纯色并且部分模块带线条边框
// bodyBgImg: [
// 'https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200507175828.jpeg',
// 'https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200507175845.jpeg',
// 'https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200507175846.jpeg'
// ], // body背景大图默认无。 单张图片 String | 多张图片 Array, 多张图片时隔bodyBgImgInterval切换一张。
// bodyBgImgOpacity: 0.5, // body背景图透明度选值 0.1~1.0, 默认0.5
// bodyBgImgInterval: 15, // body多张背景图时的切换间隔, 默认15单位s
// titleBadge: false, // 文章标题前的图标是否显示默认true
// titleBadgeIcons: [ // 文章标题前图标的地址,默认主题内置图标
// '图标地址1',
// '图标地址2'
// ],
// contentBgStyle: 1, // 文章内容块的背景风格,默认无. 1 方格 | 2 横线 | 3 竖线 | 4 左斜线 | 5 右斜线 | 6 点状
// updateBar: { // 最近更新栏
// showToArticle: true, // 显示到文章页底部默认true
// moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives'
// },
// rightMenuBar: false, // 是否显示右侧文章大纲栏默认true (屏宽小于1300px下无论如何都不显示)
// sidebarOpen: false, // 初始状态是否打开左侧边栏默认true
// pageButton: false, // 是否显示快捷翻页按钮默认true
// 默认外观模式(用户未在页面手动修改过模式时才生效,否则以用户设置的模式为准),可选:'auto' | 'light' | 'dark' | 'read',默认'auto'。
// defaultMode: 'auto',
// 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | <自定义> 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页
sidebar: 'structuring',
// 文章默认的作者信息,(可在md文件中单独配置此信息) string | {name: string, link?: string}
author: {
name: 'xugaoyi', // 必需
link: 'https://github.com/xugaoyi', // 可选的
},
// 博主信息 (显示在首页侧边栏)
blogger: {
avatar: 'https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103123203.jpg',
name: 'Evan Xu',
slogan: '前端界的小学生',
},
// 社交图标 (显示于博主信息栏和页脚栏。内置图标https://doc.xugaoyi.com/pages/a20ce8/#social)
social: {
// iconfontCssFile: '//at.alicdn.com/t/xxx.css', // 可选阿里图标库在线css文件地址对于主题没有的图标可自己添加。阿里图片库https://www.iconfont.cn/
icons: [
{
iconClass: 'icon-youjian',
title: '发邮件',
link: 'mailto:894072666@qq.com',
},
{
iconClass: 'icon-github',
title: 'GitHub',
link: 'https://github.com/xugaoyi',
},
{
iconClass: 'icon-erji',
title: '听音乐',
link: 'https://music.163.com/#/playlist?id=755597173',
},
],
},
// 页脚信息
footer: {
createYear: 2019, // 博客创建年份
copyrightInfo:
'Evan Xu | <a href="https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/LICENSE" target="_blank">MIT License</a>', // 博客版权信息、备案信息等支持a标签或换行标签</br>
},
// 扩展自动生成frontmatter。当md文件的frontmatter不存在相应的字段时将自动添加。不会覆盖已有的数据。
extendFrontmatter: {
author: {
name: 'xugaoyi',
link: 'https://github.com/xugaoyi'
}
},
// 自定义hmtl(广告)模块
htmlModules
},
// 注入到页面<head>中的标签,格式[tagName, { attrName: attrValue }, innerHTML?]
head: [
['link', { rel: 'icon', href: '/img/favicon.ico' }], //favicons资源放在public文件夹
[
'meta',
{
name: 'keywords',
content: '前端博客,个人技术博客,前端,前端开发,前端框架,web前端,前端面试题,技术文档,学习,面试,JavaScript,js,ES6,TypeScript,vue,python,css3,html5,Node,git,github,markdown',
},
],
['meta', { name: 'baidu-site-verification', content: '7F55weZDDc' }], // 百度统计的站长验证(你可以去掉)
['meta', { name: 'theme-color', content: '#11a8cd' }], // 移动浏览器主题颜色
// [
// 'script',
// {
// 'data-ad-client': 'ca-pub-7828333725993554',
// async: 'async',
// src: 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js',
// },
// ], // 网站关联Google AdSense 与 html格式广告支持你可以去掉
],
// 插件配置
plugins: <UserPlugins>[
[
"sitemap", // 网站地图
{
hostname: WEB_SITE,
},
],
'vuepress-plugin-baidu-autopush', // 百度自动推送
[
'vuepress-plugin-baidu-tongji', // 百度统计
{
hm: baiduCode,
},
],
// 全文搜索。 ⚠注意此插件会在打开网站时多加载部分js文件用于搜索导致初次访问网站变慢。如在意初次访问速度的话可以不使用此插件推荐vuepress-plugin-thirdparty-search
// 'fulltext-search',
// 可以添加第三方搜索链接的搜索框(继承原官方搜索框的配置参数)
[
'thirdparty-search',
{
thirdparty: [
{
title: '在MDN中搜索',
frontUrl: 'https://developer.mozilla.org/zh-CN/search?q=', // 搜索链接的前面部分
behindUrl: '', // 搜索链接的后面部分,可选,默认 ''
},
{
title: '在Runoob中搜索',
frontUrl: 'https://www.runoob.com/?s=',
},
{
title: '在Vue API中搜索',
frontUrl: 'https://cn.vuejs.org/v2/api/#',
},
{
title: '在Bing中搜索',
frontUrl: 'https://cn.bing.com/search?q=',
},
{
title: '通过百度搜索本站的',
frontUrl: `https://www.baidu.com/s?wd=site%3A${DOMAIN_NAME}%20`,
},
],
}
],
[
'one-click-copy', // 代码块复制按钮
{
copySelector: ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], // String or Array
copyMessage: '复制成功', // default is 'Copy successfully and then paste it for use.'
duration: 1000, // prompt message display time.
showInMobile: false, // whether to display on the mobile side, default: false.
},
],
[
'demo-block', // demo演示模块 https://github.com/xiguaxigua/vuepress-plugin-demo-block
{
settings: {
// jsLib: ['http://xxx'], // 在线示例(jsfiddle, codepen)中的js依赖
// cssLib: ['http://xxx'], // 在线示例中的css依赖
// vue: 'https://jsd.cdn.zzko.cn/npm/vue/dist/vue.min.js', // 在线示例中的vue依赖
jsfiddle: false, // 是否显示 jsfiddle 链接
codepen: true, // 是否显示 codepen 链接
horizontal: false, // 是否展示为横向样式
},
},
],
[
'vuepress-plugin-zooming', // 放大图片
{
selector: '.theme-vdoing-content img:not(.no-zoom)', // 排除class是no-zoom的图片
options: {
bgColor: 'rgba(0,0,0,0.6)',
},
},
],
[
'vuepress-plugin-comment', // 评论
{
choosen: 'gitalk',
options: {
clientID: 'a6e1355287947096b88b',
clientSecret: 'f0e77d070fabfcd5af95bebb82b2d574d7248d71',
repo: 'blog-gitalk-comment', // GitHub 仓库
owner: 'xugaoyi', // GitHub仓库所有者
admin: ['xugaoyi'], // 对仓库有写权限的人
// distractionFreeMode: true,
pagerDirection: 'last', // 'first'正序 | 'last'倒序
id: '<%- (frontmatter.permalink || frontmatter.to.path).slice(-16) %>', // 页面的唯一标识,长度不能超过50
title: '「评论」<%- frontmatter.title %>', // GitHub issue 的标题
labels: ['Gitalk', 'Comment'], // GitHub issue 的标签
body:
'页面:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>', // GitHub issue 的内容
},
},
],
[
'@vuepress/last-updated', // "上次更新"时间格式
{
transformer: (timestamp, lang) => {
return dayjs(timestamp).format('YYYY/MM/DD, HH:mm:ss')
},
},
],
],
markdown: {
lineNumbers: true,
extractHeaders: ['h2', 'h3', 'h4', 'h5', 'h6'], // 提取标题到侧边栏的级别,默认['h2', 'h3']
},
// 监听文件变化并重新构建
extraWatchFiles: [
'.vuepress/config.ts',
'.vuepress/config/htmlModules.ts',
]
})

View File

@ -0,0 +1 @@
export default '503f098e7e5b3a5b5d8c5fc2938af002'

View File

@ -0,0 +1,122 @@
import { VdoingThemeConfig } from 'vuepress-theme-vdoing/types'
/** html (广)
* {
* homeSidebarB: htmlString,
*
* sidebarT: htmlString,
* sidebarB: htmlString,
*
* pageT: htmlString,
* pageB: htmlString,
* pageTshowMode: string, -'article' => 'custom' =>
* pageBshowMode: string, -'article' => 'custom' =>
*
* windowLB: htmlString,
* windowRB: htmlString,
* }
*
* .md文件front matter配置`article: false`
* windowLB windowRB1.200px*400px2.200px*400px的宽高3.960px时无论如何都不会显示
*/
const htmlModule: VdoingThemeConfig['htmlModules'] = {
homeSidebarB:
`<div style="padding: 0.95rem">
<p style="
color: var(--textColor);
opacity: 0.9;
font-size: 20px;
font-weight: bold;
margin: 0 0 8px 0;
"></p>
<img src="https://open.weixin.qq.com/qr/code?username=gh_0cf4b813918c" style="width:100%;" />
[<b></b>] <a href="https://game.xugaoyi.com" arget="_blank" ><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>
</p>
</div>`,
// `<!-- 纵向自适应 -->
// <ins class="adsbygoogle"
// style="display:block;padding: 0.95rem;"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="7802654582"
// data-ad-format="auto"
// data-full-width-responsive="true"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// sidebarT:
// `<!-- 固定100% * 150px可显示max-height:150px 未见显示-->
// <ins class="adsbygoogle"
// style="display:inline-block;width:100%;max-height:150px"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="6625304284"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// sidebarB:
// `<!-- 正方形 -->
// <ins class="adsbygoogle"
// style="display:block"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="3508773082"
// data-ad-format="auto"
// data-full-width-responsive="true"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// pageT:
// `<!-- 固定100% * 90px可显示max-height:90px未见显示-->
// <ins class="adsbygoogle"
// style="display:inline-block;width:100%;max-height:90px"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="6625304284"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// pageTshowMode: 'article',
// pageB:
// `<!-- 横向自适应 -->
// <ins class="adsbygoogle"
// style="display:block"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="6620245489"
// data-ad-format="auto"
// data-full-width-responsive="true"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// pageBshowMode: 'article',
// windowLB: // 会遮挡部分侧边栏
// `<!-- 固定200*200px -->
// <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
// <ins class="adsbygoogle"
// style="display:inline-block;width:200px;height:200px"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="6625304284"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>`,
// windowRB:
// `<!-- 固定160*160px -->
// <ins class="adsbygoogle"
// style="display:inline-block;max-width:160px;max-height:160px"
// data-ad-client="ca-pub-7828333725993554"
// data-ad-slot="8377369658"></ins>
// <script>
// (adsbygoogle = window.adsbygoogle || []).push({});
// </script>
// `,
}
// const htmlModule = {
// homeSidebarB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// sidebarT: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// sidebarB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// pageT: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// pageB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// windowLB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// windowRB: `<div style="width:100%;height:100px;color:#fff;background: #eee;">自定义模块测试</div>`,
// }
export default htmlModule

View File

@ -1,67 +0,0 @@
module.exports = [
{text: '首页', link: '/'},
{
text: '前端',
link: '/web/', //目录页vdoing主题新增的配置项有二级导航时可以点击一级导航跳到目录页
items: [
{text: '前端文章', items: [
{text: 'JavaScript', link: '/pages/8143cc480faf9a11/'}, // 注意link结尾有斜杠和没有斜杠的区别
{text: 'Vue', link: '/pages/802a1ca6f7b71c59/'},
]},
{text: '学习笔记', items:[
{text: '《JavaScript教程》笔记', link: '/note/javascript/'},
{text: '《ES6 教程》笔记', link: '/note/es6/'},
{text: '《Vue》笔记', link: '/note/vue/'},
{text: '《TypeScript 从零实现 axios》', link: '/note/typescript-axios/'},
{text: '小程序笔记', link: '/note/wx-miniprogram/'},
]}
]
},
{
text: '页面',
link: '/ui/',
items: [
{text: 'HTML', link: '/pages/8309a5b876fc95e3/'},
{text: 'CSS', link: '/pages/0a83b083bdf257cb/'},
]
},
{
text: '技术',
link: '/technology/',
items: [
{text: '技术文档', link: '/pages/9a7ee40fc232253e/'},
{text: 'GitHub技巧', link: '/pages/4c778760be26d8b3/'},
{text: 'Nodejs', link: '/pages/117708e0af7f0bd9/'},
{text: '博客搭建', link: '/pages/41f87d890d0a02af/'},
]
},
{
text: '更多',
link: '/more/',
items: [
{text: '学习', link: '/pages/a8692ab3bdcb4588/'},
{text: '面试', link: '/pages/aea6571b7a8bae86/'},
{text: '心情杂货', link: '/pages/2d615df9a36a98ed/'},
{text: '友情链接', link: '/friends/'},
]
},
{text: '关于', link: '/about/'},
{
text: '收藏',
link: '/pages/beb6c0bd8a66cea6/',
items: [
{text: '网站', link: '/pages/beb6c0bd8a66cea6/'},
{text: '资源', link: '/pages/eee83a9211a70f9d/'},
{text: 'Vue资源', link: '/pages/12df8ace52d493f6/'},
]
},
{
text: '索引',
link: '/archives/',
items: [
{text: '分类', link: '/categories/'},
{text: '标签', link: '/tags/'},
{text: '归档', link: '/archives/'},
]
}
]

View File

@ -1,12 +1,13 @@
// 此文件没有用到,仅用于测试和侧边栏数据格式的参考。
// !!!注:此文件没有使用到,仅用于测试和侧边栏数据格式的参考。
module.exports = { // 侧边栏
// 侧边栏
module.exports = {
'/01.前端/': [
{
title: 'JavaScript',
collapsable: false, //是否可折叠可选的默认true
children: [
['01.JavaScript/01.JavaScript中的名词概念','JavaScript中的名词概念'],
['01.JavaScript/01.JavaScript中的名词概念','JavaScript中的名词概念'],
['01.JavaScript/02.数据类型转换','数据类型转换'],
['01.JavaScript/03.ES5面向对象','ES5面向对象'],
['01.JavaScript/04.ES6面向对象','ES6面向对象'],
@ -21,13 +22,13 @@ module.exports = { // 侧边栏
collapsable: false,
children: [
['01.html-css/00.flex布局语法','flex布局语法'],
['01.html-css/01.flex布局案例-基础','flex布局案例-基础'],
['01.html-css/01.flex布局案例-基础','flex布局案例-基础'],
['01.html-css/02.flex布局案例-骰子','flex布局案例-骰子'],
['01.html-css/03.flex布局案例-网格布局','flex布局案例-网格布局'],
['01.html-css/04.flex布局案例-圣杯布局','flex布局案例-圣杯布局'],
['01.html-css/05.flex布局案例-输入框布局','flex布局案例-输入框布局'],
['01.html-css/06.CSS3之transform过渡','CSS3之transform过渡'],
['01.html-css/07.CSS3之animation动画','CSS3之animation动画'],
['01.html-css/05.flex布局案例-输入框布局','flex布局案例-输入框布局'],
['01.html-css/06.CSS3之transform过渡','CSS3之transform过渡'],
['01.html-css/07.CSS3之animation动画','CSS3之animation动画'],
]
},
],
@ -50,7 +51,7 @@ module.exports = { // 侧边栏
'/04.其他/': [
{
title: '学习',
collapsable: false,
collapsable: false,
children: [
['01.学习/01.学习网站','学习网站'],
['01.学习/02.学习效率低,忘性很大怎么办?','学习效率低,忘性很大怎么办?'],
@ -58,7 +59,7 @@ module.exports = { // 侧边栏
},
{
title: '学习笔记',
collapsable: false,
collapsable: false,
children: [
['02.学习笔记/01.小程序笔记','小程序笔记'],
]
@ -101,4 +102,4 @@ module.exports = { // 侧边栏
// // ]
// // }
// ],
}
}

View File

@ -0,0 +1 @@
b.xugaoyi.com

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -57,3 +57,16 @@ body .vuepress-plugin-demo-block__wrapper
border-bottom-color: $accentColor !important;
svg
fill: $accentColor !important;
//
.suggestions
overflow: auto
max-height: calc(100vh - 6rem)
@media (max-width: 719px) {
width: 90vw;
min-width: 90vw!important;
margin-right: -20px;
}
.highlight
color: $accentColor
font-weight: bold

View File

@ -1,16 +1,13 @@
//***vdoing-***//
//***vdoing-使***//
// 使https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/theme-vdoing/styles/palette.styl
//
// //
// $bannerTextColor = #fff // 首页banner区()
// $accentColor = #11A8CD
// $accentColor = #11A8CD //
// $activeColor = #ff5722
// $arrowBgColor = #ccc
// $badgeTipColor = #42b983
// $badgeWarningColor = darken(#ffe564, 35%)
// $badgeErrorColor = #DA5961
// //
// $navbarHeight = 3.6rem
@ -31,9 +28,14 @@
// --textColor: #004050
// --textLightenColor: #0085AD
// --borderColor: rgba(0,0,0,.15)
// //
// --codeBg: #f6f6f6
// --codeColor: #525252
// codeThemeLight()
// // //
// // --codeBg: #252526
// // --codeColor: #fff
// // codeThemeDark()
// //
// .theme-mode-dark
@ -59,4 +61,4 @@
// --borderColor: rgba(0,0,0,.15)
// --codeBg: #282c34
// --codeColor: #fff
// codeThemeDark()
// codeThemeDark()

View File

@ -1,16 +1,18 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 01.前端
data:
path: 01.前端
imgUrl: /img/web.png
description: JavaScript、ES6、Vue框架等前端技术
title: 前端
date: 2020-03-11 21:50:53
permalink: /web
permalink: /web/
sidebar: false
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -1,15 +1,18 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 02.页面
data:
path: 02.页面
imgUrl: /img/ui.png
description: html(5)/css(3),前端页面相关技术
title: 页面
date: 2020-03-11 21:50:54
permalink: /ui
permalink: /ui/
sidebar: false
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -1,15 +1,18 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 03.技术
data:
path: 03.技术
imgUrl: /img/other.png
description: 技术文档、教程、技巧、总结等文章
title: 技术
date: 2020-03-11 21:50:55
permalink: /technology
permalink: /technology/
sidebar: false
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -1,15 +1,18 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 04.更多
data:
path: 04.更多
imgUrl: /img/more.png
description: 学习、面试、在线工具等更多文章和页面
title: 更多
date: 2020-03-11 21:50:56
permalink: /more
permalink: /more/
sidebar: false
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -0,0 +1,395 @@
---
title: 33个非常实用的JavaScript一行代码
date: 2021-11-02 09:51:37
permalink: /pages/a61298/
categories:
- 前端
- JavaScript文章
tags:
- JavaScript
author: CUGGZ
---
## 一、日期处理
### 1. 检察日期是否有效
该方法用于检测给出的日期是否有效:
```javascript
const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());
isDateValid("December 17, 1995 03:24:00"); // true
复制代码
```
### 2. 计算两个日期之间的间隔
该方法用于计算两个日期之间的间隔时间:
```javascript
const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)
dayDif(new Date("2021-11-3"), new Date("2022-2-1")) // 90
复制代码
```
距离过年还有90天~
### 3. 查找日期位于一年中的第几天
该方法用于检测给出的日期位于今年的第几天:
```javascript
const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
dayOfYear(new Date()); // 307
复制代码
```
2021年已经过去300多天了~
### 4. 时间格式化
该方法可以用于将时间转化为hour:minutes:seconds的格式
```javascript
const timeFromDate = date => date.toTimeString().slice(0, 8);
timeFromDate(new Date(2021, 11, 2, 12, 30, 0)); // 12:30:00
timeFromDate(new Date()); // 返回当前时间 09:00:00
复制代码
```
## 二、字符串处理
### 1. 字符串首字母大写
该方法用于将英文字符串的首字母大写处理:
```javascript
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
capitalize("hello world") // Hello world
复制代码
```
### 2. 翻转字符串
该方法用于将一个字符串进行翻转操作,返回翻转后的字符串:
```javascript
const reverse = str => str.split('').reverse().join('');
reverse('hello world'); // 'dlrow olleh'
复制代码
```
### 3. 随机字符串
该方法用于生成一个随机的字符串:
```javascript
const randomString = () => Math.random().toString(36).slice(2);
randomString();
复制代码
```
### 4. 截断字符串
该方法可以从指定长度处截断字符串:
```javascript
const truncateString = (string, length) => string.length < length ? string : `${string.slice(0, length - 3)}...`;
truncateString('Hi, I should be truncated because I am too loooong!', 36) // 'Hi, I should be truncated because...'
复制代码
```
### 5. 去除字符串中的HTML
该方法用于去除字符串中的HTML元素
```javascript
const stripHtml = html => (new DOMParser().parseFromString(html, 'text/html')).body.textContent || '';
复制代码
```
## 三、数组处理
### 1. 从数组中移除重复项
该方法用于移除数组中的重复项:
```javascript
const removeDuplicates = (arr) => [...new Set(arr)];
console.log(removeDuplicates([1, 2, 2, 3, 3, 4, 4, 5, 5, 6]));
复制代码
```
### 2. 判断数组是否为空
该方法用于判断一个数组是否为空数组,它将返回一个布尔值:
```javascript
const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;
isNotEmpty([1, 2, 3]); // true
复制代码
```
### 3. 合并两个数组
可以使用下面两个方法来合并两个数组:
```javascript
const merge = (a, b) => a.concat(b);
const merge = (a, b) => [...a, ...b];
复制代码
```
## 四、数字操作
### 1. 判断一个数是奇数还是偶数
该方法用于判断一个数字是奇数还是偶数:
```javascript
const isEven = num => num % 2 === 0;
isEven(996);
复制代码
```
### 2. 获得一组数的平均值
```javascript
const average = (...args) => args.reduce((a, b) => a + b) / args.length;
average(1, 2, 3, 4, 5); // 3
复制代码
```
### 3. 获取两个整数之间的随机整数
该方法用于获取两个整数之间的随机整数
```javascript
const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
random(1, 50);
复制代码
```
### 4. 指定位数四舍五入
该方法用于将一个数字按照指定位进行四舍五入:
```javascript
const round = (n, d) => Number(Math.round(n + "e" + d) + "e-" + d)
round(1.005, 2) //1.01
round(1.555, 2) //1.56
复制代码
```
## 五、颜色操作
### 1. 将RGB转化为十六机制
该方法可以将一个RGB的颜色值转化为16进制值
```javascript
const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
rgbToHex(255, 255, 255); // '#ffffff'
复制代码
```
### 2. 获取随机十六进制颜色
该方法用于获取一个随机的十六进制颜色值:
```javascript
const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
randomHex();
复制代码
```
## 六、浏览器操作
### 1. 复制内容到剪切板
该方法使用 navigator.clipboard.writeText 来实现将文本复制到剪贴板:
```javascript
const copyToClipboard = (text) => navigator.clipboard.writeText(text);
copyToClipboard("Hello World");
复制代码
```
### 2. 清除所有cookie
该方法可以通过使用 document.cookie 来访问 cookie 并清除存储在网页中的所有 cookie
```javascript
const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));
复制代码
```
### 3. 获取选中的文本
该方法通过内置的 getSelection 属性获取用户选择的文本:
```javascript
const getSelectedText = () => window.getSelection().toString();
getSelectedText();
复制代码
```
### 4. 检测是否是黑暗模式
该方法用于检测当前的环境是否是黑暗模式,它是一个布尔值:
```javascript
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
console.log(isDarkMode)
复制代码
```
### 5. 滚动到页面顶部
该方法用于在页面中返回顶部:
```javascript
const goToTop = () => window.scrollTo(0, 0);
goToTop();
复制代码
```
### 6. 判断当前标签页是否激活
该方法用于检测当前标签页是否已经激活:
```javascript
const isTabInView = () => !document.hidden;
复制代码
```
### 7. 判断当前是否是苹果设备
该方法用于检测当前的设备是否是苹果的设备:
```javascript
const isAppleDevice = () => /Mac|iPod|iPhone|iPad/.test(navigator.platform);
isAppleDevice();
复制代码
```
### 8. 是否滚动到页面底部
该方法用于判断页面是否已经底部:
```javascript
const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight;
复制代码
```
### 9. 重定向到一个URL
该方法用于重定向到一个新的URL
```javascript
const redirect = url => location.href = url
redirect("https://www.google.com/")
复制代码
```
### 10. 打开浏览器打印框
该方法用于打开浏览器的打印框:
```javascript
const showPrintDialog = () => window.print()
复制代码
```
## 七、其他操作
### 1. 随机布尔值
该方法可以返回一个随机的布尔值使用Math.random()可以获得0-1的随机数与0.5进行比较,就有一半的概率获得真值或者假值。
```javascript
const randomBoolean = () => Math.random() >= 0.5;
randomBoolean();
复制代码
```
### 2. 变量交换
可以使用以下形式在不适用第三个变量的情况下,交换两个变量的值:
```javascript
[foo, bar] = [bar, foo];
复制代码
```
### 3. 获取变量的类型
该方法用于获取一个变量的类型:
```javascript
const trueTypeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
trueTypeOf(''); // string
trueTypeOf(0); // number
trueTypeOf(); // undefined
trueTypeOf(null); // null
trueTypeOf({}); // object
trueTypeOf([]); // array
trueTypeOf(0); // number
trueTypeOf(() => {}); // function
复制代码
```
### 4. 华氏度和摄氏度之间的转化
该方法用于摄氏度和华氏度之间的转化:
```javascript
const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;
const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9;
celsiusToFahrenheit(15); // 59
celsiusToFahrenheit(0); // 32
celsiusToFahrenheit(-20); // -4
fahrenheitToCelsius(59); // 15
fahrenheitToCelsius(32); // 0
复制代码
```
### 5. 检测对象是否为空
该方法用于检测一个JavaScript对象是否为空
```javascript
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;
复制代码
```
> 作者CUGGZ
> 链接https://juejin.cn/post/7025771605422768159

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# new命令原理

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# ES5面向对象

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# ES6面向对象

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 多种数组去重性能对比

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 比typeof运算符更准确的类型判断

View File

@ -0,0 +1,32 @@
---
title: 四级文件(测试)
date: 2020-12-11 11:15:53
permalink: /pages/8481d1/
categories:
- 前端
- JavaScript文章
- 三级目录
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
## 测试文件
Test Test
<code-group>
<code-block title="YARN" active>
```bash
yarn create vuepress-site [optionalDirectoryName]
# OR npx create-vuepress-site [optionalDirectoryName]
```
</code-block>
<code-block title="NPM">
```bash
npx create-vuepress-site [optionalDirectoryName]
```
</code-block>
</code-group>

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# JS随机打乱数组

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 判断是否为移动端浏览器

View File

@ -2,11 +2,14 @@
title: 将一维数组按指定长度转为二维数组
date: 2020-02-23 13:49:31
permalink: /pages/f1acb712033ac8da
categories:
categories:
- 前端
- JavaScript文章
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 将一维数组按指定长度转为二维数组
@ -35,7 +38,7 @@ console.log(pages(arr, 8)) // [[1, 2, 3, 4, 5, 6, 7, 8], [9]]
如图按需求图标模块中的图标个数是不确定的每页最多显示8个超出8个的显示到第二页实现向左滑动翻页。提供的数据是一个一维数组这时就可以使用上面的代码按长度为8转为二维数组再分页渲染到页面。
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200223142410.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200223142410.jpg)
```html
<template>
@ -72,4 +75,3 @@ console.log(pages(arr, 8)) // [[1, 2, 3, 4, 5, 6, 7, 8], [9]]
}
</script>
```

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 防抖与节流函数

View File

@ -6,7 +6,10 @@ categories:
- 前端
- JavaScript文章
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# JS获取和修改url参数

View File

@ -1,79 +0,0 @@
---
title: Vue项目开发前的一些准备工作
date: 2020-02-21 14:40:19
permalink: /pages/802a1ca6f7b71c59
categories:
- 前端
- Vue文章
tags:
-
---
# Vue项目开发前的一些准备工作
在使用Vue CLi创建一个项目之后正式进入开发前可能需要做一些工作比如引入重置样式表、解决移动端点击300ms延迟等等。
<!-- more -->
## <meta\>修改
根据项目需要看情况是否需要修改meta
```html
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimun-scale=1.0,maximum-scale=1.0,user-scalable=no">
```
## 重置样式表
为了统一每个浏览器的样式,以及去掉一些浏览器默认样式,需要加载引入重置样式表,常用的有 [normalize.css](http://necolas.github.io/normalize.css/)。或使用如下reset.css可根据项目需要作修改
```css
@charset "utf-8";html{background-color:#fff;color:#000;font-size:12px}
body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding:0}
body,input,textarea,button,select,pre,xmp,tt,code,kbd,samp{line-height:1.5;font-family:tahoma,arial,"Hiragino Sans GB",simsun,sans-serif}
h1,h2,h3,h4,h5,h6,small,big,input,textarea,button,select{font-size:100%}
h1,h2,h3,h4,h5,h6{font-family:tahoma,arial,"Hiragino Sans GB","微软雅黑",simsun,sans-serif}
h1,h2,h3,h4,h5,h6,b,strong{font-weight:normal}
address,cite,dfn,em,i,optgroup,var{font-style:normal}
table{border-collapse:collapse;border-spacing:0;text-align:left}
caption,th{text-align:inherit}
ul,ol,menu{list-style:none}
fieldset,img{border:0}
img,object,input,textarea,button,select{vertical-align:middle}
article,aside,footer,header,section,nav,figure,figcaption,hgroup,details,menu{display:block}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
blockquote:before,blockquote:after,q:before,q:after{content:"\0020"}
textarea{overflow:auto;resize:vertical}
input,textarea,button,select,a{outline:0 none;border: none;}
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}
mark{background-color:transparent}
a,ins,s,u,del{text-decoration:none}
sup,sub{vertical-align:baseline}
html {overflow-x: hidden;height: 100%;font-size: 50px;-webkit-tap-highlight-color: transparent;}
body {font-family: Arial, "Microsoft Yahei", "Helvetica Neue", Helvetica, sans-serif;color: #333;font-size: .28em;line-height: 1;-webkit-text-size-adjust: none;}
hr {height: .02rem;margin: .1rem 0;border: medium none;border-top: .02rem solid #cacaca;}
a {color: #25a4bb;text-decoration: none;}
```
在main.js引入样式
```js
import './assets/styles/reset.css'
```
## 解决移动端点击300ms延迟
通过npm安装 [fastclick](https://github.com/ftlabs/fastclick)
```sh
npm install fastclick -S
```
在main.js导入和使用
```js
import fastClick from 'fastclick'
fastClick.attach(document.body)
```

View File

@ -1,127 +0,0 @@
---
title: Vue CLi3 修改webpack配置
date: 2020-02-22 15:00:36
permalink: /pages/5d463fbdb172d43b
categories:
- 前端
- Vue文章
tags:
-
---
# Vue CLi3 修改webpack配置
## 审查项目的 webpack 配置
因为 `@vue/cli-service` 对 webpack 配置进行了抽象当你想查看webpack的配置时可以使用 `inspect`命令:
<!-- more -->
```sh
vue inspect # 在终端打印 webpack配置信息
```
```sh
vue inspect > output.js # 把webpack配置信息生成到output.js文件
```
注意,`output.js` 文件不是一个有效的 webpack 配置文件,仅用于审查。
## 修改webpack配置
以**修改路径别名**为例:
1. 项目根目录创建文件 `vue.config.js`
2. 参考如下代码修改路径别名:
```js
// vue.config.js
const path = require('path')
const resolve = dir => path.resolve(__dirname, dir)
module.exports = {
chainWebpack: config => {
config.resolve.alias
.set('styles', resolve('src/assets/styles'))
}
}
```
## 参考
* [官方文档](https://cli.vuejs.org/zh/guide/webpack.html)
* [官方 vue.config.js 参数说明](https://cli.vuejs.org/zh/config/#vue-config-js)
* [vue.config.js 设置接口代理示例](https://github.com/ustbhuangyi/vue-music/blob/master/vue.config.js)
* 配置示例:
```js
const path = require('path')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const ProxyAgent = require('proxy-agent')
const resolve = dir => path.resolve(__dirname, dir)
module.exports = {
outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录
runtimeCompiler: true,
assetsDir: 'static',
productionSourceMap: false, // 生产环境的 source map
parallel: require('os').cpus().length > 1,
configureWebpack: config => {
// 公共配置
// cdn引用时配置externals 防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖
config.externals = {
'vue': 'Vue',
'vue-router': 'VueRouter',
'element-ui': 'ELEMENT',
'vuex': 'Vuex',
'axios': 'axios'
}
config.resolve.alias = Object.assign({}, config.resolve.alias, {
'src': resolve('src/common'),
'common': resolve('src/views/common'),
'static': resolve('static')
})
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
config.optimization = {
minimizer: [
new UglifyJsPlugin({
uglifyOptions: {
compress: {
drop_console: true, // console
drop_debugger: false,
pure_funcs: ['console.log']// 移除console
}
}
})
]
}
} else {
// 为开发环境修改配置...
}
},
css: {
loaderOptions: {
css: {
importLoaders: 1 // @import 引入的文件可被一个loader处理 2 可被两个loader处理
}
}
},
devServer: {
port: 80,
disableHostCheck: true, // 可使用本地host配置的域名访问
proxy: {
'/api': {
agent: new ProxyAgent('http://132.128.11.12'),
target: 'http://132.128.11.12',
ws: false,
changeOrigin: true
}
}
}
}
```

View File

@ -1,91 +0,0 @@
---
title: Vue中的scoped和scoped穿透
date: 2020-02-23 10:54:23
permalink: /pages/c80d2751cf1f4268
categories:
- 前端
- Vue文章
tags:
-
---
# Vue中的scoped和scoped穿透
## 什么是scoped
在Vue文件中的style标签上有一个特殊的属性`scoped`。当一个style标签拥有`scoped`属性时候它的css样式只能用于当前的Vue组件可以使组件的样式不相互污染。如果一个项目的所有style标签都加上了`scoped`属性,相当于实现了样式的模块化。
<!-- more -->
```html
<style lang="less" scoped>
```
## scoped的实现原理
Vue中的`scoped`属性的效果主要是通过`PostCss`实现的。以下是转译前后的代码:
转译前:
```html
<style lang="less" scoped>
.example{
color:red;
}
</style>
<template>
<div class="example">scoped测试案例</div>
</template>
```
转译后:
```html
<style>
.example[data-v-5558831a] {
color: red;
}
</style>
<template>
<div class="example" data-v-5558831a>scoped测试案例</div>
</template>
```
`PostCSS`给一个组件中的所有DOM添加了一个独一无二的动态属性给css选择器额外添加一个对应的属性选择器来选择组件中的DOM,这种做法使得样式只作用于含有该属性的DOM元素(组件内部的DOM)。
**总结:`scoped`的渲染规则**
1. 给HTML的DOM节点添加一个不重复的data属性(例如: data-v-5558831a)来唯一标识这个DOM 元素
2. 在每句css选择器的末尾(编译后生成的css语句)加一个当前组件的data属性选择器(例如:[data-v-5558831a])来私有化样式
## scoped穿透
`scoped`看起来很好用当时在Vue项目中当我们引入第三方组件库时(如使用vue-awesome-swiper实现移动端轮播),需要在局部组件中修改第三方组件库的样式,而又不想去除`scoped`属性造成组件之间的样式覆盖。这时我们可以通过特殊的方式穿透scoped。
**stylus的样式穿透 使用 `>>>`**
```stylus
外层 >>> 子组件元素
样式
.wrapper >>> .swiper-pagination-bullet-active
background: #fff
```
**sass和less的样式穿透 使用`/deep/`**
```less
外层 /deep/ 子组件元素 {
样式
}
.wrapper /deep/ .swiper-pagination-bullet-active{
background: #fff;
}
```
## 在组件中修改第三方组件库样式的其它方法
上面我们介绍了在使用`scoped` 属性时,通过`scoped`穿透的方式修改引入第三方组件库样式的方法,下面我们介绍其它方式来修改引入第三方组件库的样式:
* 在vue组件中不使用`scoped`属性
* 在vue组建中使用两个style标签一个加上`scoped`属性,一个不加`scoped`属性把需要覆盖的css样式写在不加`scoped`属性的style标签里
* 建立一个reset.css(基础全局样式)文件里面写覆盖的css样式在入口文件main.js 中引入

View File

@ -1,220 +0,0 @@
---
title: Vue项目使用mock数据的几种方式
date: 2020-02-26 14:06:58
permalink: /pages/bd1af2f75fd361fc
categories:
- 前端
- Vue文章
tags:
-
---
# Vue项目使用mock数据的几种方式
本文是基于vue/cli 3.0创建的项目进行讲解
首先我们来说一说vue/cli 3.0 与 2.0 的一些不同:
1. 3.0 移除了 static 文件目录,新增了 public 目录,这个目录下的静态资源不会经过 webpack 的处理会被直接拷贝所以我们能够直接访问到该目录下的资源静态数据如json数据、图片等需要存放在这里。
<!-- more -->
> 放在`public`目录下的静态资源可直接通过(http://localhost:8080/+ 文件名称)来访问,不需要在前面加一个`/public`路径
2. 3.0 移除了 config、build 等配置目录,如果需要进行相关配置我们需要在根目录下创建` vue.config.js` 进行配置。
## 方式一使用mockjs插件实现本地mock数据
1. 安装`mockjs`插件
```sh
npm i mockjs -D
```
2. 在src目录下创建一个`mock`文件夹,在`mock`文件夹下创建一个`index.js`和一个`data`文件夹(用于存放项目需要的模拟数据)
```
.
├── src
│ ├── mock
│ │ └── data
│ │ │ └── test.json
│ │ └── index.js
. .
```
3. `mock`目录下的`index.js`示例如下:
```js
const Mock = require('mockjs')
// 格式: Mock.mock( url, 'post'|'get' , 返回的数据)
Mock.mock('/api/test', 'get', require('./data/test.json'))
Mock.mock('/api/test2', 'post', require('./data/test2.json'))
```
4. 在`main.js`入口文件中引入mock数据不需要时则注释掉
```js
require('./mock') // 引入mock数据不需要时则注释掉
```
5. 最后在vue模板中使用即可
```js
axios.get('/api/test')
.then(function(res){
console.log(res);
})
.catch(function(err){
console.log(err);
});
```
## 方式二在public文件夹放mock数据无需使用mockjs插件
1. 在`public`文件夹下创建一个`mock`文件夹用来存放模拟数据的json文件
```
.
├── public
│ ├── mock
│ │ └── test.json
. .
```
> 放在`public`目录下的静态资源可直接通过(http://localhost:8080/ + 文件名称)来访问,不需要在前面加一个`/public`路径。
2. 在`vue.config.js`里进行路径配置,如下:
```js
module.exports = {
devServer: {
proxy: {
'/api': { // 代理接口
target: 'http://localhost:8080',
ws: true, // proxy websockets
changeOrigin: true, // 是否开启跨域
pathRewrite: { // 路径重写
'^/api': '/mock'
}
}
}
}
}
```
[devServer.proxy官方文档](https://cli.vuejs.org/zh/config/#devserver-proxy)
3. 最后在vue模板中使用即可
```js
axios.get('/api/test.json') // 注意这里需要.json后缀
.then(function(res){
console.log(res);
})
.catch(function(err){
console.log(err);
});
```
> 这方式貌似不支持`post`请求,有待研究。
## 方式三前端本地启动一个nodejs服务vue项目向nodejs服务请求mock数据
1. 创建一个node项目为了方便本例直接在vue项目根目录创建当然也可以是其它任何地方
```
.
├── 项目根目录
│ └── serve.js
. .
```
2. `serve.js`示例
```js
const http = require('http')
// url模块用于处理与解析 前端传给后台的URL适用于get请求不适用于post请求详情参见文档
const urlLib = require('url')
http.createServer(function (req, res) {
const urlObj = urlLib.parse(req.url, true) // 注意这里的第二个参数一定要设置为true, query才能解析为对象形式,可以更加方便地获取key:value
const url = urlObj.pathname
const get = urlObj.query
console.log(url)
// 模拟的mock数据
const data = {
"code": 200,
"list": [
{
"id": '0001',
"name": "test"
},
{
"id": '0002',
"name": "test2"
}
]
}
// console.log(get.user)
if (url === '/test') { // 接口名
res.write(JSON.stringify(data))
}
res.end()
}).listen(9000)
```
3. 启动node服务
```sh
node serve.js
```
4. 配置`vue.config.js`的`proxy`,解决跨域
```js
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:9000',
ws: true, // proxy websockets
changeOrigin: true, // 是否开启跨域
pathRewrite: { // 路径重写
'^/api': ''
}
}
}
}
}
```
5. 最后在vue模板中使用即可
```js
axios.get('/api/test')
.then(function(res){
console.log(res);
})
.catch(function(err){
console.log(err);
});
```
## 总结
方式二目前来看只支持get方式请求对于post请求还有待研究。方式三虽然也是一种实现方式但实现起来比较麻烦。个人建议使用方式一灵活、方便。
## 相关文章
[《Vue CLi3 修改webpack配置》](https://xugaoyi.com/pages/5d463fbdb172d43b/)

View File

@ -1,14 +1,17 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 《JavaScript教程》笔记
imgUrl: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200112120340.png
data:
path: 《JavaScript教程》笔记
imgUrl: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200112120340.png
description: 本章内容为博主在原教程基础上添加学习笔记,教程版权归原作者所有。来源:<a href='https://wangdoc.com/javascript/' target='_blank'>JavaScript教程</a>
title: 《JavaScript教程》笔记
date: 2020-01-12 11:51:53
permalink: /note/javascript
permalink: /note/javascript/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -0,0 +1,697 @@
---
title: 《JavaScript高级程序设计》笔记
date: 2020-06-12 12:39:01
permalink: /note/js/
categories:
- 笔记
tags:
- 笔记
- 红宝书
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 《JavaScript高级程序设计》笔记
## 第1章 JavaScript简介
* JavaScript诞生于**1995**年
* 一个完整的JavaScript由这三部分组成
* **ECMAScript** (核心)
* **DOM** (文档对象模型)
* **BOM** (浏览器对象模型)
* ECMAScript的 **宿主环境** 包含
* 浏览器
* Node
* flash
* ECMAScript大致规定了下列组成部分
* 语法
* 类型
* 语句
* 关键字
* 保留字
* 操作符
* 对象
## 第2章 在HTML中使用JavaScript
* `<script>` 标签有下列常见属性:
* async 表示立即下载脚本,不妨碍页面的其他操作(异步下载)
* 无法保证每个js的顺序
* 用于互不依赖的js
* 主要目的是不让页面等js
* defer 延迟到文档完全解析和显示之后在执行
* 在`</html>`标签之后执行
* src 外部文件链接
* type 表示编写代码使用的脚本语言的内容类型
* `text/javascript`
## 第3章 基本概念
* 语法借鉴了C语言
* **区分大小写**
* **标识符**,指的是**变量、函数、属性**的名字
* 第一个字符必须是 字母、下划线、或美元符号
* 其他字符可以是字母、下划线、美元符号或数字
* 严格模式
```js
"use strict"
```
* 数据类型
* 基本数据类型
* Undefined、Null、Boolean、Number、String
* `typeof`操作符,一般用于基本类型的检测,返回相应类型的字符串
* “undefined”,"boolean","string","number","object","function"
* 复杂数据类型
* Object
* `Null`类型
* 表示**空对象指针**
* 只要意在保存对象的变量还没有真正保证对象,则保存`null`
* `undefined`派生自`null`,因此用`==`比较返回`true`
* 浮点数,指的是数值中包含一个小数点,并且小数点后面至少有一位数字
* NaN
* 任何涉及NaN的操作都返回`NaN`
* `NaN`与任何值都不相等,包括`NaN`本身
* 数值转换
* 有3个函数可以把非数值转换为数值
* Number() 可以用于任何数据类型
* parseInt() 专门用于字符串转数值,用于解析整数
* parseFloat() 专门用于字符串转数值,用于解析浮点数
* 字符串
* 数值、布尔值、对象、字符串值本身 都有toString()方法,用于转为字符串
* undefined和null没有toString()方法但可以使用String()方法
* Object类型
* 对象其实就是一组数据与功能的集合
* 使用Object()构造函数创建对象
```js
var obj = new Object(); // 同 obj = {}
```
* 每个对象实例都有下列属性和方法
* `constructor` 指向用于创建当前对象的构造函数 。(对于上面例子而言,就是`Object()`
* `hasOwnProperty(propertyName)` 用于检查给定属性是否在当前对象实例中
* `isPrototypeOf(Object)` 用于检查传入的对象是否是当前对象的原型
* `propertyIsEnumerable(propertyName)` 用于检查给定的属性是否能够使用`for-in`来枚举
* `toLocaleString()` 返回对象的字符串表示,该字符串与执行环境的地区对应
* `toString()` 返回对象的字符串表示
* `valueOf()` 返回对象的字符串、数值、布尔值表示。通常与`toString()`返回值相同
**所有对象都有以上属性和方法**
* **操作符**
* 一元操作符
* ++
* --
* 前置与后置的区别是与其他数运算时,前置会先执行递增(减)再与其他数运算,后置会先与其他数运算再对自身执行递增(减)
* 布尔操作符
* 与 (&&)
* 短路操作,即如果第一个操作数能决定结果,就不会对第二个操作数求值
* 或 (||)
* 短路操作,即如果第一个操作数能决定结果,就不会对第二个操作数求值
* 非 (!)
* 先使用Boolean()转成布尔值再取反
* **语句**(也称流控制语句)
* if-else
* do-while
* 后测试循环语句,在对表达式求值之前,循环体内的代码至少会被执行一次
```js
var i = 0
do {
i += 2
} while (i < 10) // 只要i小于10就会一直循环
```
* while
* 前测试语句
```js
var i = 0
while (i < 10) {
i += 2
} // 只要i小于10就会一直循环
```
* for
* 使用while循环做不到的使用for循环同样做不到。就是说for循环只是把与循环有关的代码集合在一个位置
```js
for(初始化;条件;循环后执行){
// ...
}
```
* break 立即退出循环
* continue 退出当前单次循环
*
* for- in 用来枚举对象的属性
* 函数
* 任何函数都可以在任何时候返回任何值
* 未指定返回值的函数会返回一个undefined
* 通过arguments访问参数它是一个类数组
## 第4章 变量、作用域和内存问题
* 变量包含两种类型的值:
* 基本类型值,指的是简单的数据段
* 引用类型值,指的是那些可能由多个值构成的**对象**
* 复制变量值
* 复制基本类型的变量值只是复制了该值的副本
* 复制引用类型的变量值时,同样也会将存储在变量对象的值复制一份放到新变量的空间中,不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象。两个变量指向同一个对象。
* 传递参数
* 所有函数的参数都是按值传递的
* 检测类型
* `typeof` 检测基础类型
* `instanceof`检测引用类型
* 变量 instanceof 构造函数obj instanceof Object
* 所有引用类型的值都是Object的实例
* 执行环境
* 在浏览器中,全局执行环境是`window`对象
* 每个函数都有自己的**执行环境**
* 作用域链
* 当代码在一个环境中执行时,会创建变量对象的一个**作用域链**
* 作用域链的前端,始终是当前执行的代码所在环境的变量对象。
* 作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量对象则来自下一个包含对象。这样一直延续到全局执行环境。
* 全局执行环境的变量对象始终都是作用域链中的最后一个对象。
* 垃圾收集
* JavaScript具有自动垃圾收集机制
* 对于不再使用的变量打上标记,被打上标记的变量将在执行回收时被清除,释放内存空间。
## 第5章 引用类型
* 引用类型的值是引用类型的一个实例
* 引用类型就是一种数据结构,描述了一类对象所具有的属性和方法
* 创建Object实例的方式有两种
* ```js
var obj = new Object()
```
* ```js
var obj = {} // 与 new Object() 相同但实际不会调用Object构造函数
```
* 访问对象的属性有两种:
* 点表示法 和 方括号表示法
### Array类型
* length属性不是只读的
* 检测数组
* ```js
value instanceof Array
```
* ```js
Array.isArray(value)
```
* 转换方法
* toLocaleString() 与toString()相同
* toString() 返回数组中每个值的字符串形式用逗号分隔拼接而成的字符串
* valueOf() 返回数组本身
#### join() 转换方法 (不改原数组)
接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串。
```js
var arr = ['red','blue','green']
var arrStr = arr.join('|') // "red|blue|green"
arr.join() // "red,blue,green"
arr.join('') // "redbluegreen"
```
#### 栈方法,后进先出 push() 、pop() (改变原数组)
* push() 向数组末尾添加成员,返回总长
* pop() 移除数组末尾一个成员,返回该成员
#### 队列方法,先进先出 push()、shift() 、unshift() (改变原数组)
* shift() 移除数组首个成员,返回该成员
* unshift() 在数组前面添加成员,返回总长
push()和shift() 形成队列方法
unshift和pop() 形成反方向队列方法
#### 重排序方法 reverse() 反转 sort() 排序 (改变原数组)
* reverse() 反转数组项的顺序
* sort() 接收一个函数作为参数,函数接收两个参数。
* 自定义排序函数内如果第一个参数应该位于第二个之前则手动返回一个负数如果两个参数相等手动返回0如果第一个参数应该位于第二个参数之后则手动返回一个正数。
```js
// 升序
arr.sort(function(a,b){
if(a < b) {
return -1
} else if (a > b) {
return 1
} else {
retunr 0
}
})
```
简写:
```js
arr.sort((a,b) => {
return a-b // 升序, b-a 降序
})
```
#### 操作方法 concat() 拼接slice() 切片splice() 移接
* concat() 拼接数组 **不改原数组**
```js
var arr1 = ['a','b']
var arr2 = arr1.concat('c','d') // ['a','b','c','d']
```
* slice() 切片(**不改原数组**
* slice(起始位置 [, 结束位置]) 返回起始位置到结束位置的成员,不包含结束位置。
```js
var arr1 = [1,2,3,4,5]
var arr2 = arr1.slice(1,3) // [2,3]
var arr3 = arr1.slice(2) // [3,4,5]
```
* splice() 移接 **改变原数组**
* splice(起始位置, 要删除的个数,要插入的项)
* 要插入的项 可以有0个或多个
* splice() 始终返回一个数组,该数组成员中包含原始数组中被删除的项,如果没有则返回空数组。
* 数组最强大的方法,可用于删除、插入、替换操作
```js
arr = [1,2,3,4]
arr.splice(1,1) // [2]
arr // [1,3,4]
arr = [1,2,3,4]
arr.splice(2,0,'a') // []
arr // [1,2,'a',3,4]
arr = [1,2,3,4]
arr.splice(3,1,'a') // [4]
arr // [1,2,3,'a']
```
#### 位置方法 indexOf()、lastIndexOf()
* 查找项的位置,没有则返回-1
* indexOf() 从前面开始找lastIndexOf() 从后面开始找
#### 迭代方法 every()、some() 、filter()、map() 、forEach() (都不会改变原数组)
* 5个迭代方法每个方法都接收两个参数
* 在每项上运行的函数
* 运行函数的作用域对象
* 函数接收三个参数:
* 数组项的值
* 该项的索引
* 数组本身
* every() 如果函数对每项都返回true则返回true
* 例判断数组每一项是否都大于2
```js
var numbers = [1,2,3,2,1]
var result = numbers.every((item,index,array) => {
return item > 2
})
result // false
```
* some() 如果函数对任一项返回true则返回true
* 例判断数组是否包含大于2的值
```js
var numbers = [1,2,3,2,1]
var result = numbers.some((item,index,array) => {
return item > 2
})
result // true
```
* filter() 返回函数会返回true的项组成的数组
* 例过滤掉数组中小于等于2的数
```js
var numbers = [1,2,3,4,5]
var result = numbers.filter((item,index,array) => {
return item >2
})
result // [3,4,5]
```
* map() 返回每次函数调用的结果组成的数组
* 例给数组每一项乘以2
```js
var numbers = [1,2,3,4,5]
var result = numbers.map((item,index,array) => {
return item * 2
})
result // [2,4,6,8,10]
```
* forEach() 循环数组每一项,没有返回值
* 例:循环每一项
```js
var numbers = [1,2,3,4,5]
numbers.forEach((item,index,array) => {
// 做一些操作
})
```
#### 归并方法 reduce() reduceRight()
* reduce() 归并为
* reduceRight() 从右边归并
* 这两个方法都会迭代数组所有项,然后构建一个最终结果并返回
* 方法接收两个参数: 每一项上调用的函数,归并基础的初始值
* 函数接收4个参数前一个的值、当前值、当前值的索引、数组对象
* 例:求数组每一项之和
```js
var numbers = [1,2,3,4,5]
var result = number.reduce((prev,cur,index,arr) => {
return prev + cur
})
result // 15
```
* reduce()方法第一次执行函数时prev是数组的第一项cur是数组的第二项
## 第6章 面向对象的程序设计
### 6.1 理解对象
* 对象的定义:无序属性的集合,其属性可以包含基本值、对象或者函数。
* 一组键值对,其中值可以是数据或函数
#### 6.1.1 对象的属性
包含两种:**数据属性** 和 **访问器属性**
##### 1.数据属性
* configurable 可配置性(限制 delete删除属性和`Object.defineProperty()`方法是否起效。默认true
* enumerable 可列举性默认true
* writable 可写性默认true
* value 值默认undefined
使用`Object.defineProperty()`方法修改这些默认属性。接收三个值:**属性所在的对象、属性名、描述符对象**。
```js
var person = {}
Object.defineProperty(person,'name',{
writable: false,
value: 'xu'
})
console.log(person.name) // xu
person.name = 'gao' // 修改无效
console.log(person.name) // xu
```
使用此方法定义属性如未指定`configurable`、`enumerable`、`writable` 将默认`false`。
##### 2.访问器属性
包含两个函数getter函数和setter函数这两个函数都是非必需。读取时调用getter访问时调用setter。
使用`Object.defineProperty()`方法定义访问器属性。
```js
var book = {
_year: 2020,
edition: 1
};
Object.defineProperty(book, 'year', {
get: function() {
return this._year
},
set: function(newValue){
if(newValue > 2020) {
this._year = newValue
this.edition += newValue - 2020
}
}
})
book.year = 2021
console.log(book.edition) // 2
```
当getter函数和setter函数只指定其中一个时另外一个将不能用。
#### 6.1.2 定义多个属性
`Object.defineProperties()`方法定义多个属性。接收两个参数: 要添加或修改属性的对象 、第二个参数是一个对象,其属性与第一个参数中的属性一一对应。
```js
var book = {}
Object.defineProperties(book, {
_year: { // 数据属性
writable: true,
value: 2004
},
edition: { // 数据属性
writable: true,
value: 1
},
year: { // 访问器属性
get: function() {
return this._year
},
set: function(newValue){
if(newValue > 2004){
this._year = newValue
this.edition += newValue - 2004
}
}
}
})
// 定义了三个属性,每个属性有不同的描述符
```
#### 6.1.3 读取属性的特性(描述符对象)
`Object.getOwnPropertyDescriptor()`方法获取描述符,接收两个参数: 属性所在的对象、属性名
```js
var book = {}
Object.defineProperties(book, {
_year: { // 数据属性
writable: true,
value: 2004
},
edition: { // 数据属性
writable: true,
value: 1
},
year: { // 访问器属性
get: function() {
return this._year
},
set: function(newValue){
if(newValue > 2004){
this._year = newValue
this.edition += newValue - 2004
}
}
}
})
var descriptor = Object.getOwnPropertyDescriptor(book, "_year")
console.log(descriptor) // {value: 2020, writable: true, enumerable: false, configurable: false}
var descriptor = Object.getOwnPropertyDescriptor(book, "year")
console.log(descriptor) // {enumerable: false, configurable: false, get: ƒ, set: ƒ}
```
### 6.2 创建对象
使用Object构造函数或对象字面量方式创建对象。缺点使用同一个接口创建很多对象时会产生大量重复代码。解决方案使用工厂模式的一种变体。
#### 6.2.1 工厂模式
## 第7章 函数表达式
## 第8章 BOM
## 第9章 客户端检测
## 第10章 DOM
## 第11章 DOM扩展
## 第12章 DOM2和DOM3
## 第13章 事件
## 第14章 表单脚本
## 第15章 使用Canvas绘图
## 第16章 HTML5脚本编程
## 第17章 错误处理与调试
## 第18章 JavaScript与XML
## 第19章 E4X
## 第20章 JSON
## 第21章 Ajax与Comet
## 第22章 高级技巧
## 第23章 离线应用与客户端存储
## 第24章 最佳实践
## 第25章 新兴的API

View File

@ -1,14 +1,17 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 《ES6 教程》笔记
imgUrl: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200112160453.png
data:
path: 《ES6 教程》笔记
imgUrl: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200112160453.png
description: 本章内容为博主在原教程基础上添加学习笔记,教程版权归原作者所有。来源:<a href='https://es6.ruanyifeng.com/' target='_blank'>ES6教程</a>
title: 《ES6 教程》笔记
date: 2020-01-12 15:49:22
permalink: /note/es6
permalink: /note/es6/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -1,14 +1,17 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 《Vue》笔记
imgUrl: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200204143633.png
description: 本章内容是博主的Vue学习笔记以官方文档为准。
data:
path: 《Vue》笔记
imgUrl: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200204143633.png
description: 本章内容是博主的Vue学习笔记非教程文档,请以官方文档为准。
title: 《Vue》笔记
date: 2020-02-04 12:16:12
permalink: /note/vue
permalink: /note/vue/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -0,0 +1,17 @@
---
pageComponent:
name: Catalogue
data:
path: 《React》笔记
imgUrl: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMS41IC0xMC4yMzE3NCAyMyAyMC40NjM0OCI+CiAgPHRpdGxlPlJlYWN0IExvZ288L3RpdGxlPgogIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIyLjA1IiBmaWxsPSIjNjFkYWZiIi8+CiAgPGcgc3Ryb2tlPSIjNjFkYWZiIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIi8+CiAgICA8ZWxsaXBzZSByeD0iMTEiIHJ5PSI0LjIiIHRyYW5zZm9ybT0icm90YXRlKDYwKSIvPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIiB0cmFuc2Zvcm09InJvdGF0ZSgxMjApIi8+CiAgPC9nPgo8L3N2Zz4K
description: 本章内容是博主的React学习笔记非教程文档请以官方文档为准。
title: 《React》笔记
date: 2021-03-25 19:50:12
permalink: /note/react/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -1,14 +1,17 @@
---
pageComponent:
pageComponent:
name: Catalogue
data:
key: 《TypeScript 从零实现 axios》
imgUrl: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200105104632.png
data:
path: 《TypeScript 从零实现 axios》
imgUrl: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200105104632.png
description: 学习使用 TypeScript 从零实现 axios 库
title: 《TypeScript 从零实现 axios》
date: 2020-01-05 10:40:48
permalink: /note/typescript-axios
permalink: /note/typescript-axios/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -0,0 +1,17 @@
---
pageComponent:
name: Catalogue
data:
path: 《Git》学习笔记
imgUrl: https://avatars3.githubusercontent.com/u/18133?s=200&v=4
description: <a href='https://git-scm.com/book/zh/v2' target='_blank'>Git官网文档</a>的学习笔记,以官方文档为准。
title: 《Git》学习笔记
date: 2020-11-18 17:40:48
permalink: /note/git/
article: false
comment: false
editLink: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,15 @@
---
title: 小程序笔记
date: 2019-12-25 14:27:01
permalink: /note/wx-miniprogram
tags:
- null
categories:
permalink: /note/wx-miniprogram/
tags:
- 小程序
categories:
- 前端
- 学习笔记
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 小程序笔记
@ -273,7 +276,7 @@ weUI是一套同微信原生视觉体验一致的基础样式库
#### 数据类型
String 字符串
String 字符串
Number 数字
@ -331,7 +334,7 @@ const testDB = wx.cloud.database({
#### serverless无服务
#### serverless无服务
概念函数即服务当需要后端服务的时候不需要关心后端的IP地址、域名只需要像调用普通函数一样既可以实现调用。
@ -541,7 +544,7 @@ pages 设置页面 设置后会自动在pages目录下生成相应的目录
type: Object // 数据类型
}
},
//子组件的wxml文件可直接引入数据{{playlist}}
```
@ -559,7 +562,7 @@ key的值不建议使用index因为当数据发生变化会dom结构产生变
<image src="{{item.url}}" mode="widthFix" class="img"></image>
</view>
</block>
<view class="playlist-container">
<block wx:for="{{playlist}}" wx:key="_id">
<!-- 参数playlist 自定义名称,传入组件的数据 -->
@ -592,7 +595,7 @@ cloudfunctions目录 右键 `新建 Node.js 云函数` > 输入目录名 `getPl
在云函数中向第三方服务器发送请求要依赖第三方库
**安装依赖包**
**安装依赖包**
云函数目录 `getPlaylist` 右键 `在终端打开` 打开命令行 输入命令:
@ -660,7 +663,7 @@ exports.main = async (event, context) => {
*/
// const list = await playlistCollection.get() // 获取数据库集合的数据 (因为有条数限制,不直接用此方法)
// 突破条数限制 (为了读取到全部数据然后与第三方服务器获取的数据进行对比去重)
const countResult = await playlistCollection.count() // 获取数据总条数 返回为对象
const total = countResult.total // 取得总条数
@ -680,7 +683,7 @@ exports.main = async (event, context) => {
}
})
}
// 获取第三方服务器端数据
const playlist = await rp(URL).then((res) => {
return JSON.parse(res).result
@ -744,9 +747,9 @@ exports.main = async (event, context) => {
.orderBy('createTime', 'desc').get().then((res) => {
return res.data
})
})
return app.serve() // 必需返回
}
@ -821,9 +824,9 @@ page页面js中有这两个函数
onReachBottom: function() {
this._getPlaylist()
},
下拉刷新请求完数据后
wx.stopPullDownRefresh() // 停止下拉刷新动画
```
@ -871,7 +874,7 @@ const TcbRouter = require('router'); // 必需
exports.main = (event, context) => {
const app = new TcbRouter({ event });// 必需
// app.use 表示该中间件会适用于所有的路由(全局中间件) 非必需
app.use(async (ctx, next) => { // 这个中间件表示所有路由都会调用到,而路由中间件为单独调用
ctx.data = {}; // 获取要传给小程序端的数据
@ -978,7 +981,7 @@ wx.setNavigationBarTitle({
```json
// 需要在app.json配置才能使用后台音乐播放的能力
// 需要在app.json配置才能使用后台音乐播放的能力
"requiredBackgroundModes": ["audio", "location"]
```
@ -1125,7 +1128,7 @@ methods: {
子组件1js
// 触发自定义事件 向父组件传值, 参数x可选传递给父组件的参数可以是对象或其他
this.triggerEvent('自定义事件名1', 参数x)
子组件2js
@ -1174,7 +1177,7 @@ wx.getSystemInfo({
onLaunch: function () {
this.globalData = {// 设置全局属性、方法
test: 0
}
}
},
setGlobalData(dataItem, val) { // 设置全局属性
this.globalData[dataItem] = val
@ -1236,11 +1239,11 @@ components内部的组件无法直接调用外部的样式。可通过以下方
'iconfont', // 对应的是上面等号前面的名称
'icon-sousuo'
],
子组件wxml 即可实现调用组件外的样式
<i class="iconfont icon-sousuo" />
注意如果想在组件内部再次修改样式不能够引用外部传进来的class名称进行修改可以另起一个class名称进行修改。
```
@ -1273,7 +1276,7 @@ Component({
<view>插槽内容</view>
</view>
</组件标签>
组件内部定义slot标签:
<view>
<!-- slot插槽 -->
@ -1286,7 +1289,7 @@ Component({
**如果需要实现多个插槽**
```
父组件调用传入插槽内容:
<组件标签>
<view slot="slot2">
@ -1304,8 +1307,8 @@ Component({
options: {// 设置
multipleSlots: true // 打开多个插槽功能
},
组件内部定义slot标签:
<view>
<!-- slot插槽 具名插槽-->
@ -1334,7 +1337,7 @@ options: {// 设置
}
})
} else { // 未授权
}
}
})
@ -1441,8 +1444,8 @@ wx.chooseImage({
<icon class="iconfont icon-shanchu" bindtap="onDelImage" data-index="{{index}}"></icon>
</view>
</block>
// 删除图片
onDelImage(event) {
// event.target.dataset.index 获取标签属性data-index的值
@ -1496,7 +1499,7 @@ wx.chooseImage({
})
/**
* 实现思路及步骤:
* 1、图片 -> 上传 云存储 -> 生成 图片fineID云文件ID
* 1、图片 -> 上传 云存储 -> 生成 图片fineID云文件ID
* 2、数据 -> 录入 云数据库
* 数据包括文字内容、图片fineID、昵称、头像、发布时间、openId(用户唯一标识在插入数据库是系统会自动添加_openId字段不需要另外插入)
*/
@ -1525,7 +1528,7 @@ wx.chooseImage({
})
promiseArr.push(p)
})
// 存入云数据库
Promise.all(promiseArr).then((res) => {
db.collection('blog').add({
@ -1607,7 +1610,7 @@ formatTime(new Date('Wed Aug 28 2019 16:23:06 GMT+0800 (中国标准时间)'))
#### 阻止事件冒泡
`bind``catch` 都可以绑定事件,它们的区别是 `bind` 有事件冒泡,而 `catch` 没有
`bind``catch` 都可以绑定事件,它们的区别是 `bind` 有事件冒泡,而 `catch` 没有
@ -1663,7 +1666,7 @@ formatTime(new Date('Wed Aug 28 2019 16:23:06 GMT+0800 (中国标准时间)'))
.orderBy('createTime', 'desc').get().then((res) => {
return res.data
})
})
```
@ -1777,7 +1780,7 @@ formatTime(new Date('Wed Aug 28 2019 16:23:06 GMT+0800 (中国标准时间)'))
##### 第三种N的数量巨大 几百成千上万个
**每个 N 都存储 1 的 id**
**每个 N 都存储 1 的 id**
如新浪博客中的一条博客下面有几千条评论
@ -1872,7 +1875,7 @@ exports.main = async (event, context) => {
page: `/pages/blog-comment/blog-comment?blogId=${event.blogId}`, // 用户点击推送消息打开的页面
data: { // 模板的内容keyword为在公众平台设置模板时对应的字段
keyword1: { // 评价内容
value: event.context
value: event.context
},
keyword2: { // 评价时间
value: event.time
@ -2018,7 +2021,7 @@ wx.getUserInfo({
})
```
在未授权的情况下需要用户先授权:
在未授权的情况下需要用户先授权:
```js
// 判断用户是否授权
@ -2042,12 +2045,12 @@ wx.getUserInfo({
}
}
})
授权按钮
<button class="login" open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">获取微信授权信息</button>
onGetUserInfo(event) { // 获取用户信息
const userInfo = event.detail.userInfo
if (userInfo) { // 用户允许授权
@ -2059,7 +2062,7 @@ wx.getUserInfo({
this.triggerEvent('loginFail')
}
}
```
> 注意上面这种方式没有获取到openId
@ -2290,7 +2293,7 @@ onLoad: function (options) {
}
```
```js
// 云函数入口函数
@ -2307,7 +2310,7 @@ exports.main = async (event, context) => {
// },
// isHyaline: true // 是否透明
})
// result为二进制数据, 先上传到云存储
// 上传云存储
@ -2469,7 +2472,7 @@ checkUpate(){
vue-admin-template <---通过ajax--> 基于Koa2HTTP API 或 tcb-admin-node ---->云函数、云数据库、云存储
@ -2524,7 +2527,7 @@ app.use(async (ctx) => {
const port = 3000
app.listen(port, () => { // 端口号,开启服务后的回调函数
console.log(chalk.green(`> 服务已开启访问http://localhost:${port}`))
})
})
```
@ -2713,9 +2716,9 @@ app.use(koaBody({
```js
router.post('/updatePlaylist', async (ctx, next) => {
const params = ctx.request.body // post请求获取前端传来的数据需安装和配置koa-body
})
```
@ -2733,7 +2736,7 @@ router.get('/list', async (ctx, next) => {
const query = `db.collection('swiper').get()`
const res = await callCloudDB(ctx, 'databasequery', query)
console.log(res)
})
```
@ -2746,14 +2749,3 @@ router.get('/list', async (ctx, next) => {
#### 后端上传图片到云存储
[文件上传](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/storage/uploadFile.html)

View File

@ -0,0 +1,137 @@
---
title: JS设计模式总结笔记
date: 2021-02-27 20:01:18
permalink: /pages/4643cd/
categories:
- 前端
- 学习笔记
tags:
- 设计模式
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# JS设计模式总结笔记
## 开篇:前端工程师的成长论
能够决定一个前端工程师的本质的,不是那些瞬息万变的技术点,而是那些**不变的东西**。
所谓“不变的东西”,就是**驾驭技术的能力**。
具体来说,它分为以下三个层次:
- 能用健壮的代码去解决具体的问题;
- 能用抽象的思维去应对复杂的系统;
- 能用工程化的思想去规划更大规模的业务。
> 基础理论知识是一个人的基线,理论越强基线越高。再为自己定一个目标和向上攀附的阶梯,那么达到目标就是时间问题,而很多野路子工程师搞了半辈子也未达到优秀工程师的基线,**很多他们绞尽脑汁得出的高深学问,不过是正规工程师看起来很自然的东西**。—— 吴军
## 设计模式之“道”
- 设计模式是“拿来主义”。如使用数学公式,不会从头推导一个公式。
### 核心思想
- 设计模式的核心思想——**封装变化**
- 保证可维护性、可扩展性。
- 将变与不变分离,确保变化的部分灵活,不变的部分稳定。——这就是所谓的“健壮”的代码。
## 设计模式之“术”
即最经典的**23种设计模式**。按`创建型`、`结构型`、`行为型`划分。
### 创建型
1. 单例模式
2. 原型模式
3. 构造器模式
4. 工厂模式
5. 抽象工厂模式
### 结构型
1. 桥接模式
2. 外观模式
3. 组合模式
4. 装饰器模式
5. 适配器模式
6. 代理模式
7. 享元模式
### 行为型
1. 迭代器模式
2. 解释器模式
3. 观察者模式
4. 访问者模式
5. 状态模式
6. 备忘录模式
7. 策略模式
8. 模板方法模式
9. 职责链模式
10. 命令模式
## 小结:
- 创建型模型封装了创建对象过程中的变化。
- 结构型模式封装了对象之间组合方式的变化。目的在于灵活的表达对象间的配合与依赖关系。
- 行为型模式将对象千变万化的行为进行抽离,确保安全、方便的更改。
## 创建型:工厂模式-简单工厂——区分“变与不变”
先了解构造器模式在JS中的构造函数即构造器。使用构造函数即使用构造器模式。
### 构造器模式
```js
function User(name, age, career){
this.name = name
this.age = age
this.career = career
}
const user = New User('张三', 18, '前端工程师')
```
变与不变user的属性(name, age, car)不变,即共性。变的是属性值,即个性。
### 简单工厂模式
```js
function User(name , age, career, work) {
this.name = name
this.age = age
this.career = career
this.work = work
}
// 工厂函数 (将变的部分抽离出一个函数)
function Factory(name, age, career) {
let work
switch(career) {
case 'coder':
work = ['写代码','写系分', '修Bug']
break
case 'product manager':
work = ['订会议室', '写PRD', '催更']
break
case 'boss':
work = ['喝茶', '看报', '见客户']
// 其它工种的职责分配
//case 'xxx':
//...
return new User(name, age, career, work)
}
```
工厂模式就是将创建对象的过程单独封装。

View File

@ -2,11 +2,14 @@
title: 常用meta整理
date: 2020-02-21 12:20:10
permalink: /pages/8309a5b876fc95e3
categories:
categories:
- 页面
- HTML
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 常用meta整理
@ -54,9 +57,9 @@ meta标签提供关于HTML文档的元数据。元数据不会显示在页面上
- **浏览器内核控制**国内浏览器很多都是双内核webkit和Tridentwebkit内核高速浏览IE内核兼容网页和旧版网站。而添加meta标签的网站可以控制浏览器选择何种内核渲染。[参考文档](http://se.360.cn/v6/help/meta.html)
```html
默认用极速核(Chrome)<meta name="renderer" content="webkit">
默认用ie兼容内核IE6/7<meta name="renderer" content="ie-comp">
默认用ie标准内核IE9/IE10/IE11/取决于用户的IE<meta name="renderer" content="ie-stand">
默认用极速核(Chrome)<meta name="renderer" content="webkit">
默认用ie兼容内核IE6/7<meta name="renderer" content="ie-comp">
默认用ie标准内核IE9/IE10/IE11/取决于用户的IE<meta name="renderer" content="ie-stand">
```
国内双核浏览器默认内核模式如下:
@ -173,7 +176,7 @@ url="url" 后者代表当前PC页所对应的手机页URL两者必须是一
<meta name="theme-color" content="#11a8cd">
```
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200221134927.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200221134927.jpg)
- **隐藏状态栏/设置状态栏颜色**只有在开启WebApp全屏模式时才生效。content的值为default | black | black-translucent 。
@ -205,7 +208,7 @@ url="url" 后者代表当前PC页所对应的手机页URL两者必须是一
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
```
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200221134638.png)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200221134638.png)
- **其他** [参考文档](http://fex.baidu.com/blog/2014/10/html-head-tags/?qq-pf-to=pcqq.c2c)
@ -239,4 +242,3 @@ url="url" 后者代表当前PC页所对应的手机页URL两者必须是一
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimun-scale=1.0,maximum-scale=1.0,user-scalable=no">
```

View File

@ -0,0 +1,32 @@
---
title: CSS教程和技巧收藏
date: 2020-08-11 17:13:52
permalink: /pages/c8f128/
categories:
- 页面
- CSS
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
## Flex 布局教程:语法篇
<http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html>
## CSS Grid 网格布局教程
<http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html>
## 只要一行代码,实现五种 CSS 经典布局
<http://www.ruanyifeng.com/blog/2020/08/five-css-layouts-in-one-line.html>
* 空间居中布局
> 不管容器的大小,项目总是占据中心点
* 并列式布局
> 多个项目并列,如果宽度不够,放不下的项目就自动折行
* 两栏式布局
> 一个边栏,一个主栏。边栏始终存在,主栏根据设备宽度,变宽或者变窄
* 三明治布局
> 页面在垂直方向上,分成三部分:页眉、内容区、页脚。
* 圣杯布局
> 最常用的布局,所以被比喻为圣杯。它将页面分成五个部分,除了页眉和页脚,内容区分成左边栏、主栏、右边栏。

View File

@ -8,7 +8,7 @@ categories:
- 页面
- CSS
tags:
-
- null
---
# flex布局语法

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# flex布局案例-基础

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# flex布局案例-骰子

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# flex布局案例-圣杯布局
> 可用<kbd>F12</kbd>开发者工具查看元素及样式可打开codepen在线编辑代码。

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# flex布局案例-网格布局
> 可用<kbd>F12</kbd>开发者工具查看元素及样式可打开codepen在线编辑代码。

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# flex布局案例-输入框布局

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# CSS3之transition过渡

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# CSS3之animation动画

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 「布局技巧」图片未加载前自动撑开元素高度

View File

@ -1,14 +1,17 @@
---
title: 文字在一行或行时超出显示省略号
title: 文字在一行或行时超出显示省略号
date: 2020-02-23 15:07:08
permalink: /pages/42b66999cc27dc25
categories:
categories:
- 页面
- CSS
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 文字在一行或两行时超出显示省略号
# 文字在一行或行时超出显示省略号
## 一行超出显示省略
@ -28,7 +31,7 @@ text-overflow: ellipsis;
.box-42b6{
border: 1px solid #999;
width: 200px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@ -63,19 +66,36 @@ display: -webkit-box;
.box2-42b6{
border: 1px solid #999;
width: 200px;
overflow: hidden;
white-space: normal;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
</style>
```
:::
## JS判断是否显示了省略号
有时候我们需要知道是否已经溢出,显示了省略号,可以用到`clientHeight`和`scrollHeight`的知识:
``` js
let cHeight = noWrapDiv.clientHeight;
let sHeight = noWrapDiv.scrollHeight;
if (sHeight > cHeight) {
console.log("已经溢出显示省略号");
} else {
console.log("没有溢出");
}
```
> 这里可以用于判断是否溢出显示展开收缩按钮。
#### 知识点拓展
scrollHeight元素内容的高度包括由于溢出导致的视图中不可见内容。不包含滚动条、边框和外边距。
clientHeight元素内容的可视区的高度包含内边距但不包括水平滚动条、边框和外边距。
offsetHeight元素的像素高度高度包含该元素的垂直内边距和边框且是一个整数。

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 从box-sizing属性入手了解盒子模型

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 水平垂直居中的几种方式-案例

View File

@ -2,18 +2,20 @@
title: 如何根据系统主题自动响应CSS深色模式
date: 2020-03-31 14:06:26
permalink: /pages/5dde351274f1e39d
sticky: 1
categories:
categories:
- 页面
- CSS
tags:
tags:
- css
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 如何根据系统主题自动响应CSS深色模式
<p align="center">
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200427163531.jpg" width="500">
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200427163531.jpg" width="500">
</p>
很多人喜欢选择APP或网站中的深色模式也许他们更喜欢这样的外观或者他们想让自己的眼睛免受疲劳。这篇文章将告诉你如何在网站中实现一个自动的CSS深色模式根据访客的系统主题来自动响应。
@ -55,8 +57,6 @@ body {
}
```
## 添加深色模式自动响应
现在我们定义了两组变量。剩下要做的一件事就是将`prefers-color-scheme`媒体查询添加到我们的深色模式变量中。
@ -112,8 +112,3 @@ window.matchMedia('(prefers-color-scheme: light)').addListener(listeners.light)
## 结论
我们不仅可以在布局方面响应不同尺寸屏幕,还可以按系统主题响应深色模式。我相信你的深夜访客,或者那些喜欢深色模式的人,会感谢你的。

View File

@ -6,7 +6,10 @@ categories:
- 页面
- CSS
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 「css技巧」使用hover和attr()定制悬浮提示-demo

View File

@ -2,10 +2,13 @@
title: CSS-function汇总
date: 2020-05-12 09:36:44
permalink: /pages/3da0d7
categories:
categories:
- 页面
- CSS
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200512161232.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200512161232.jpg)

View File

@ -0,0 +1,27 @@
---
title: CSS给table的tbody添加滚动条
date: 2022-06-29 09:34:23
permalink: /pages/55f894/
categories:
- 页面
- CSS
tags:
-
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
```css
table tbody {
height: 200px;
overflow-y: auto;
display: block;
}
table thead,
tbody tr {
display: table;
width: 100%;
}
```

View File

@ -0,0 +1,18 @@
---
title: 网格布局中的动画
date: 2023-09-15 17:30:57
permalink: /pages/b35f63/
categories:
- 页面
- CSS
tags:
-
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
<iframe height="567.2890625" style="width: 100%;" scrolling="no" title="网格布局中的动画" src="https://codepen.io/xugaoyi/embed/zYydzWQ?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/xugaoyi/pen/zYydzWQ">
Untitled</a> by xugaoyi (<a href="https://codepen.io/xugaoyi">@xugaoyi</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>

View File

@ -1,112 +0,0 @@
---
title: 混入(Mixins)
date: 2020-02-23 15:47:03
permalink: /pages/9f15c1a281d8bedb
categories:
- 页面
- stylus
tags:
-
---
# stylus混入(Mixins)
## 混入(Mixins)
混入和函数定义方法一致,但是应用却大相径庭。
一个简单的混入应用,定义一个超出显示省略号的`ellipsis()`方法,在需要用到的地方只需插入这个方法,其样式会扩展并复制到选择器中。
<!-- more -->
```stylus
ellipsis()
overflow hidden
white-space nowrap
text-overflow ellipsis
```
```stylus
p
ellipsis()
```
下面有定义的`border-radius(n)`方法,其却作为一个*mixin*(如,作为状态调用,而非表达式)调用。
当`border-radius()`选择器中调用时候,属性会被扩展并复制在选择器中。
```stylus
border-radius(n)
-webkit-border-radius n
-moz-border-radius n
border-radius n
form input[type=button]
border-radius(5px)
```
编译成:
```css
form input[type=button] {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
```
使用混入书写,你可以完全忽略括号,提供梦幻般私有属性的支持。
```stylus
border-radius(n)
-webkit-border-radius n
-moz-border-radius n
border-radius n
form input[type=button]
border-radius 5px
```
注意到我们混合书写中的`border-radius`当作了属性,而不是一个递归函数调用。
更进一步,我们可以利用`arguments`这个局部变量,传递可以包含多值的表达式。
```stylus
border-radius()
-webkit-border-radius arguments
-moz-border-radius arguments
border-radius arguments
```
现在,我们可以像这样子传值:`border-radius 1px 2px / 3px 4px`!
另外一个很赞的应用是特定的私有前缀支持——例如IE浏览器的透明度
```stylus
support-for-ie ?= true
opacity(n)
opacity n
if support-for-ie
filter unquote('progid:DXImageTransform.Microsoft.Alpha(Opacity=' + round(n * 100) + ')')
#logo
&:hover
opacity 0.5
```
渲染为:
```css
#logo:hover {
opacity: 0.5;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
}
```
来源:<https://www.zhangxinxu.com/jq/stylus/mixins.php>

View File

@ -6,7 +6,10 @@ categories:
- 技术
- 技术文档
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---

View File

@ -2,11 +2,14 @@
title: Markdown使用教程
date: 2019-12-25 14:27:01
permalink: /pages/ad247c4332211551
categories:
categories:
- 技术
- 技术文档
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# Markdown使用教程
@ -189,7 +192,7 @@ Markdown 段落没有特殊的格式,直接编写文字,**需要段落缩进
### 字体
```markdown
*斜体文本*
*斜体文本*
或 _斜体文本_
**粗体文本**
或 __粗体文本__
@ -242,10 +245,10 @@ ___粗斜体文本___
文字高亮能使行内部分文字高亮,使用一对反引号。
```markdown
`html` `css` `javascript`
`html` `css` `javascript`
```
`html` `css` `javascript`
`html` `css` `javascript`
@ -432,7 +435,7 @@ ___粗斜体文本___
- [ ] 第三项
### 列表嵌套
@ -534,7 +537,7 @@ ___粗斜体文本___
如果是段落上的一个代码片段可以用反引号把它包起来(**`**),示例:
```markdown
`alert()`
`alert()`
```
`alert()`
@ -645,7 +648,7 @@ function test() {
[Markdown](#一Markdown)
[链接](#九链接)
[链接](#九链接)
[流程图](#流程图)
@ -662,7 +665,7 @@ function test() {
当然,你也可以像链接那样对图片地址使用变量:
```markdown
这里链接用 img 作为图片地址变量
这里链接用 img 作为图片地址变量
然后在文档的结尾或其他位置给变量赋值(图片地址)
![RUNOOB][img]
[img]: https://raw.githubusercontent.com/xugaoyi/image_store/master/blog/md_logo.png
@ -737,7 +740,7 @@ github上如果引用其他github仓库中的图片则要注意地址格式`
**对齐方式**
- **-:** 设置内容和标题栏居右对齐
- **-:** 设置内容和标题栏居右对齐
- **:-** 设置内容和标题栏居左对齐
- **:-:** 设置内容和标题栏居中对齐
@ -795,11 +798,11 @@ Emoji表情英文名的前后加冒号Typore上先输入冒号再输入首字
Markdown 使用了很多特殊符号来表示特定的意义,如果需要显示特定的符号则需要使用反斜杠转义字符:
```markdown
**未转义星号显示加粗**
**未转义星号显示加粗**
\*\* 转义显示星号 \*\*
```
**未转义星号显示加粗**
**未转义星号显示加粗**
\*\* 转义显示星号 \*\*
@ -837,7 +840,7 @@ _ 下划线
```markdown
$$
\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\
@ -848,7 +851,7 @@ $$
$$
\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\
@ -857,7 +860,7 @@ $$
### 图表
```markdown
````markdown
```chart
,Budget,Income,Expenses,Debt
June,5000,8000,4000,6000
@ -878,31 +881,14 @@ sequenceDiagram
A->>B: 是否已收到消息?
B-->>A: 已收到消息
```
```
````
> 注在Typora中未支持
```chart
,Budget,Income,Expenses,Debt
June,5000,8000,4000,6000
July,3000,1000,4000,3000
Aug,5000,7000,6000,3000
Sep,7000,2000,3000,1000
Oct,6000,5000,4000,2000
Nov,4000,3000,5000,
type: pie
title: Monthly Revenue
x.title: Amount
y.title: Month
y.suffix: $
```
### 流程图
```markdown
````markdown
语法:
```mermaid
graph TD
@ -912,7 +898,7 @@ C -->|条件C1| D[模块D]
C -->|条件C2| E[模块E]
C -->|条件C3| F[模块F]
```
```
````
流程图相关文章:
@ -920,40 +906,26 @@ C -->|条件C3| F[模块F]
<http://www.imooc.com/article/292708>
```mermaid
graph TD
A[模块A] -->|A1| B(模块B)
B --> C{判断条件C}
C -->|条件C1| D[模块D]
C -->|条件C2| E[模块E]
C -->|条件C3| F[模块F]
```
### 时序图
```markdown
````markdown
```mermaid
sequenceDiagram
A->>B: 是否已收到消息?
B-->>A: 已收到消息
```
```
````
```mermaid
sequenceDiagram
A->>B: 是否已收到消息?
B-->>A: 已收到消息
```
### 甘特图
### 甘特图
``` markdown
```` markdown
```mermaid
gantt
title 甘特图
@ -965,18 +937,6 @@ section 项目B
任务3 :2018-06-12 , 12d
任务4 : 24d
```
```
````
```mermaid
gantt
title 甘特图
dateFormat YYYY-MM-DD
section 项目A
任务1 :a1, 2018-06-06, 30d
任务2 :after a1 , 20d
section 项目B
任务3 :2018-06-12 , 12d
任务4 : 24d
```
[回到顶部](#markdown使用教程)
[回到顶部](#markdown使用教程)

View File

@ -6,7 +6,10 @@ categories:
- 技术
- 技术文档
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# npm常用命令

View File

@ -1,7 +1,7 @@
---
author:
name: TZYY
link: https://www.cnblogs.com/tzyy/p/5193811.html
name: xugaoyi
link: https://github.com/xugaoyi
title: npm packageJson属性详解
date: 2020-04-08 17:16:38
permalink: /pages/dec4f3f00e71a312
@ -9,7 +9,7 @@ categories:
- 技术
- 技术文档
tags:
-
- null
---

View File

@ -6,7 +6,10 @@ categories:
- 技术
- 技术文档
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# yaml语言教程

View File

@ -0,0 +1,34 @@
---
title: Git修改分支名
date: 2022-08-11 10:51:18
permalink: /pages/922650/
categories:
- 技术
- 技术文档
tags:
-
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
## 同时修改本地分支名和对应的远程分支名
修改前要确保本地分支的代码是最新的,并且修改后不会影响到同事的代码。
1. 修改本地分支名
```sh
git branch -m oldBranchName newBranchName
```
2. 删除远程分支
```sh
git push origin :oldBranchName
# 或者 git push origin --delete oldBranchName
```
3. 改名后的本地分支推送到远程
```sh
git push --set-upstream origin newBranchName
```

View File

@ -6,7 +6,10 @@ categories:
- 技术
- GitHub技巧
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# GitHub高级搜索技巧

View File

@ -2,11 +2,14 @@
title: GitHub Actions 实现自动部署静态博客
date: 2019-12-27 11:44:41
permalink: /pages/6b9d359ec5aa5019
categories:
categories:
- 技术
- GitHub技巧
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# GitHub Actions 实现自动部署静态博客
@ -32,19 +35,19 @@ coding pages在国内的访问速度比github pages要快很多而且还可
然后将这两个token同时储存到github仓库的`Settings/Secrets`里面。变量名可以随便取,但是注意要和后面的`ci.yml`文件内的变量名一致,这里取的是`ACCESS_TOKEN`和`CODING_TOKEN`。
![token设置](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103124812.jpg 'token设置')
![token设置](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103124812.jpg 'token设置')
GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的`.github/workflows`目录。
workflow 文件采用 [YAML 格式](https://xugaoyi.com/pages/4e8444e2d534d14f/),文件名可以任意取,但是后缀名统一为`.yml`,比如`ci.yml`。一个库可以有多个 workflow 文件。GitHub 只要发现`.github/workflows`目录里面有`.yml`文件,就会自动运行该文件。
workflow 文件采用 [YAML 格式](https://xugaoyi.com/pages/4e8444e2d534d14f/),文件名可以任意取,但是后缀名统一为`.yml`,比如`ci.yml`。一个库可以有多个 workflow 文件。GitHub 只要发现`.github/workflows`目录里面有`.yml`文件,就会自动运行该文件。
我的`ci.yml`文件:
我的`ci.yml`文件:
```yaml
name: CI
# 在master分支发生push事件时触发。
on:
on:
push:
branches:
- master
@ -56,7 +59,7 @@ jobs: # 工作流
matrix:
node-version: [10.x]
steps:
steps:
- name: Checkout # 步骤1
uses: actions/checkout@v1 # 使用的动作。格式userName/repoName。作用检出仓库获取源码。 官方actions库https://github.com/actions
- name: Use Node.js ${{ matrix.node-version }} # 步骤2
@ -67,7 +70,7 @@ jobs: # 工作流
env: # 设置环境变量
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} # toKen私密变量
CODING_TOKEN: ${{ secrets.CODING_TOKEN }} # 腾讯云开发者平台coding私密token
run: npm install && npm run deploy # 执行的命令
run: npm install && npm run deploy # 执行的命令
# package.json 中添加 "deploy": "bash deploy.sh"
```
@ -136,11 +139,10 @@ rm -rf docs/.vuepress/dist
如下你想查看部署日志你可以到github仓库的Actions这一项查看。
![部署日志](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103124813.png '部署日志')
![部署日志](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103124813.png '部署日志')
## 相关文章
[《GitHub Actions 定时运行代码:每天定时百度链接推送》](https://xugaoyi.com/pages/f44d2f9ad04ab8d3/)

View File

@ -2,12 +2,15 @@
title: GitHub Actions 定时运行代码:每天定时百度链接推送
date: 2019-12-30 21:23:00
permalink: /pages/f44d2f9ad04ab8d3
categories:
categories:
- 技术
- GitHub技巧
tags:
tags:
- github
- 博客
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# GitHub Actions 定时运行代码:每天定时百度链接推送
@ -23,11 +26,11 @@ GitHub Actions 是一个 CI/CD持续集成/持续部署)工具,但也可
链接主动推送在百度站长中有介绍,如图。
![主动提交](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103124306.png)
![主动提交](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103124306.png)
具体使用方法就是创建一个文件`urls.txt`,文件内每行一条链接的格式写入提交的多个链接,如图。
![urls.txt](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103124305.png)
![urls.txt](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103124305.png)
运行命令
@ -70,7 +73,7 @@ function main() {
const files = readFileList(); // 读取所有md文件数据
files.forEach( file => {
const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
const { data } = matter(fs.readFileSync(file.filePath, 'utf8'));
if (data.permalink) {
const link = `\r\n${DOMAIN}${data.permalink}/`;
@ -108,7 +111,7 @@ GitHub Actions 是一个 CI/CD持续集成/持续部署)工具,但也可
```sh
## baiduPush.yml
name: 'baiduPush'
on:
push:
schedule:
@ -174,7 +177,7 @@ rm -rf urls.txt # 灭迹
写好配置推送到仓库就会在每天的早上7点钟自动运行命令生成一个包含博客所有页面链接的`urls.txt`文件,并把所有链接一次性推送到百度。麻麻再也不用担心我的网站不被收录~~:kissing_heart: :kissing_heart: :kissing_heart:
写好配置推送到仓库就会在每天的早上7点钟自动运行命令生成一个包含博客所有页面链接的`urls.txt`文件,并把所有链接一次性推送到百度。麻麻再也不用担心我的网站不被收录~~:kissing_heart: :kissing_heart: :kissing_heart:
在这个基础上可以扩展使用GitHub Actions满足你自己的各种定时需求。
@ -185,6 +188,3 @@ rm -rf urls.txt # 灭迹
[《 GitHub Actions 实现自动部署静态博客》](https://xugaoyi.com/pages/6b9d359ec5aa5019/)
[《解决百度无法收录搭建在GitHub上的静态博客的问题》](https://xugaoyi.com/pages/41f87d890d0a02af/)

View File

@ -2,11 +2,14 @@
title: GitHub加速下载项目的方法
date: 2020-03-09 10:28:09
permalink: /pages/95331c6a9613faf8
categories:
categories:
- 技术
- GitHub技巧
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# GitHub加速下载项目的方法
@ -14,7 +17,7 @@ tags:
<!-- more -->
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200309112604.png)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200309112604.png)
@ -24,17 +27,17 @@ tags:
2. 登录码云之后在页面右上角的加号选择`从GitHub/GitLab导入项目`
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200309112711.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200309112711.jpg)
3. 选择`从URL导入`粘贴从GitHub复制来的仓库地址然后导入这个导入过程一般是很快的。
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200309112710.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200309112710.jpg)
4. 从码云克隆刚导入的这个项目,克隆速度会快很多,网速好的能达到几兆每秒(具体速度就看你的网速了,吐槽一下我家网速,总在关键时刻显示"视频加载中"....
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200309112712.jpg)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200309112712.jpg)
5. 另外要注意的一点克隆下来的项目关联的是码云的仓库如果你需要关联github仓库需要更改远程仓库。
@ -47,4 +50,3 @@ tags:
这个方法适合用于克隆比较大的项目如果克隆小项目20k/s的速度好像还能将就~~

View File

@ -6,7 +6,10 @@ categories:
- 技术
- Nodejs
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# nodejs递归读取所有文件
```js

View File

@ -6,7 +6,10 @@ categories:
- 技术
- 博客搭建
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 解决百度无法收录搭建在GitHub上的静态博客的问题

View File

@ -6,7 +6,10 @@ categories:
- 技术
- 博客搭建
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 使用Gitalk实现静态博客无后台评论系统

View File

@ -2,11 +2,14 @@
title: GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床
date: 2020-01-03 12:55:43
permalink: /pages/a5f73af5185fdf0a
categories:
categories:
- 技术
- 博客搭建
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床
@ -19,6 +22,13 @@ A写博客文章时图片的上传和存放是一个问题有的朋友
<!-- more -->
::: warning 更好的选择...
以下内容是比较旧的,现在我发现一个更好用,配置更方便的图床工具:<https://picx.xpoet.cn/>
使用方法看一下他网站的使用教程就行。 撒由那拉~~
::: right
2021.07.04
:::
**Q图床的选择**
@ -45,12 +55,11 @@ A`jsDelivr`是国外的一家优秀的公共 CDN 服务提供商,该平台
* 分支名:填写主分支`master`即可
* Token前面生成的token密钥
* 存储路径:按你自己的需求填写
* 自定义域名图片上传后PicGo 会按照 `自定义域名+上传的图片名` 的方式生成访问链接,此处我们填写`jsDelivr`的CDN加速地址格式`https://cdn.jsdelivr.net/gh/<用户名>/<仓库名>`
* 自定义域名图片上传后PicGo 会按照 `自定义域名+上传的图片名` 的方式生成访问链接,此处我们填写`jsDelivr`的CDN加速地址格式`https://jsd.cdn.zzko.cn/gh/<用户名>/<仓库名>`
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103105720.png)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103105720.png)
4. 使用<https://tinypng.cn/>压缩你要上传的图片(如图片已经很小或你有更好的压缩工具可省略这一步)
5. 在PigGo的`上传区`上传你的图片,到`相册`一键复制刚刚上传的图片URL至此你就可以在你的文章当中愉快的插入图片啦~ 更多功能自己去探索吧~~
![](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103121148.png)
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103121148.png)

View File

@ -3,6 +3,9 @@ title: vdoing主题效果图
date: 2020-04-08 11:27:22
permalink: /pages/d557b9a89a215d2e
article: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# vdoing主题效果图
@ -10,39 +13,38 @@ article: false
## PC端
<br/>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408125410.png" style="width:48%;"/>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120138.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408125410.png" style="width:48%;"/>
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120138.png" style="width:48%;" />
<p align="center">首页 & 目录页△</p>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120144.png" style="width:48%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120145.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120144.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120145.png" style="width:48%;" />
<p align="center">文章详情页 & 时间轴页△</p>
## 首页个性化大图
<br/>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408125412.png" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408125412.png" />
<p align="center">首页个性化大图△</p>
## 深色模式和阅读模式
<br/>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408125408.png" style="width:48%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120139.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408125408.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120139.png" style="width:48%;" />
<p align="center">深色模式△</p>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408125409.png" style="width:48%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120143.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408125409.png" style="width:48%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120143.png" style="width:48%;" />
<p align="center">阅读模式△</p>
## 移动端
<br/>
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120606.png" style="width:24%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120147.png" style="width:24%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408120148.png" style="width:24%;" />
<img src="https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200408130831.png" style="width:24%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120606.png" style="width:24%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120147.png" style="width:24%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408120148.png" style="width:24%;" />
<img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200408130831.png" style="width:24%;" />
<p align="center">移动端效果△</p>
<style scoped>
/* .content__default img{border: 1px solid #ccc;} */
</style>

View File

@ -0,0 +1,42 @@
---
title: 费曼学习法
date: 2020-07-16 10:04:14
permalink: /pages/f2a556/
categories:
- 更多
- 学习
tags:
- 学习方法
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
费曼学习法,我很喜欢的一个学习方法,简单来说,就是:通过向别人清楚的解说某一件事或是写一篇浅显易懂的教程文章,来确认自己是否真正弄懂了这件事。
可以说是在通过向别讲解过程中来对自身的 **查缺补漏**
### 步骤
费曼学习法分为4个步骤:
1. **确定学习目标**
你想学习的概念、内容、主题是什么。
2. **模拟教学学习法**
你要模拟自己是一位老师,面对完全不懂这个领域的人,用自己的话,尽可能具体形象地讲诉。这样的讲诉有助于你活学活用,触类旁通,联系生活具体情境。
3. **回顾**
反思第2步遇到的问题哪些地方卡壳了哪些地方对方没有真正听懂。找出问题的要害把握关键环节。
4. **简化**
把这些遇到问题的地方重新梳理理解尽可能了解更多背景和相关知识再用尽可能简化的方式重新表达设法看穿本质。然后返回第2步。
> 参考:
>
> [《费曼学习法:为何被称为史上最牛的学习法,它的本质究竟是什么?》](https://zhuanlan.zhihu.com/p/88209825)
>
> [《费曼学习法》](https://www.jianshu.com/p/90be6a69528a)

View File

@ -0,0 +1,44 @@
---
title: 笔记方法
date: 2020-07-16 11:00:55
permalink: /pages/e60c81/
categories:
- 更多
- 学习
tags:
- 笔记方法
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
::: center
## 康奈尔笔记法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105752.jpg)
## 思维导图法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105747.jpg)
## 金三角笔记法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105753.jpg)
## 曼陀罗九宫格笔记法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105748.jpg)
## 记号记录法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105749.jpg)
## 六色笔记法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105750.jpg)
## 加工笔记法
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105751.jpg)
## 整理笔记要点1-科学标记重点
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105746.jpg)
## 整理笔记要点2-修改不涂改
![](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200716105745.jpg)
:::

View File

@ -2,11 +2,14 @@
title: 提高学习效率的策略
date: 2020-01-04 11:54:14
permalink: /pages/a8692ab3bdcb4588
categories:
categories:
- 更多
- 学习
tags:
-
tags:
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 提高学习效率的策略
@ -71,4 +74,4 @@ tags:
——以上内容摘自《认知天性》,结合本人的个人理解,更多内容请查看该书籍。
![认知天性](https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103144032.png '认知天性')
![认知天性](https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103144032.png '认知天性')

View File

@ -6,7 +6,10 @@ categories:
- 更多
- 学习
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 提高记忆的技巧

View File

@ -6,7 +6,10 @@ categories:
- 更多
- 学习
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 自律小建议

View File

@ -6,7 +6,10 @@ categories:
- 更多
- 学习
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 处理问题的思路

View File

@ -7,6 +7,9 @@ categories:
- 学习
tags:
- 搜索技巧
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
搜索引擎相信大家经常在使用,但是有时候想搜某个信息时却搜出来一大堆不相关的(百度:你们都在看我干什么?)。下面我们来介绍几种搜索技巧,可以提升搜索效率,助你快速查资料,妈妈再也不担心我的学习了('妈~我真的是在找学习资料'

View File

@ -6,7 +6,10 @@ categories:
- 更多
- 面试
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 面试问题集锦

View File

@ -1,201 +0,0 @@
---
title: 英语基础
date: 2020-01-13 11:55:53
permalink: /pages/6f9525eecdd51d5a
categories:
- 更多
- 英语
tags:
-
---
# 英语基础
## 1.基础
### 拼法
同一个英文字母可能会有不同的发音;同一个发音也会有不同的拼法。看看下面的例子:
* two里的 **w** 不发音
* phone电话**ph**的发音跟 **f** (如 **佛**)一样
### 拥有
在中文,我们可以在**我**或**你**的后面加**的**,来表示某个东西属于某人。在英语中却有独特的单词来表示这些概念。
| 英文 | 中文 |
| --------- | -------- |
| my car | `我的`车 |
| your book | `你的`书 |
| his cat | `他的`猫 |
| her dog | `她的`狗 |
### 你喜欢什么?
在英语,**我喜欢...**就是 I like...
I like my cat我喜欢我的猫
### 提问 or
如果你想给人提供选择,就在问题里用 or
Coffee or tea(咖啡还是茶)
### 英语发音 -er
-er 结尾的单词。
computersummerwater
这个er像中文里的**er**(如**儿**),但是发元音时要更轻。
> 元音是像a、i、u等的声音 。发音时气流自由地经过口腔,不受阻碍。
## 2.介绍
### 动词 to be
`是` 在中文里一般不会改变形式,像`我是`、`你是`、`他是`,英语的动词形式却会因 `I`、`you`、`he`等而改变。来看看to be这个最常用的动词是怎么改变形式的吧
> 动词:表示动作(做饭)或存在(我是老师)等的词。
#### 动词 to be的改变形式
| 人称 | to be的改变形式 |
| --------- | --------------- |
| I | am |
| you | are |
| he | is |
| she | is |
#### He is a boy
中文说**他是男孩子**,在英文里必须加上 a 这个词,表示一。
He is a boy,she is a girl.
## 3.问候
### 首字母大写
英文中首字母大写的情况有:
* 句子的第一个词
* 名字
* 国家、国籍、语言
* I 这个词
Hello,I am Johm你好我是约翰
Is she from South korea?(她来自韩国吗)
I speak Chinese我是中文
### 提问-改变to be词序
只需要改变词序,就能用 to be 提问啦
| 陈述句 | 疑问句 |
| ------------------- | ------------------- |
| Yor are from Chine. | Are you from Chine? |
| He is from Chine. | Is he from Chine? |
英语里的 **where****how** 这样的词要放在问题的开头。
Where are you from?(你来自哪里?)
How is he?(他怎么样?)
### 怎么样?
用英语问**你好吗?**或**怎么样?**,可以说 How are you?
Hello,how are you?
I am find. How are you?
I am find,thanks!
## 4.餐厅
### I want a sandwich
用中文说**我想要汉堡包**,在英文中说 **I want a burger**. 一定要用 **a**,表示`一个`、`一份`、`一件`东西...
I want a sandwich我想要一个三明治
I want a menu我想要一份菜单
但是如果`名词`以 **-s** 结尾我们一般不用a
I want fries我想要薯条
> 名词:表示事物(勺子)、概念(爱)、人(安娜)等的词。
### Please
说话时用please请、请给我礼多人不怪。
Follow me,please.(请跟我来)
A burger,please!(请给我一个汉堡包)
## 5.家庭
### 兄弟姐妹
中文里我们有一大堆描述家人亲属的单词,英语就没那么复杂!**姐姐**和**妹妹**都是sister**哥哥**和**弟弟**都是brother祖父母是 grandparents
### 动词 to be 代替 很)
在中文,我们是**我很忙**但是在英语我们用to be这个动词来代替**很**。把to be 放在**我**和**忙**中间—— I am busy.
She is busy她很忙
He is intelligent他很聪明
You are funny你很好笑
### 英语发音 r、v、th
* restaurant餐厅,parents父母,short
* 发 `r`这个音,舌尖要卷一点,但是舌头后半要放到口腔里的后面一点,口型跟**w**一样。
* very非常,evening晚上,have
* `v`的发音很像**f**

View File

@ -6,7 +6,10 @@ categories:
- 更多
- 心情杂货
tags:
-
- null
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 一个完美主义者的自我救赎

View File

@ -0,0 +1,113 @@
---
title: 反向拆解让人上瘾的套路,找回自律
date: 2020-07-22 13:05:49
permalink: /pages/d6d331/
categories:
- 更多
- 心情杂货
tags:
- 心理
- 自律
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 反向拆解让人上瘾的套路,找回自律
当你打开手机准备学习或者查个资料的时候,很有可能不知不觉的就脱离的正规... 某某app发来通知xx明星官宣啦、xx手游重磅上线一起开启修仙之旅吧 xx结衣发布新番-4k画质&AR体验、99+未读信息、支付宝到账100万元.... 你心想,就看一会,就一会儿... 不知不觉两三个小时过去了,你开始焦躁、后悔、自责。第二天,你又掉进相同的坑里。你可能会纳闷,为什么我的自制力这么差?为什么对某件事欲罢不能?
<!-- more -->
::: theorem 《欲罢不能》
数字时代比人类历史上的任何时代都更容易上瘾...Facebook、Instagram、网络色情、网购在下钩... 问题不出在人缺乏意志力上,而在于“屏幕那边有数千人在努力工作,为的就是破坏你的自律”
::: right
来自《欲罢不能-刷屏时代如何摆脱行为上瘾》一书
:::
我们正在被一个算法和娱乐所包裹的电子'海洛因'中却不自知,想要摆脱这些上瘾行为,第一步就是反向拆解那些让我们上瘾的产品的套路。《欲罢不能》书中总结了六个让人上瘾的钩子:
### 1.诱人的目标
* 色情片
* 游戏中成为"王者"、层出不穷的高颜值皮肤...
* ...
### 2.无法抵挡无法预知的积极反馈
* 社交中的点赞功能
* 某音十几秒一条的视频不需要你动脑就可以轻轻松松获得哈哈大笑的快感有时候还有一种我学习到了的感觉你永远猜不到下一条将会出现什么惊喜。你刷的越多算法就越精准越知道你的情绪G点在哪里你就越容易被俘获。
* 直播中的打赏被主播表示的感谢和送上的'么么哒'
* ...
### 3.渐进式的进步和改善的感觉
* 游戏中的升级策略
* ...
### 4.随着时间的推移越来越困难的任务
* 游戏中的升级策略
* ...
### 5.需要解决却又暂未解决的紧张感
* 电影或电视剧结尾有意制造的一个悬念,给你一种未完成的紧张感,你迫切想知道后面会发生什么
* ...
### 6.强大的社会联系
* 与队友相约开黑
* 游戏中能彰显地位、财富、能力等的装备(如:吃鸡游戏中的玛莎拉蒂皮肤)
* ...
## 找回自律,收获积极而长久的快乐
获得快乐的方式,你可以选择沉迷在你的手机里刷视频、打游戏、煲剧,毫不费力的收货大把的快乐。你还可以选择一条更难的路:**选择自律、选择延迟满足、选择会让你不那么舒服的努力和成长**。
收获快乐的方式没有绝对的对与错,但是,如果快乐触手可及,这种廉价的快乐也就不值得珍惜,随时都可能抛弃。过后还可能让你浪费了大把时间,该做的正事没有完成,你感觉空虚、焦躁、自责... 既然如此,我们一起选择那条更难的路吧!
::: tip 上瘾的案例收集
想想你生活中让你上瘾的案例,对照上面让人上瘾的钩子,看看是哪个钩子吧~~欢迎留言哦~
:::

View File

@ -0,0 +1,35 @@
---
title: 2分钟规则
date: 2020-11-09 11:05:29
permalink: /pages/baaa02/
categories:
- 更多
- 实用技巧
tags:
- 实用技巧
- 文摘
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
每当你发现很难开始执行某项任务时可以试试将其缩减成2分钟的版本。
- 看一本书 → 看一页书
- 写一篇文章 → 写一句话
- 跑10公里 → 穿上跑鞋
- 做100次俯卧撑 → 做1次俯卧撑
- 多吃蔬菜水果 → 吃一个水果
- 编写一个程序 → 编写一个函数 → 编写一行代码
<!-- more -->
这样做的目的是使上手变得超级容易,让你先上手再说。一旦开始做了(这可能是最艰难的一步),你就会开始有动力,可能会继续做下去。
- 阅读一页 → 阅读10页 → 读完第一章
- 写一个句子 → 写文章的开头 → 写出正文
- 穿上跑鞋 → 步行5分钟 → 跑步5分钟
一旦开始,继续做下去就会容易得多。有时,你甚至会发现,自己在不知不觉间已经完成了任务。
> 本文摘录自 <https://hoanhan.co/2-minute-rule>

View File

@ -0,0 +1,58 @@
---
title: 一行代码“黑”掉任意网站
date: 2021-11-25 14:33:51
permalink: /pages/dcebaf/
titleTag: 原创
sticky: 1
categories:
- 更多
- 实用技巧
tags:
- JavaScript
- css
- 实用技巧
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
# 一行代码“黑”掉任意网站
实用技巧:只需一行代码,轻轻一点就可以把任意网站变成暗黑模式。
<p align="center"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store@master/blog/QQ20211125-163111.2tmjlvz28n80.png" width="500" style="cursor: zoom-in;"></p>
<!-- more -->
首先我们先做一个实验,在任意网站中,打开浏览器开发者工具(F12),在`Console`控制台输入如下代码并回车:
```js
document.documentElement.style.filter='invert(85%) hue-rotate(180deg)'
```
神奇的事情发生了,当前打开的网站变成了暗黑模式。
::: details 原理解释
1. `document.documentElement` 获取文档对象的根元素,即`<html>`元素
2. 给`html`元素的`.style`样式添加`filter`滤镜样式为`invert(85%) hue-rotate(180deg)`
3. `invert()` 反转图像。
4. `hue-rotate()`色相旋转。
更多滤镜知识:[`filter`](https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter)。
:::
为了更方便实用,达到轻轻一点就可以对网页施加魔法🎉,
我们对代码做了一点点🤏🏻改动。(修正了滤镜对图片等元素的影响)
```js
javascript: (function () { const docStyle = document.documentElement.style; if (!window.modeIndex) { window.modeIndex = 0; } const styleList = [ '', 'invert(85%) hue-rotate(180deg)', 'invert(100%) hue-rotate(180deg)', ]; modeIndex = modeIndex >= styleList.length - 1 ? 0 : modeIndex + 1; docStyle.filter = styleList[modeIndex]; document.body.querySelectorAll('img, picture, video').forEach(el => el.style.filter = modeIndex ? 'invert(1) hue-rotate(180deg)' : '');})();
```
然后打开浏览器书签管理器,添加新书签,在网址栏粘贴这段代码并保存:
<p align="center"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store@master/blog/QQ20211125-154655.1byvlo5a60xs.png" width="600" style="cursor: zoom-in;"></p>
以后在任意网站,只需要轻轻一点`切换模式`书签就可以让它变成85%的暗黑再点一次就是100%的暗黑,再点一次变回正常模式。
<p align="center"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store@master/blog/QQ20211125-163111.2tmjlvz28n80.png" width="600" style="cursor: zoom-in;"></p>

View File

@ -4,101 +4,196 @@ date: 2019-12-25 14:27:01
permalink: /friends
article: false
sidebar: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
<!--
<!--
普通卡片列表容器,可用于友情链接、项目推荐、古诗词展示等。
cardList 后面可跟随一个数字表示每行最多显示多少个选值范围1~4默认3。在小屏时会根据屏幕宽度减少每行显示数量。
-->
::: cardList
```yaml
- name: 麋鹿鲁哟
desc: 大道至简,知易行难
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200122153807.jpg # 可选
avatar: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200122153807.jpg # 可选
link: https://www.cnblogs.com/miluluyo/ # 可选
bgColor: '#CBEAFA' # 可选默认var(--bodyBg)。颜色值有#号时请添加单引号
textColor: '#6854A1' # 可选默认var(--textColor)
bgColor: "#CBEAFA" # 可选默认var(--bodyBg)。颜色值有#号时请添加单引号
textColor: "#6854A1" # 可选默认var(--textColor)
- name: XAOXUU
desc: '#IOS #Volantis主题作者'
avatar: https://cdn.jsdelivr.net/gh/xaoxuu/assets@master/avatar/avatar.png
desc: "#IOS #Volantis主题作者"
avatar: https://jsd.cdn.zzko.cn/gh/xaoxuu/assets@master/avatar/avatar.png
link: https://xaoxuu.com
bgColor: '#718971'
textColor: '#fff'
bgColor: "#B9D59C"
textColor: "#3B551F"
- name: 平凡的你我
desc: 理想成为大牛的<br/>小陈同学
avatar: https://qiniu.reinness.com/avatar.png
link: https://reinness.com
bgColor: "#FFE5B4"
textColor: "#A05F2C"
- name: znote
desc: 荷尽已无擎雨盖,菊残犹有傲霜枝
desc: 荷尽已无擎雨盖,<br/>菊残犹有傲霜枝
avatar: https://zpj80231.gitee.io/znote/vuepress/head-fish.jpg
link: https://zpj80231.gitee.io/znote/
bgColor: '#FCE5BF'
textColor: '#7B2532'
- name: 平凡的你我
desc: 理想成为大牛的小陈同学
avatar: https://reinness.com/avatar.png
link: https://reinness.com
bgColor: '#FCDBA0'
textColor: '#A05F2C'
bgColor: "#FCE5BF"
textColor: "#7B2532"
- name: 全栈软件开发直通车
desc: 全栈软件开发技术博客,<br/>从小白到大神!
avatar: https://cdn.jsdelivr.net/gh/wangshibiaoFlytiger/blog_picBed1/images/shuaige.jpg
link: https://sofineday.com
bgColor: "#FBEBEC"
textColor: "#603420"
- name: 易良同学的博客
desc: 正在努力!
avatar: https://yiliang.site/assets/images/avatar.jpg
link: https://yiliang.site
bgColor: "#FFEFE2"
textColor: "#A05F2C"
- name: 永远的救赎者
desc: 知者减半,省者全无。
avatar: https://i.loli.net/2020/08/10/PkQMGL6pATW1vBg.jpg
link: http://www.yuanchengcheng.vip/
- name: 辰旭博客
desc: 凤鸣初阳,百鸟朝凰
avatar: https://s1.ax1x.com/2020/08/09/aoLTDx.png
link: https://kareny.cn
- name: JokerM's Palace
desc: Take your heart
avatar: https://jokerm.com/wp-content/uploads/2020/09/jmflogo.png
link: https://jokerm.com/
- name: Saul.J.Wu
desc: 立身之本,不在高低。
avatar: https://sauljwu.github.io/img/logo.jpg
link: https://sauljwu.github.io/
- name: Lake's blog
desc: 不积跬步,无以至千里;不积小流,无以成江海。
avatar: https://jsd.cdn.zzko.cn/gh/taixingyiji/image_store@main/blog/logo/img.png
link: https://taixingyiji.com/
- name: Cubik的小站
desc: RECOMMENDED BY DR.CREATIVE
avatar: https://jsd.cdn.zzko.cn/gh/Cubik65536/cubik-favicons@main/CubikLogo.png
link: https://www.cubik65536.top/
- name: x·π
desc: 为开发者量身制作的技术博客和知识库管理平台。
avatar: https://jsd.cdn.zzko.cn/gh/Ezuy-Lee/RainzeDrawingBed/media/logo.png
link: https://ezuy-lee.github.io/xpai/
- name: 眼里有光
desc: 道阻且长,行则将至
avatar: https://icooloop.gitee.io/img/logo.jpg
link: https://icooloop.gitee.io/
- name: Heo
desc: 爱折腾的设计师
link: https://blog.zhheo.com/
avatar: https://blog.zhheo.com/img/avatar.png
- name: Chuyuxuan
desc: 临渊羡鱼,不如退而结网
link: https://blog.chuyuxuan.top/
avatar: http://blog.chuyuxuan.top/img/avatar1.jpg
- name: 全栈杂货站
desc: 千里万里杂货站里,天青色等烟雨,而我在等你。
avatar: http://cdn.tea-culture.top/tech/images/avatar/3.jpg
link: http://tech.tea-culture.top/
- name: 小鱼博客
desc: 总是半途而废的废柴
avatar: https://jsd.cdn.zzko.cn/gh/xiaoyu-666/image_store/blog/minion.png
link: https://xiaoyu-666.github.io/
- name: 大胡子
desc: 记录你我,分享精彩。
avatar: https://photo.jakehu.cn/favicon.png
link: https://www.jakehu.cn
- name: 嘟先生学WebGL
desc: 流水不争先,争的是滔滔不绝。
avatar: https://joy1412.cn/img/dudu.jpeg
link: https://joy1412.cn
- name: "@小右_"
desc: 学而不厌 不耻下问
avatar: https://lordblog.cn/upload/2021/05/logo%20(4)-742f1f7e15db44a1b3140035104ea239.png
link: https://lordblog.cn/
- name: 途中的树
desc: 走出自己的傲慢,承认自己的局限。
avatar: https://zkpeace.com/blog/img/avatar.jpg
link: https://zkpeace.com/
- name: Haobo's Blog
link: https://discover304.top/
avatar: https://discover304.top/img/head.jpg
desc: 半只脚跨入炼丹师的大门的新人
- name: 小胖墩er
desc: 迟到总比不到的好,所以好好加油吧。
avatar: https://jsd.cdn.zzko.cn/gh/Chubby-Duner/image-hosting@master/blog/logo.jpeg
link: https://chubbyduner.top
- name: Joseph Z.
desc: Joseph Z.的小站
avatar: https://josephz.top/image/avatar.webp
link: https://josephz.top/
- name: 二丫讲梵 # 昵称
desc: 💻学习📝记录🔗分享 # 介绍
avatar: https://wiki.eryajf.net/img/logo.png # 头像
link: https://wiki.eryajf.net/ # 链接
- name: YoungKbt World # 昵称
desc: 故事由我书写,旅程由你见证,传奇由她聆听 # 介绍
avatar: https://jsd.cdn.zzko.cn/gh/Kele-Bingtang/static/user/avatar2.png # 头像
link: https://notes.youngkbt.cn/ # 链接
# - name: XuHuaian,s Blog # 昵称
# desc: 记录自己的工作学习心得,争取当一条有梦想的咸鱼 # 介绍
# avatar: https://dbsecurity.com.cn/images/logo.jpg # 头像
# link: https://dbsecurity.com.cn/# 链接
- name: xustudyxu
desc: 一起学习编程!
avatar: https://jsd.cdn.zzko.cn/gh/xustudyxu/image-hosting@master/20220423/01.3d9wrma6qlq0.webp
link: https://frxcat.fun/
- name: Yiyang Sun
desc: Frontend enthusiast.
avatar: https://shaun-logo.oss-cn-beijing.aliyuncs.com/avatar.jpg
link: https://blog.syy11.cn
- name: ColorPanda
desc: 中国語を日本語と英語で勉強。日中家庭の言語教育の悩みを解消したい。
avatar: https://colorpanda.aifan.jp/img/logo.png
link: https://colorpanda.aifan.jp/
- name: 不器小窝
desc: 「但知行好事,莫要问前程」
avatar: https://avatars.githubusercontent.com/u/866409?v=4
link: https://xingcxb.com/
# - name: 七鳄の学习格
# desc: 如果世界多了精彩,每一位都是创造者,大家都是你的观众
# avatar: https://blog.gmcj0816.top/img/SeriousWission_TouXiangPic.jpg
# link: https://blog.gmcj0816.top/
- name: 从01开始
desc: 那就从零开始
avatar: https://image.peterjxl.com/blog/re0.jpg
link: https://www.peterjxl.com/
- name: Gahing's blog # 昵称
desc: 生活之珍爱,余缀于技术之间。 # 介绍
avatar: https://www.gahing.top/img/avatar.jpeg # 头像
link: https://www.gahing.top/ # 链接
- name: Howietron # 昵称
desc: Java全站技术博客积跬步以至千里致敬每个爱学习的你。 # 介绍
avatar: https://wiki.howie.top/img/logo.png # 头像
link: https://wiki.howie.top/ # 链接
- name: 菜园前端 # 昵称
desc: 前端学习笔记分享、小白都能看懂的笔记 # 介绍
avatar: https://note.noxussj.top/logo.png # 头像
link: https://note.noxussj.top/?s=y3 # 链接
- name: 坚持住 # 昵称
desc: 一个毕业于临床医学专业的挚爱IT技术的喜欢研究英语的人族选手 # 介绍
avatar: https://hanginthere.space/hanginthere_logo_update.png # 头像
link: Https://hanginthere.space # 链接
```
:::
<!-- ## 图文卡片列表 -->
<!--
图文卡片列表,可用于项目展示、产品展示等。
cardImgList 后面可跟随一个数字表示每行最多显示多少个选值范围1~4默认3。在小屏时会根据屏幕宽度减少每行显示数量。
-->
<!-- ::: cardImgList
```yaml
- img: https://assets.awwwards.com/awards/media/cache/thumb_834_598/external/2020/05/5ebd082bb77bf137658772.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
- img: https://assets.awwwards.com/awards/images/2020/05/Somt_may-2020-powerhouse_thumbc.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
- img: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
- img: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
- img: https://assets.awwwards.com/awards/media/cache/thumb_834_598/external/2020/05/5ebd082bb77bf137658772.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
- img: https://assets.awwwards.com/awards/images/2020/05/Somt_may-2020-powerhouse_thumbc.jpg
link: https://www.spotify.com/int/why-not-available/
name: 图文标题
desc: 图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容图文描述内容 # 描述,可选
author: Evan Xu # 作者,可选
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像,可选
```
::: -->
### 友链申请
与我[ 联系 ](/about/#联系)或者 在本页面评论区留言您的友链信息,格式:(点击代码块右上角一键复制)
```yaml
- name: Evan's blog # 昵称
desc: 积跬步以至千里,喜欢学习喜欢你。 # 介绍
avatar: https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像
link: https://xugaoyi.com/ # 链接
desc: Web前端技术博客积跬步以至千里 # 介绍
avatar: https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103123203.jpg # 头像
link: https://xugaoyi.com/ # 链接
```
申请前记得先添加本站哦~
申请前记得先添加本站哦~

View File

@ -1,51 +1,84 @@
---
title: 关于
date: 2019-12-25 14:27:01
permalink: /about
permalink: /about/
sidebar: false
article: false
author:
name: xugaoyi
link: https://github.com/xugaoyi
---
### 📚Blog
## 📚Blog
这是一个兼具博客文章、知识管理、文档查找的个人网站主要内容是Web前端技术。如果你喜欢这个博客&主题欢迎到[GitHub](https://github.com/xugaoyi/vuepress-theme-vdoing)点个Star或者交换[友链](/friends/) ( •̀ ω •́ )✧
:::tip
文章内容仅是我个人的小总结,如有误还请指正。
文章内容仅是我个人的小总结,资历尚浅,如有误还请指正。
:::
### 🎨Theme
本站主题是 [`Vdoing`](https://github.com/xugaoyi/vuepress-theme-vdoing)这是一款简洁高效的VuePress 知识管理&博客 主题。旨在轻松打造一个`结构化`与`碎片化`并存的个人在线知识库&博客,让你的知识海洋像一本本书一样清晰易读。配合多维索引,让每一个知识点都可以快速定位! 更多[详情](https://github.com/xugaoyi/vuepress-theme-vdoing)。
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing" target="_blank"><img src='https://img.shields.io/github/stars/xugaoyi/vuepress-theme-vdoing' alt='GitHub stars' class="no-zoom"></a>
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing" target="_blank"><img src='https://img.shields.io/github/forks/xugaoyi/vuepress-theme-vdoing' alt='GitHub forks' class="no-zoom"></a>
### 🐼Me
从事Web前端开发工作喜欢唱、跳、rap、篮球写程序。 本人↓↓↓
<img src='https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200103123203.jpg' alt='本人照片' style="width:106px;">
[更新日志](https://github.com/xugaoyi/vuepress-theme-vdoing/commits/master)
<!-- <div style="width: 300px;height: 300px;position: fixed;bottom: 0;left: 0;z-index: 1;">
<script type="text/javascript" src="//rf.revolvermaps.com/0/0/8.js?i=5e4x5w8cxxb&amp;m=0&amp;c=ff0000&amp;cr1=ffffff&amp;f=arial&amp;l=33&amp;bv=80" async="async"></script>
</div> -->
<!-- 小熊猫 -->
<img src="/img/panda-waving.png" class="panda no-zoom" style="width: 130px;height: 115px;opacity: 0.8;margin-bottom: -4px;padding-bottom:0;position: fixed;bottom: 0;left: 0.5rem;z-index: 1;">
## 🎨Theme
[<img src="https://github-readme-stats.vercel.app/api/pin/?username=xugaoyi&amp;repo=vuepress-theme-vdoing" alt="ReadMe Card" class="no-zoom">](https://github.com/xugaoyi/vuepress-theme-vdoing)
[<img src="https://github-readme-stats.vercel.app/api/pin/?username=xugaoyi&amp;repo=vuepress-theme-vdoing-doc" alt="ReadMe Card" class="no-zoom">](https://doc.xugaoyi.com/)
本站主题是 [`Vdoing`](https://github.com/xugaoyi/vuepress-theme-vdoing)这是一款简洁高效的VuePress 知识管理&博客 主题。旨在轻松打造一个`结构化`与`碎片化`并存的个人在线知识库&博客,让你的知识海洋像一本本书一样清晰易读。配合多维索引,让每一个知识点都可以快速定位! [Github地址](https://github.com/xugaoyi/vuepress-theme-vdoing) | [在线vscode预览源码](https://github1s.com/xugaoyi/vuepress-theme-vdoing)
## 赞助商
> 进入以下链接注册一下,赞助商会为博主赞助一笔小费,感谢~
<p align="center">
<a href="http://apifox.cn/a103xugaoyi" target="_blank"><img src="https://jsd.cdn.zzko.cn/gh/xugaoyi/blog-gitalk-comment@master/img/Apifox-860x320.ic7tz1417sw.png" alt="赞助商" style="width: 400px;border-radius: 2px;"></a>
</p>
## 🐼Me
web前端小学生
### 技能
* 熟悉 JavaScript、HTML、CSS、Vue、React 的拼写
* 了解 Linux、windows、macOS 的开关机方式
* 精通 Git 的 pull 和 push并注册了 GitHub 帐号刷了一些 star
<!-- 本人↓↓↓
<img src='https://jsd.cdn.zzko.cn/gh/xugaoyi/image_store/blog/20200103123203.jpg' alt='本人照片' style="width:106px;"> -->
## 前端学习
<br/>
<img src="https://open.weixin.qq.com/qr/code?username=gh_0cf4b813918c" style="width:100px;" />
关注公众号,回复`前端资源`,即可获取这些 [前端学习资源](https://github.com/xugaoyi/blog-gitalk-comment/wiki/Front-end-Study)。
## :email: 联系
- **WeChat or QQ**: <a :href="qqUrl" class='qq'>894072666</a>
- **Email**: <a href="mailto:894072666@qq.com">894072666@qq.com</a>
- **GitHub**: <https://github.com/xugaoyi>
- WeChat or QQ: <a :href="qqUrl" class='qq'>{{ QQ }}</a>
- Email: <a href="mailto:894072666@qq.com">894072666@qq.com</a>
- GitHub: <https://github.com/xugaoyi>
- Vdoing主题文档<https://doc.xugaoyi.com>
- Vdoing交流QQ群694387113
<script>
export default {
data(){
return {
qqUrl: 'tencent://message/?uin=894072666&Site=&Menu=yes'
QQ: '894072666',
qqUrl: `tencent://message/?uin=${this.QQ}&Site=&Menu=yes`
}
},
mounted(){
const flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
if(flag){
this.qqUrl = 'mqqwpa://im/chat?chat_type=wpa&uin=894072666&version=1&src_type=web&web_src=oicqzone.com'
this.qqUrl = `mqqwpa://im/chat?chat_type=wpa&uin=${this.QQ}&version=1&src_type=web&web_src=oicqzone.com`
}
}
}
</script>
</script>

Some files were not shown because too many files have changed in this diff Show More