我受够了前端的复杂性了
虽然前端的工具在不断的迭代并尝试让工具的配置尽可能的简单,但是还是太重了,在开发一些简单的页面的时候我根本就不要什么虚拟DOM, 什么MVVC, 最重要的是,我不想要单独维护一个代码仓库, 所以对应简单的页面,我决定重新走后端渲染前端页面的老路。
值得注意的是,我并不是要否定前端框架的必要性,我只是不想写一个简单的页面还需要单独维护一个前端项目,或者说前后端分离。对于前后端分离有必要的项目,我还是很乐意选择一个前端框架的。
前端工具和框架的优势
随着前端的快速迭代,创建一个前端项目已经是很简单的事情了,比如使用vitejs
就能很快拉起一个项目,并且使用起来也比较简单,而且这类的工具也提供了一套比较好的最佳实践,用户只需要在这个框架开发就能享受到诸如页面自动加载,一键打包等各种愉快的开发体验。
对于大多数后端而言,前端的一个拦路虎就是界面写不好,即怎么写都差点意思,比如文字居中,比如文本对齐,比如各种样式的配色等,能写个大概但是怎么都写不好看,以及有一些复杂的交互组件写不出来,所以前端框架如Vue
, React
等都有很多配套的UI框架,比如Element
, Ant Design
等, 这些框架如果会用,使用起来还是很爽的,开发要做的只是熟读其API然后将数据填充进去而已。
我只是想开发几个简单的页面而已
前端的开发工具很好,框架也很好,只是有时候没必要而已,如果是使用诸如Vue
, React
之类的前端框架,我们至少需要其一个项目(这里的项目是指一个git仓库),那么维护的成本就增加了,并且后面可能还需要分开部署,这样维护的难度就更高了,所以我开始寻找新的解决方案,而我选择的方案其实只是走了以前的老路而已。
CSS框架
因为要抛弃那些UI框架,所以只能自己写组件,这时必然要自己写CSS。
CSS框架最出名的bootstrap
, 这个框架自然是很好的,但是对于我而言,感觉写起来不跟手和有限制。
不跟手是指我们需要先浏览一遍它的各个组件样式是什么样的,然后选择一个记住并复制到自己的代码中,这样写起来并不连贯,会打断开发的节奏。
有限制是指它提供了一套不错的规范,比如颜色和尺寸,这些很多时候很棒,但是就是想修改它的尺寸和颜色呢? 当然是可以覆盖的,但是不爽。
所以我最终选择的CSS框架是TailwindCSS, 个人觉得这个框架只有真正写过才能感受到它的魅力,而只是看它的示例代码可能会有很多槽点,比如为啥不直接自己写CSS,这样的CSS代码也太长了吧,这些点我并不想反驳,如果你觉得是这样,那你是对的,使用其他的CSS框架吧。
实时加载
能够使前端开发提升很大效率的一个点,个人认为是实时预览,所以在放弃大而全的前端工具时必须找到一个替代品,这里选择的是 live-server
, 通过它就能够很好的实时预览自己的页面效果了。
一个例子
以下是这个这个例子的目录结构。
├── dist
│ └── main.css
├── Dockerfile
├── static
│ └── main.css
├── tailwind.config.js
└── templates
└── index.html
dist
目录是最终生成的CSS的静态目录, 这个目录在部署的时候需要跟后端代码放在一起,或者使用反向代理静态代理。
static
目录里的main.css
文件是CSS的入口文件,可以写自己的CSS代码也可以导入tailwindcss
的一些设置。
templates
目录就是需要后端渲染的HTML文件了。
配置TailwindCSS
首先是安装Tailwindcss
命令行工具,通过这个工具可以实时的生成对应的CSS。
其实为了更简单,可以引入一个全量的TailwindCSS, 也就三四百KB, 对于本地访问还是可以接受的,这样你就不需要安装tailwindcss的相关工具和配置了。
下面的步骤全部来自官方教程: https://tailwindcss.com/docs/installation
安装命令行及初始化
npm install -D tailwindcss
npx tailwindcss init
配置模板路径
module.exports = {
// 根据自己需要配置这个路径, 因为是走后端渲染模板的老路,所以这些写的是templates目录
content: ["./templates/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [],
}
增加tailwind指令
这里将创建文件static/main.css
,并填充以下内容。
@tailwind base;
@tailwind components;
@tailwind utilities;
开始构建进程
npx tailwindcss -i ./src/input.css -o ./dist/main.css --watch
在模板中使用
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/dist/main.css" rel="stylesheet">
</head>
<body>
<h1 class="text-3xl font-bold underline">
Hello world!
</h1>
</body>
</html>
这里的/dist/main.css
就是上一步设置的-o
参数。
配置编辑器
为了在写tailwindcss
的时候有提示,需要安装一个额外的插件, VS Code编辑器里的插件名叫做: Tailwind CSS IntelliSense
配置开发服务器
开发服务器主要用于预览自己所写的CSS效果, 使用以下命令安装
npm install -g live-server
启动
最后在项目的根目录启动即可。
live-server
小结
当我们编辑templates
目录下的HTML和JS文件的时候, tailwindcss
会试试生成最终CSS文件需要引入的样式,而live-server
会在浏览器实时更新所做的修改。
总结
前端很好,但是个人认为,对于不需要前后端分离的项目不友好,徒增的复杂性,所以我选择了以前的老路,直接后端渲染前端页面。