惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
小众软件
小众软件
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
A
About on SuperTechFans
I
InfoQ
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名
我受够了前端的复杂性了
About 又耳宁 关于技术与股票的一些零碎想法 · 2023-11-18 · via 又耳笔记

虽然前端的工具在不断的迭代并尝试让工具的配置尽可能的简单,但是还是太重了,在开发一些简单的页面的时候我根本就不要什么虚拟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

启动

最后在项目的根目录启动即可。

小结

当我们编辑templates目录下的HTML和JS文件的时候, tailwindcss会试试生成最终CSS文件需要引入的样式,而live-server会在浏览器实时更新所做的修改。

总结

前端很好,但是个人认为,对于不需要前后端分离的项目不友好,徒增的复杂性,所以我选择了以前的老路,直接后端渲染前端页面。

参考链接