2025

雄关漫道真如铁,铁马冰河入梦来

离2024年结束还有一个月的时间。下面是对2024年的个人总结,以及对2025年的未来展望。

审视过去

  • 了解NuxtJs和NextJs等服务器端渲染(SSR)框架的基本概念和应用。
  • 了解Vercel、Dokploy等部署方案。
  • 了解低代码平台的优势与不足。
  • 了解“沉浸式翻译”的底层实现原理,开发并完成了Reddit和Quora安卓平台的沉浸式翻译功能。
  • 了解流程管理Flowable和Bpmn。
  • 了解全栈项目最佳实践。
  • 学会高效利用Pnpm包管理系统。
  • 学会React框架及其相关生态。
  • 学会利用Cursor高效编写代码。
  • 学会撰写博客,分享自己的观点,提升自己的写作及思维能力。
  • 学会蛙泳,感谢@wjc。

展望未来

  • 办理汇丰香港银行卡,开通美股、港股,了解理财知识。【√】
  • 学好英语的基础沟通,提升英语听说能力,达到日常交流无障碍。尽量将刷视频的时间换成学习英语。
  • 学会自由泳技能,永不言弃。【√】
  • 利用业余时间尽快完成KRT全栈项目Starter。【√】
  • 时刻关注AI生态变化,了解RAG检索增强。
  • 计划通过接自由职业项目、提高自己的网络影响力等方式,逐步实现从传统工作的转型,成为独立开发、数字游民。
  • 开始培养产品思维,挖掘用户痛点,快速行动利用KRT构建相应的产品,做到比做好更重要。
  • 学习自媒体宣发技能、技巧,推特、微博、油管、B站、抖音、快手、微信公众号。
  • 利用信息差,做海内海外相关产品。

Code Server

无论何时何地,你只需要拥有一台带浏览器的电脑。无需安装任何环境和软件,你就可以开始利用云端VsCode开始软件开发,利用Dokploy一键部署云端VsCode。注意,下方是docker-componse,需要将下方的password字段改为自己的密码,用于编辑器登录。

version: '3'

services:
  code-server:
    container_name: code-server
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
      - PASSWORD=<your password>
      - DEFAULT_WORKSPACE=/config/workspace
    image: lscr.io/linuxserver/code-server:latest
    ports:
      - "8443:8443"
      - "9001:9001"
      - "9002:9002"
      - "9003:9003"
      - "9004:9004"
      - "9005:9005"
    restart: unless-stopped
    networks:
      - dokploy-network
  mysql-demo:
    container_name: mysql-demo
    image: mysql:5.7.34
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=demo
    volumes:
      - mysql-demo-data:/var/lib/mysql
    restart: unless-stopped
    networks:
      - dokploy-network
  redis-demo:
    container_name: redis-demo
    image: redis:latest
    volumes:
      - redis-demo-data:/data
    restart: unless-stopped
    networks:
      - dokploy-network

volumes:
  mysql-demo-data:
  redis-demo-data:

sudo apt update
sudo apt install nodejs npm -y

# 检查版本
nodejs --version

# 更新到最新版本
sudo npm i -g n
sudo n latest
sudo npm i -g npm

# 安装pnpm
sudo npm i -g pnpm

注意

ports可以只暴露出8443核心,其他内部应用端口,VsCode可以自动代理,代理结果为https://<host>/proxy/<port>/

香港

此次去香港有三个目的,第一个是旅游,第二个是开户,第三就是用香港网络发个推特。最近汇丰香港(HSBC)适当放宽了内地用户线上开户政策的门槛。只需要线上申请,然后90天内去往香港在汇丰APP完成后续认证即可,汇丰APP会验证香港IP和GPS,以及你的港澳通行证,不要耍小聪明使用虚拟定位和VPN完成操作。

开卡的作用,可用作长桥开户,投资美股和港股,程序员独立开发或出海应用可用于跨境收款(Stripe香港)。群友说理论上汇丰比新加坡华侨(OCBC)更好一点。

个人对香港的政治,历史,小吃,旅游,文化不是很感兴趣。所以说我还是得考虑这是不是我此生唯一的机会,因为以后很有可能不会再来了。

