开篇
最近想写一个连载的系列文章。主题是《从0到1写一个网站》。写这个主要有几点原因,
- 自己的个人网站yasinshaw.com已经有一年多没有加新的功能了,上次更新还是在19年的10月份,现在虽然能稳定运行,满足基本功能,但还是有点简陋;
- 最近想学点以前没有深入学习或者实践过的技术,比如前端的vue3和TypeScript,比如后端的kotlin语言、响应式编程、DDD实践等;
- 也能作为一个挺不错的公众号文章素材,能够保持比较高频率的输出,把自己如何从0到1写一个网站的用博客写出来,分享给更多的朋友,尤其是对全栈感兴趣的朋友;
- 想把它作为一个开源项目,顺便学学如何运营一个开源项目。
为什么是个人网站?
一个是自己平时需要用,另一方面之前写过,也有一些经验和思考,如果写其它类型的网站,自己又要兼顾学习和使用新技术,可能会比较累。
所以就写个人网站吧,如果这个项目写完了,后面再考虑写个电商网站或者自己一些创意idea的flutter APP。
会用到哪些资源?
会用到一台阿里云的服务器,大概1核CPU, 1G, 1M的最小配置款。
域名也是在阿里云上万网申请和备案的。因为备案比较麻烦,所以我打算沿用自己之前的域名yasinshaw.com。因为开发过程还要继续使用自己的个人网站,所以www, admin,file这些二级域名不会动。新的应用在开发阶段会使用newPortal、newAdmin等带有new的二级域名。等开发完成后再切换过去。
存储会用OSS,因为需要CDN,特别是图片。之前用的七牛云的,感觉还不错,现在也打算继续沿用。
SSL证书,用阿里云和七牛的免费证书。缺点是必须一个二级域名就要申请一个证书,而且要每年更新一次。但优点是免费的,还是挺香的。
所以严格来说并不是真正的“从0到1”,云平台的一些资源还是会用现成的。这部分也不会单独写文章介绍,毕竟跟技术关系不大,去云平台花钱买资源,然后简单设置一下就行了。
会用到哪些技术?
前端
前端的话,会用「Vue3」了。但我也很久没有关注前端了,Vue3的一些新特性我也不是特别了解,只能一边做一边看看了。TypeScript其实比较纠结要不要用,因为目前感觉ES已经能够满足自己项目的需求了,且目前没有学习过TS,不知道有没有足够的时间去学习TS。不过TS是趋势,看情况是否使用吧。
UI库
UI库,之前用的是vuetify,感觉也挺不错的。但这次想尝试一下「拟物风格」,不知道vuetify支不支持。如果不支持的话,到时候再去搜一下有没有合适的UI库。
后端
后端主要用「Kotlin」,因为想学习一下这门语言,听说挺香的。结合最新版的SpringBoot。应该会用到DDD结合整洁架构,之前有写过一些文章,趁这次机会实践一下。不打算用SpringCloud,因为机器资源太少,项目也比较简单,目前也没有深入学习的打算,用不太上。
DB
DB还是用「MySQL」了。这块暂时没有特别的需求,也没有时间和精力去学习其它DB。等以后再说吧。
搜索
搜索还是用ElasticSearch,单机部署,加个中文分词插件。这块之前做过,有经验。
缓存
缓存目前的个人网站是用的Redis,但是目前来看其实用不上。就单机的情况,其实用「内存缓存」会更好一点。
容器
Docker会用。不过之前用Docker用得比较简单,是用命令手动去启动的一些服务或中间件。这次打算用上Dockerfile,结合CI来更好地做「DevOps」。不用用到K8s和ServiceMesh,因为没有必要……
项目会写多久?
这个真不太好估算。大概期望能够在年前完成目前已有的基本功能吧。尽量保证每天都写一点,但是如果要同时更新系列文章的话,可能会有点忙不过来,但肯定是会经常更新代码的。
这段时间会写其它技术文章吗?
会的。其它技术文章周末会写一写,还是保持周更。跟这个系列文章不冲突。但是最近更新的技术文章可能跟自己最近学习或者思考的东西相关,毕竟有输入才有输入,所以其它技术文章的主题可能跟项目上用到的技术有一些关联。