const{createApp}=Vue const{createVuetify,useGoTo,useDisplay}=Vuetify var data={alert:{show:false,color:'success',text:'',timeout:0,},theme:{dark:false,},nav:{showDrawer:false,showTOC:true,tocPanel:0,tab:'account',post:{discussionId:8614,currentPage:1,targetPage:1,total:101,anchor:0,goToOptions:{container:null,duration:0,easing:'easeInOutCubic',offset:-100,},worker:null,task:[],active:[],apiLock:[],originLike:new Map([]),},related:{block:1,}},search:{width:80,text:null,loading:false,},tags:[],posts:[{id:115353,num:0,uid:18988,content:'作为长期使用过 Windows ( 08-17 )和 MacOS ( 17-25 )的日常办公非开发用户,最近又拿出老笔记本折腾装上了 LTSC 21H2 ( Win 7 之后就没用过 Windows ),虽然还没有深度使用,但是感觉 Win10 整个系统和界面用起来也挺好的,并且在下载软件的时候,震惊有点忘记了 Windows 软件生态的易得性(软件的丰富性以及各种破解绿色版),但是同时也感受到另一些区别,比如需要自行安装运行库/环境/网卡驱动,比如安装软件的流程和用户感知,比如 windows 系统里存在的一些流氓软件(比如安装驱动总裁结果默默顺便给安装个 360 ,然后卸载还各种流程阻碍,使用 mac 多年后感到震惊了)。\u003Cbr\u003E\u003Cbr\u003E这种快速直观的感受让我对两个系统有了更中立的看法,我觉得好像两个系统都有好有不好的地方,并且作为普通用户,我自己感觉用哪个系统好像都能满足我日常需要,没有离不开谁。这让我一下回忆起之前当大家在推荐系统或者电脑的时候(不光是 V 站),好像不少人的观点和回复都是比较简单粗暴且有偏向性的,有些时候还会互相攻击互不相让,也让我想起之前了解 Linux 桌面的时候,感觉使用 Linux 的用户也很满意 Linux (包括现在日常办公使用),似乎哪儿都爽,让人很馋很想要。(我的个人观感是一些苹果和 Linux 用户会更极端一点,Windows 好像都很不受待见但是又得用)。这些回忆又进一步把我引向一个一直困惑我的问题:这三个主流桌面系统,除了游戏以外(这个好像是微软独大),到底它们之间有什么交集,是否有或者有哪些差集(核心区别)?当我们在选择不同操作系统的时候,我们到底在选什么,我们又应该怎么选?有没有真正深度使用过这三个系统的人,能够用通俗易懂的语言来给我们全面客观的讲一讲这三个系统。\u003Cbr\u003E\u003Cbr\u003E请大家尽量避免使用一些简单缺**据的结论(比如‘普通用户就不要折腾 Linux’,我想问,为什么不要折腾?界面友好的 Linux 桌面版也不能用吗?它到底有什么优点和缺点,是因为驱动不齐,还是因为软件生态不全?有哪些让人一票通过或者否决的点?让我自己判断选择可以吗?),而是能尽量能够更客观中立的去比较,让不是很懂的人也能够豁然开朗抓到三者的精髓,然后能根据自身需要去做选择。谢谢!',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 20:52:23',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115354,num:1,uid:11238,content:'小孩子才做选择,为什么不全都要,各司其职呢?(甚至可以搭伙算上 FreeBSD )',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 21:37:43',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115355,num:2,uid:4593,content:'选操作系统本质是选生态和控制权的平衡——Windows 胜在软件兼容但需妥协于混乱生态,macOS 赢在体验统一但受限于苹果规则,Linux 自由可定制但需技术能力支撑,最终取决于你更愿意把时间花在解决问题、花钱买省心还是折腾系统上。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 21:38:01',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115356,num:3,uid:18988,content:'这其实也是我的想法,但只有了解它们的异同才能随心所欲的自由利用每个系统的优势嘛',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 21:46:01',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115357,num:4,uid:18988,content:'我觉得你的说法但是有点简单,比如说,我是一个普通用户,只有办公娱乐需求,难道使用 Linux 桌面版比如 ubuntu+gnome 也需要较强的技术能力吗?(我没用过我不知道哈)现在微信钉钉 wps 也都支持 Linux 了,日常使用 Linux 是不是对于普通用户其实也可以呢?比如你说微软生态混乱,但是如果我也只是使用 Office ,Potplayer ,FB2000,微信 QQTG ,QQ 音乐/Spotify ,vscode 等等这些常用软件,难道 Windows 和 MacOS 在体验和兼容上能有多大区别吗?或者即使是开发工作,难道只有在这个系统能用那个系统不行的吗?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 21:55:40',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[26,],mentionUsers:[],likeUsers:[],},{id:115358,num:5,uid:19109,content:'附议',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 21:56:37',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115359,num:6,uid:646,content:'通过提出一个看似“全都要”的圆滑方案,巧妙地回避了原文作者提出的核心问题——对不同操作系统进行深入、客观的比较分析。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 22:40:44',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115360,num:7,uid:1054,content:'游戏重度用户只能选 windows\u003Cbr\u003E自从 windows 有了 wsl 已经趋于完美,mac 本直接扔给父母玩了\u003Cbr\u003E敲一会儿代码然后切出去玩一会儿游戏,这种舒适且无缝的体验只有 windows 能给与🤣',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 22:49:39',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[42,],mentionUsers:[],likeUsers:[],},{id:115361,num:8,uid:18988,content:'看了不少关于操作系统的帖子,几乎都是一些主观性的简短论断,很少有论证,看了一圈对形成一个客观的判断标准也无益,我觉得也许是深入的使用三个系统毕竟是少数吧,所以大多都有片面和偏向性。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 22:52:54',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115362,num:9,uid:18988,content:'但是你不会留恋 MacOS 的省心,精致,以及某些专属的软件,或者全家桶的衔接吗?你不会烦恼 Windows 的运行优化和**处理吗?如果你有两台电脑,你用 Windows 游戏,用 Mac or Linux 工作吗?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 22:58:44',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115363,num:10,uid:1204,content:'说实在的,我能无差别使用且欣赏 Windows 和 Linux, 目前也是这俩并用。但对另一家基本上是一用就想撞墙,然后用过一次后愤怒的心态能持续好久,有很强的副作用。\u003Cbr\u003E\u003Cbr\u003E以前在 Mac OS 下基本上是寸步难行,每一步都想骂人,后来在 Linux 那边积累了一些命令列经验以及很多自己累积起来的 bash 指令码以后,每次到 Mac OS 这边第一步就是建立 /usr/local/bin/ 然后把我存放在自己的小伺服器上的一个指令码包 curl 下来扔进去。\u003Cbr\u003E\u003Cbr\u003E但即使是这样 Mac OS 还是能够给我以震撼般的气愤,就比如,我他妈都用命令列了,我进入个 Documents, Downloads 之类的使用者资料夹,竟然还会出现权限提示,必须要用滑鼠点一下才可以进去,这他妈是什么逻辑?!在命令列下作业不就是为了不去看这些恼人的提示?!\u003Cbr\u003E\u003Cbr\u003E说到使用命令列,现如今无论是 Windows 还是 Linux, 基本上都有( Well, 好的 distros 都有)预设在 context menu 里的 ‘Open command window here’ / ‘Open Konsole here’ 等等的项,唯独 Mac OS 上的 context menu 一点开长长的一大串,比 Windows / Linux 的最基本的原始未改的 context menu 都长,但是就没个有用的,就比如没有此项。\u003Cbr\u003E\u003Cbr\u003E在档案管理器里面切换路径,Windows 和好的 Linux distros 都支援直接在视窗的某一位置直接输入路径,Mac OS 呢?非得去 Go to, 他妈的切换个路径还藏得那么深,给人的感觉就是怎么让人不舒服怎么来。\u003Cbr\u003E\u003Cbr\u003E太多太多这样的细节了,不胜枚举,还有就是,Mac OS 下的很多档案存放的结构就和屎一样,就比如字型档一会儿存这里一会儿存那里的,对于有些还会给你下到 /System/Library/ 然后什么 Assetsv2? 然后再下面一大串乱码后面来个 -font7, 再然后进去之后又是一堆乱码资料夹,再点、再点,才能找到真正的字型档档案,你藏那么深,真想找的使用者不是还能找到?但是整个档案架构就他妈和屎一样恶心。( Windows 上全都放在 %SystemRoot%\\Fonts\\ 下面——如果都是点选 ‘Install for all users’ 的话; Linux 上都在 /usr/share/fonts/ 下——而且这一点必须狠夸 Linux, 把字型档拷贝过去,然后 fc-cache -f -v 一下就完了,属于三个里面最最方便的。)\u003Cbr\u003E\u003Cbr\u003E不要扯什么你是没适应,你是没理解 Mac OS 的思路云云,同样是不同的作业系统,怎么我从 Windows 换到 Linux 的时候没有这么强的不适感、这么陡峭的学习曲线?怎么就你家 Mac OS 需要「学习」(实际上是对使用者的规训和服从性测试)的东西这么多?!\u003Cbr\u003E\u003Cbr\u003E反正我是至今受不了苹果家的任何产品,二十多年来一直未变地对它的风格充满了厌恶和恶心,而且随着时间的加深只会更加增加我对它的厌恶和恶心,并尽可能地在人生中避开这种带有苹果味的东西(除了苹果家的产品外,还有比如 Google Chrome, 或者那个叫 reMarkable 的电子纸,这种企图规训使用者的产品对我来说就是有多远滚多远,去你妈的。)',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:09:22',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[44,],mentionUsers:[],likeUsers:[],},{id:115364,num:11,uid:986,content:'我有 Linux 台式机,windows 台式机,MacBook Air ,windows 笔记本( ROG 幻 16 ),我就是同时用三个的\u003Cbr\u003E\u003Cbr\u003E我的体会是:\u003Cbr\u003E如果打游戏,那么选 Windows\u003Cbr\u003EMacBook air 适合随身携带,续航长,重量轻\u003Cbr\u003ELinux ,windows ,macOS 如果只用浏览器的话,没区别\u003Cbr\u003E自己组装的 Linux 和 Windows 电脑扩展性更好,windows 笔记本也可以自己加装固态硬盘\u003Cbr\u003Ewindows 上的 office 比 macOS 好用,且 macOS 的 office 总是掉登录状态\u003Cbr\u003EMac 要操心的事情太多,鼠标控制板方向分离要 mos ,电池要 aldente ,但 windows 完全不需要管,系统自带设置',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:16:11',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[14,15,],mentionUsers:[],likeUsers:[],},{id:115365,num:12,uid:986,content:'还有 macOS 的文件管理一团糟,远不如 Linux 和 windows 。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:17:20',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[18,],mentionUsers:[],likeUsers:[],},{id:115366,num:13,uid:18988,content:'谢谢,你这个体会比较深入一点了,我还体会不到,我表面的印象是 Linux 和 Mac 同源所以我以为两者更好适应一些呢。。另外,如果你擅长直接跟机器对话,为什么不只选择 Linux ,而还会去用 Windows 或者 Mac 这两个更偏向普通用户进行界面操作的系统呢?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:17:42',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115367,num:14,uid:18988,content:'#11 当年我换 Mac 也是因为电池和随时开屏随时用,不过话说我看现在的 Windows 笔记本硬件做的也很好啊,不管重量屏幕续航,蹲硬件那些厂家好像也不差,难道还是更 mac 的硬件有差?然后你说的操心的事情,对于普通用户好像也不用去操心吧,macos 不是也有自己的电源管理吗,就是我觉得如果不是高级操作,Mac 更适合开箱即用?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:22:46',updatedAt:'2025-04-19 23:48:04',mentionNum:11,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115368,num:15,uid:18988,content:'#11 另外 Mac 的 Office 是阉割版,我看很多人都在用 WPS 在 Mac 平替,并且评价还不错?所以,我觉得是不是还是找到一些更深入的区别?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:25:56',updatedAt:'2025-04-19 23:48:04',mentionNum:11,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115369,num:16,uid:1204,content:'很多软体只有 Windows 上有啊,有的在 Linux 上得透过 snap (实际上是 wine 包起来的), 版本号还常常跟不上(比如 Notepad++, 这个对我来说是刚需,因为它支援 macros, 除了它之外还支援 macros 的文本编辑器就要到 vim 之类的了,学习曲线骤然陡峭,而且我在 Notepad++ 上攒了 100 多个 macros, 也不好迁移),有的就……超出了我能实现的水准了,就比如我用 qaac 压码音讯档,但想要在 Linux 上搞定 qaac, 我看到有人做到了,但读了读说明就……还是算了。(是的,有很多命令列软体反而是仅在 Windows 下面有,呵呵……)\u003Cbr\u003E\u003Cbr\u003ELinux 有它的很多优点,就比如,如果使用 Tor Browser 的话,无论如何就是感觉在 Linux 下会连接以及访问得快很多,Windows 下用 Tor Browser 实在是慢,我也不知道为什么;或者 exiftool, Linux 下用就是肉眼可见地比 Windows 下快、数、倍。但 Windows 也有它的很多优点,比如很多有且只有在 Windows 上能用的软体。加之我的母语其实是 MS-DOS / Windows Batch (1990 年代开始使用电脑的人), 因此很多时候最习惯的还是写 batch 档,一些简单的 bash 我能自己写,复杂的就只有写好了 batch 档以后让 AI 帮我翻译了 ;)',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:31:33',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[21,],mentionUsers:[],likeUsers:[],},{id:115370,num:17,uid:261,content:'我现在觉得,电脑还是需要分功能。比如说我至少需要两台,一台有比较好的显卡,玩游戏或者开很多视频网页,或者看视频,需要有比较好的硬盘。另一台做开发,需要比较好的 CPU 和大容量内存。\u003Cbr\u003E\u003Cbr\u003E这两台的操作系统都不一样。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:32:11',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115371,num:18,uid:18988,content:'#12 我还觉得,如果对于普通用户,我觉得 Windows 上手操心的更多,开箱系统,我就得去自行下载库和环境,不然指不定安装哪个软件就听到一声警告 dll 缺失(这个真烦人,然后不同软件也需要要求的环境还不同),然后当我面对.net framework 的时候,我还得去选择安装哪一个(我也不知道有什么区别,请问为什么不能只有一个向下兼容呢?),然后我用了 LTSC 还得去用 DISM++优化服务和运行去除一堆不需要或者有隐私问题的东西,我还得考虑要不要保留 defender 或者开个火绒保证系统安全,我还得担心安装某个软件会不会导致安了一堆软件(我不懂为什么微软会容忍那些 jb360 金山等等流氓软件的行为,什么鬼??),为什么就听说 Windows 需要去清理系统否则会越来越慢,Mac 怎么不用操心这个?难道 Windows 就不能学点 Mac 的好吗?',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:43:54',updatedAt:'2025-04-19 23:48:04',mentionNum:12,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:115372,num:19,uid:18988,content:'我也有类似感受,所以我想横向了解大家的优缺点,让工具为人所用,而不是人被工具束缚。',ipRegion:'',updatedByUid:0,createdAt:'2025-04-16 23:46:15',updatedAt:'2025-04-19 23:48:04',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},],usersMap:new Map([[646,{uid:646,url:'/u/6b1368586a045c77666e506f235d0974',avatar:'/a/6b1368586a045c77666e506f235d0974',username:'katwalk🤖',}],[986,{uid:986,url:'/u/337b555b6a045c776962506f4e053231',avatar:'/a/337b555b6a045c776962506f4e053231',username:'ruimz🤖',}],[1054,{uid:1054,url:'/u/6224645d6a045c76606f526f06010737',avatar:'/a/6224645d6a045c76606f526f06010737',username:'MajestySolor🤖',}],[355,{uid:355,url:'/u/2d0767586a045c77636f536f113e3d09',avatar:'/a/2d0767586a045c77636f536f113e3d09',username:'chiaf🤖',}],[342,{uid:342,url:'/u/683e550f6a045c77636e546f2e312128',avatar:'/a/683e550f6a045c77636e546f2e312128',username:'SakuraYuki🤖',}],[11238,{uid:11238,url:'/u/3b207d1a6a045d7662695e6f24302426',avatar:'/a/3b207d1a6a045d7662695e6f24302426',username:'cwcc🤖',}],[261,{uid:261,url:'/u/1002703a6a045c77626c576f395e6a16',avatar:'/a/1002703a6a045c77626c576f395e6a16',username:'levelworm🤖',}],[1204,{uid:1204,url:'/u/3c07480a6a045c76626a526f3c3e0208',avatar:'/a/3c07480a6a045c76626a526f3c3e0208',username:'chutsetien🤖',}],[19109,{uid:19109,url:'/u/693962396a045d7e616a5f6f0e3e3c12',avatar:'/a/693962396a045d7e616a5f6f0e3e3c12',username:'xingis🤖',}],[18988,{uid:18988,url:'/u/311004286a045d7f69625e6f15590a32',avatar:'/a/311004286a045d7f69625e6f15590a32',username:'MissAW🤖',}],[4593,{uid:4593,url:'/u/1c2d775d6a045c736563556f1e2e1071',avatar:'/a/1c2d775d6a045c736563556f1e2e1071',username:'Lowlife🤖',}],]),related:[],} const App={setup(){const goTo=useGoTo() const{mdAndUp}=useDisplay() return{goTo,mdAndUp}},data(){return data;},mounted(){const themeDark=localStorage.getItem("themeDark") if(themeDark!==null){this.theme.dark=JSON.parse(themeDark)} if(this.nav.post.total>(this.nav.post.currentPage-1)*100+20){let moreLen=100 if(this.nav.post.total({id:null,num:(this.nav.post.currentPage-1)*100+v,uid:null,content:null,ipRegion:null,updatedByUid:null,createdAt:null,updatedAt:null,mentionNum:null,mentionedBy:null,mentionUsers:null,likeUsers:null,})) this.posts.push(...morePosts.slice(20))} this.workerStart() const hash=window.location.hash const match=hash.match(/#(\d+)/) if(match){const n=parseInt(match[1],10) if(n>=(this.nav.post.currentPage-1)*100&&n{this.jumpTo(n)})}} this.$nextTick(()=>{this.addHeadingIds() tocbot.init({tocSelector:'.toc',contentSelector:'#post-content-0',headingSelector:'h2, h3, h4',headingsOffset:100,scrollSmoothOffset:-100,scrollSmooth:true,collapseDepth:6,onClick:function(e){setTimeout(()=>{history.replaceState(null,'',window.location.pathname+window.location.search)},0)},}) tocbot.refresh()});},beforeUnmount(){this.workerStop() if(this.quill){this.quill.destroy() this.quill=null}},computed:{dposts(){return this.posts.slice(20);},},created(){},methods:{successAlert(msg){this.alert={show:true,color:'success',text:msg,timeout:1500,}},failureAlert(msg){this.alert={show:true,color:'error',text:msg,timeout:5000,}},flipThemeDark(){this.theme.dark=!this.theme.dark localStorage.setItem("themeDark",JSON.stringify(this.theme.dark))},toSearch(){if(!this.search.text){this.failureAlert('搜索词不能为空') return} let keywords=this.search.text.trim() if(keywords.length<1){this.failureAlert('搜索词不能为空') return} if(keywords.length>100){this.failureAlert('搜索词过长') return} this.doSearch(keywords)},toReg(){window.location.href="/reg"},toLogin(){window.location.href="/login"},toPage(){let url=window.location.href url=url.replace(/(\/\d+)?(#[0-9]+)?$/,this.nav.post.targetPage>1?`/${this.nav.post.targetPage}`:'') window.location.href=url},toLoadRelated({done}){if(this.my&&this.my.uid){this.apiLoadRelated({done})}else{done('ok')}},workerStart(){this.nav.post.worker=setInterval(()=>{this.workerLoad()},500);},workerStop(){if(this.nav.post.worker){clearInterval(this.nav.post.worker);this.nav.post.worker=null;}},async jumpTo(num){const page=Math.floor(num/100)+1 const i=num-(page-1)*100 if(page===this.nav.post.currentPage){this.goTo("#post-"+num,this.nav.post.goToOptions) if(!this.posts[i].id){const block=Math.floor(num/20)+1 this.nav.post.apiLock[block]=true await this.apiLoadPosts(block) this.$nextTick(()=>{this.goTo("#post-"+num,this.nav.post.goToOptions)})}}else{let url=window.location.href url=url.replace(/(\/\d+)?(#[0-9]+)?$/,page>1?`/${page}`:'') url=url+"#"+num window.location.href=url}},postIntersect(num){return(isIntersecting,entries,observer)=>{if(isIntersecting){this.nav.post.task.push(num) this.nav.post.active.push(num) this.nav.post.active=this.nav.post.active.filter(item=>Math.abs(item-num)<=5) this.nav.post.active.sort((a,b)=>a-b)}else{this.nav.post.active=this.nav.post.active.filter(item=>item!==num)} if(this.nav.post.active[0]){this.nav.post.anchor=this.nav.post.active[0]}else{this.nav.post.anchor=0}}},async apiLoadPosts(block){try{const response=await axios.post('/fapi/v1/post/block/'+block,{discussionId:this.nav.post.discussionId,}) if(response.data.code===0){response.data.data.posts.forEach(post=>{const i=post.num%100 Object.assign(this.posts[i],post)}) response.data.data.users.forEach(user=>{this.usersMap.set(user.uid,user)})}else{this.failureAlert('回帖数据加载失败: '+response.data.msg)}}catch(error){this.failureAlert('回帖数据加载失败: '+error)} this.nav.post.apiLock[block]=false},workerLoad(){while(this.nav.post.task.length){const num=this.nav.post.task.pop() const i=num-(this.nav.post.currentPage-1)*100 if(!this.posts[i].id){const block=Math.floor(num/20)+1 if(!this.nav.post.apiLock[block]){this.nav.post.apiLock[block]=true this.apiLoadPosts(block)}}}},getTimeInfo(t){if(!t){return ""} const now=new Date();const then=new Date(t);const diff=now-then;const minute=60*1000;const hour=minute*60;const day=hour*24;const month=day*30;const year=month*12;if(diffpost.num===num) if(!post){return "#"+num} const uid=post.uid const username=this.usersMap.get(uid)?.username if(!username){return "#"+num} return username},getUsernameByPostId(id){const post=this.posts.find(post=>post.id===id) if(!post){return "#"+this.getPostNumByPostId(id)} const uid=post.uid const username=this.usersMap.get(uid).username if(!username){return "#"+this.getPostNumByPostId(id)} return username},getPostNumByPostId(id){const post=this.posts.find(post=>post.id===id) return post.num},getPostById(id){const post=this.posts.find(post=>post.id===id) return post},getPostByNum(num){const post=this.posts.find(post=>post.num===num) return post},getAvatarByUid(uid){const avatar=this.usersMap.get(uid)?.avatar if(!avatar){return this.getRandomAvatar()} return avatar},getAvatarByPostNum(num){const post=this.posts.find(post=>post.num===num) if(!post){return this.getRandomAvatar()} const uid=post.uid return this.getAvatarByUid(uid)},getRandomAvatar(){const num=Math.floor(Math.random()*100) return "https://randomuser.me/api/portraits/men/"+num+".jpg"},getUrlByUid(uid){const url=this.usersMap.get(uid)?.url if(!url){return ""} return url},getTextByPostNum(num){const post=this.posts.find(post=>post.num===num) if(!post||!post.content){return '点击跳转到#'+num+'查看'} const parser=new DOMParser() const doc=parser.parseFromString(post.content,'text/html') const text=doc.body.textContent||'' return text.slice(0,100)},addHeadingIds(){const content=document.getElementById('post-content-0') if(!content){this.nav.showTOC=false return} const headings=content.querySelectorAll('h2, h3, h4') headings.forEach((heading,index)=>{if(!heading.id){heading.id=`toc-nav-${index}`}}) if(headings.length==0){this.nav.showTOC=false}},async doSearch(keywords){this.search.loading=true try{const response=await axios.post('/fapi/v1/search',{keywords:keywords,}) if(response.data.code===0){if(response.data.data.hash&&response.data.data.hash.length===32){window.location.href="/s/"+response.data.data.hash}else{this.failureAlert('搜索失败: 搜索服务异常')}}else{this.failureAlert('搜索失败: '+response.data.msg)}}catch(error){this.failureAlert('搜索失败: '+error)} this.search.loading=false},debounce(fn,delay){let timer=null return function(...args){if(timer)clearTimeout(timer) timer=setTimeout(()=>{fn.apply(this,args)},delay);};},},watch:{'nav.post.targetPage':{handler:async function(newV,oldV){this.toPage()},immediate:false},},} const vuetify=createVuetify({defaults:{global:{ripple:true,},},}) const app=createApp(App) app.use(vuetify).mount("#app")