前期准备:

  • 提前办理好港澳通行证和签注,微信小程序搜索移民局12367进行预约,非户籍地办理港澳通行证需要等20天,异地办理的需要注备好居住证明,所以要提前办理。
  • 计划好自己的出行计划,火车高铁还是飞机,提前准备好来往车票,地铁路线图,记得下载一个谷歌地图,个人觉得还是高德好用点(习惯了)。
  • 香港大部分地方都支持微信、支付宝支付,老店和小店需要港币支付,所以说港币兑换少量就行,我兑换了1000也没花出去。口岸的兑换点特别不划算,汇率要比银行高很多,所以要兑换的需要提前在内地兑换好。在你的银行App上预约购汇,取现即可。能确定能100%开户的,可以带20000港币过去。
  • 需要备好充电宝,香港的共享充电宝很少。如果要住酒店,还需要准备充电转换头。
  • 关于网络,最简单的就是小米手机自带,长按移动数据就会出现小米上网服务《全球上网》。300M/18元或者无限量/19元/天。我在支付宝买的跨境上网,记得要开通漫游,用于接收手机验证码。

注意事项:

  • 港澳通行证的有效期一般为十年或五年。
  • 签注有效期分别为三个月/一年,每次到香港算一次签注。去香港玩回深圳酒店休息的需要至少两次签注。

路程详情:

  • 出发地:湛江市龙海名都
  • 周五晚20:30打车从湛江市龙海名都出发到湛江站(30分钟10元)
  • 从湛江站出发(21:41)到深圳东站(10小时49分钟158元)
  • 深圳东下车乘坐14号地铁线布吉站上车
  • 到岗厦北下车转10号线到福田口岸下车C口出站去往入境过关,刷港澳通行证,人脸识别,指纹识别。(5元)
  • 到香港啦,可以开始乘坐香港的地铁去往任何想去的地方了。(我们到了油麻地,花了47,大概是4~5块一个站,香港地铁还是挺贵的)
  • 提前一个月预定的便宜酒店(93.56 元)
  • 购买流量卡两天(46元)
  • 提前买好吃的,香港吃饭太贵了,一份简单的面都是60~70。(30元)
  • 建议去的地方: 维多利亚港
  • 玩到周日晚上15:00,开始从出发回到福田口岸地铁站(47元),乘坐地铁回到深圳东(5元)
  • 从深圳东出发(17:15)到回湛江(10小时49分钟158元)

最后共计594.56元。

感谢@wxy、@wjc提供的建议。

全栈框架的最佳实践

写本篇的目的是发现和总结迄今为止最适合自己或者前端的全栈开发框架,想要直接浏览结果请到滑动到最后观看。

自从逛推(x)以来,频频出现在我推荐中的,除了政治、颜色、就剩下设计和“独立开发”了,看着大佬们日进斗金,实现财富自由,心里是无比的羡慕。我总在想,不能打工一辈子吧,要么创个小团队利用信息差创创业,还是自己独立出来利用自己的业务时间做一些有意义的事件,不以赚钱为目的、但还是要赚钱。毕竟互联网的整个流程我都有涉及过(产品分析、原型设计、界面设计、前端开发、后端开发、部署运维、域名注册、支付系统、备案流程)。而独立开发的第一件事就是“工欲善其事,必先利其器”,我得选择好我的最好的最适合的开发技术栈。有人说,这有啥选的,跟着美国人走呗,美国人用啥你就用啥,事实上我也尝试过NextJs和NuxtJs。一言难尽,无论是拦截器,路由,还是SSR都还是有各种隐藏小问题。遇到很多问题还是需要花很多时间去查找问题,理解底层实现,况且技术在不断的持续更新,带来的学习成本和心智模式不断增加。生活的压力很大,我还是想要一个框架成熟、使用简单、社区强大的框架。

谈谈过去!不知偶一天,曾经大学的我,偶然间在酷安发现了一款叫FusionApp的东西,下载试玩了一下,直接惊艳我一整年,FusionApp在基于WebView和Lua语言的基础上,让一个从未学过编程的人,三分钟之内,开发好一个自己的App。自己加了群,认识到原作者“韩歌,韩歌还开发了一个木函,酷安下载量好几百万,据说凭借着个人开发,已经实现了财富自由(可能小几百万是有的),最开始的版本就是基于Lua+Android开发的,我开始也模仿着自己的偶像,梦想自己也能有一天写下一款App,实现财富自由,一夜暴富。这种感觉驱使着我开始学习,接触互联网。当然,或许是自己有点天赋,没学过的Lua代码偶尔也能看懂点,顺着代码你能发现语言的规律。再后来,Lua渐渐的满足不了我的需求了,因为我需要更美的界面,更强大的开源组件,慢慢的,我入坑学了Java,毕竟当时Java还是Android的官方开发语言,Java开始的时候其实挺难学的,我记得我学了两遍,就那种特别基础的部分,什么堆栈IO抽象实现。基础学完了,我开始加入到AndroLua社区(FusionApp核心实现),加了QQ群,还贡献了50块钱。后来自己也开始写一些开源的代码,想去带动社区的发展,也在群里发了不少的demo。后来自己也写了一个OpenLua,也开始有一群对你一键三连的一堆朋友。OpenLua可以理解为一个移动端的IDE,可以使用Lua语言开发AndroidApp,期间也学了不少反编译的知识,当然现在基本忘完了。后来,我也不知道为啥,可能是不感兴趣了,还是快要毕业了,慢慢的放弃了。也记得曾经有人说在手机上开发App是不是脑子不好使,我曾经以为他们脑子才不好使,现在看来,不是那么很极端的说,用手机开发App就是一个笑话。

学学设计?做好一个软件,不仅仅是代码、思想,还要有UX/UE(用户体验)、UI(视觉传达),那些年很多刚做短视频起步的,结合算法的智能推荐,总是被乔布斯和培训班洗脑,后来就自学了UI设计,开始就找一些系统的课程,打一些基础,例如达内教育,淘宝9.9百度网盘,学了一部分,感觉教学质量很一般,偏平面部分讲的还行,PS、AI(illustrator)。达内的UI部分简直烂成一坨,后来又找了一些高质量的课程,像素范儿等。整体来说还不错,但是前面讲的太假大空了,可能自己没有那方面天赋,无法理解,受限于自己的过往,自己也没有创造能力。后来深入职场深有体会,同理可得,我的临场反应能力和情商是偏低的,我能意识到自己哪方面不足,但好像大学之后,个人的性格好像就固定了,改变不了,我不知道是我的环境问题,还是坚持的不够久,总之,有待努力。

学学前端?学完了Android开发,学完了设计,你会发现,你还是造不出来一个像样的软件,一个人要做一个完整的软件,要设计,要前端,要后端,要运维。前端又不只仅仅是Android,还有IOS,Linux,浏览器等各种平台,只是这些就要学四到五门语言和相关生态,我那时就在期盼,世界上是否存在有一门语言能搞定软件开发的所有流程。那时候Flutter才刚出来,安装环境特别复杂,其实就是梯子代理的问题,国内的网络环境导致,再加上当时自己对梯子的把握度,上个Github都够呛,Flutter从安装到卸载。经过反复思考,所以后来我选择了WEB前端开发(HTML\CSS\JAVASCRIPT),毕竟一套代码能运行在三个端,而且语法逻辑都和我学过的Java及其相似,缺点就是要舍弃点性能。我也更喜欢即用即走的模式,不喜欢在手机上安装许许多多乱七八糟的软件。又占内存,还占空间,有些软件还是破解的,不是很安全。

学学后端?我选择了我已经学会的Java,又补习了几个月,从SSM、SpringBoot、SpringCloud。我也就会跟着视频敲敲代码,能写一些最基础的,能连接数据库写个增删改查,复杂的SQL我就不会了。而且Spring虽然设计很好,但是太重了,一个服务就要占用我500M以上的内存,大的时候会占用一个G,这对个人买的VPS或服务器上使用,就不能写多个项目了,所以后来我对Java做独立开发不是很报希望。面对解决方案,又了解了一部分云原生GO,RUST。都是很不错的语言,跨平台编译,原生,高并发,就是语言设计的感觉有点反人类,卒,放弃了,可能是我太垃圾了,但是语言设计出来,不就是为了简化程序员的工作吗。

学习全栈?回归到现在,我最熟悉的还是JavaScript,也现在最硅谷最流行的,例如NextJs,借助于ServerLess的发展,一度成为前端最强大的框架。NextJs和NuxtJs也学了,它们最开始是解决SSR的问题,后来基于ServerLess演变成全栈框架,总体还行,但是坑有点多,而且还需要自己查文档,网上的解决方案很少,文档又是全英文阅读有点困难,而且官方写的文档据说好像也一般(来自reddit),最受不了的是在我的32G内存、I9处理器的拯救者电脑上,启动或者编译一个NextJs应用或者界面,几乎需要一分钟,也就是,你改动一行代码,保存更新,需要一分钟后才看的到效果,用惯了Vite的我,是一定受不了的,网上评价编译速度好像也确实很慢,但是总有很多人在吹,在捧,梅西造神,硬吹?。Nuxt也很好,不巧的是Vue的生态嘛,就太小了,全世界无数强大的组件大部分都是基于React开发的,我不是说Vue不好,Vue很好,设计理念很先进,未来可期,可是老外都不用,中国人用的多,但是开源的东西太少了,无论如何我还是选择React的生态。

整合全栈!2024,是AI蓬勃发展的一年,一个偶然的时间点,我问AI,能不能将express和vue整合到一起,AI给出了最完美的答案,createViteServer函数加上pnpm包管理器,这个时候我才意识到利用pnpm workspace构建monorepo是多么强大,现在我一度认为它比maven更加强大。经过几天研究,我终于将世界上最强大的JavaScript后端框架Express和世界上最强大的前端框架React整合到一起了,Vue也整合了一遍。最后他们使用同一个仓库,同一个包管理器,同一个服务端口,同一个开发语言(TypeScript),同一个打包结果。利用workspace的分包策略还能将很多模块进行独立拆分解偶,这也是后端框架最常见的模块拆分思想。之前学Vue源码核心部分好像也用到了pnpm workspace,看来大家主力的选择都没错。最后可以很方便的将框架打包结果部署到dokploy上,dokploy是个开源的基于docker的容器部署工具,自带CICD,支持Github。非常现代,高效,强烈推荐给各位前端开发者,有VPS或服务器的就可以开始慢慢放弃Vercel了,Vercel虽然能白嫖,但是国内的访问速度太慢了,CloudFlare也有点慢。

到这里,我想JavaScript对我来说简直就是我的梦中情语,我用它在一个项目里同时写后端,写前端,写库,写任何东西,甚至完成独立开发。世界上哪里还有这么优雅的语言。

最后总结一下,这将是我认为的未来独立开发的最完美的全栈框架技术路线:

类别推荐技术备选方案说明
开发语言TypeScriptJavaScript提供类型安全,更好的开发体验
前端框架ReactVue 3React生态更丰富,Vue上手更容易
后端框架KoaExpress, NestJSKoa轻量灵活,NestJS适合大型项目
包管理器pnpmnpm, yarn更快的安装速度,更好的磁盘空间利用,更好的模块管理
构建工具Viteesbuild, Webpack开发体验好,热更新快
CSS方案Tailwind CSSUnoCSS, Sass原子化CSS,开发效率高
React组件库shadcn/uiAnt Design, MUI高度可定制,设计优雅
Vue组件库Element PlusNaive UI, Vuetify社区活跃,组件丰富
React状态管理ZustandRedux Toolkit, Jotai轻量简单,学习成本低
Vue状态管理PiniaVuexVue官方推荐,更现代的API
数据库PostgreSQLMySQL, MongoDB功能更强大,类型支持更好
ORMPrismaTypeORM, Sequelize类型安全,开发体验好
缓存RedisMemcached功能丰富,使用广泛
对象存储MinIOAWS S3, 阿里云OSS自托管对象存储解决方案
版本管理GitHubGitea, GitLab最流行的代码托管平台
代码规范ESLint + PrettierStandardJS可定制性强,主流方案
Git工作流Husky + lint-stagedsimple-git-hooks自动化代码检查和格式化
测试工具VitestJest, Cypress更快的测试执行速度
部署方案DokployVercel,Railway, Netlify容器化 + Serverless部署
CI/CDDokployGitHub Actions,Jenkins, GitLab CI与Git完美集成
监控日志SentryELK Stack, Loki错误追踪和性能监控