大家好,距离我上一篇博文已经过去一周了。 Fitur Multiple ReactionsFitur Multiple Reactions.
这次我们不会讨论新功能,而是谈谈在大约三个月后使用Next.js,Tailwind CSS和Framer Motion的感觉。
对,三个月我第一次使用所有这些技术来创建这个网站,该网站将于2022年10月23日左右开始。
一切都始于这条推文。Tweet ini.
我只想说说我的体验。我不会拿它跟其他类似的技术栈做比较,因为我之前没用过别的,呵呵。
直接进入正题吧..
Next.js
之前我用 React 构建网站时比较喜欢用 CRA,最近才开始在这个网站上使用 Next.js。
说实话,Next.js 真的很棒。所有重要的功能 —我需要的功能— 都已提供,用户体验很棒,文档完整,教程切中要点。
最酷的是它支持 SSG 和 SSR。以下是我特别喜欢的一些功能:
路由
这是最重要的部分。它开箱即用地支持路由。创建动态页面(例如博客)非常容易。
我最喜欢的是 API 路由。要创建 API 端点,只需使用已提供的 API 路由即可。因此,无需配置 Express。
MDX 支持
使用 @next/mdx 实现博客的 markdown 或 mdx 非常容易。
您还可以创建常规页面,因此您可以真正以 MDX 格式创建常规页面,或者创建主要包含 '写作'-内容的页面。
优化
Next.js 已对字体和图像的使用进行了优化。
要使用 Google 字体,只需从 @next/font 包导入即可。图像使用已自动支持压缩和 srcset 属性。
还有什么可以改进的呢?
实际上还有许多其他的小功能,例如更快的编译速度、国际化路由、静态 HTML 导出等等。
您可以快速浏览 文档 或直接试用。
Tailwind CSS
请查看以下示例代码 (来自官方网站 tailwindcss.com),该代码使用 Tailwind CSS 进行样式设置:
<figure class="rounded-xl bg-slate-100 p-8 md:flex md:p-0 dark:bg-slate-800">
<img
class="mx-auto h-24 w-24 rounded-full md:h-auto md:w-48 md:rounded-none"
src="/sarah-dayan.jpg"
alt=""
width="384"
height="512"
/>
<div class="space-y-4 pt-6 text-center md:p-8 md:text-left">
<blockquote>
<p class="text-lg font-medium">
“Tailwind CSS is the only framework that I've seen scale on large teams.
It’s easy to customize, adapts to any design, and the build size is
tiny.”
</p>
</blockquote>
<figcaption class="font-medium">
<div class="text-sky-500 dark:text-sky-400">Sarah Dayan</div>
<div class="text-slate-700 dark:text-slate-500">
Staff Engineer, Algolia
</div>
</figcaption>
</div>
</figure>
我原本以为是这样:
为什么风格很奇怪?HTML太乱了?如果是这样,为什么不使用这些样式?
我有很多,这就是它。😂
但是,既然你有一个使用Tailwind CSS的自由项目,那么你也应该使用它。
事实证明,使用Tailwind CSS也很好。我尝试和治疗师在建立这个网站。
怎么样?
-
无需更换文件以创建样式
标记和样式足够在同一个地方。你需要打开一个CSS文件,指定一个类的名称,清除要编辑的类等。
这是因为样式粘在HTML中,所以创建或更新组件非常容易和快速。
只需打开文件,在同一个地方编辑所有内容编辑样式🔥
-
与inline styles不同
我最初的想法是错误的,因为它们的风格不同。使用Tailwind CSS,在HTML中,我可以像
hover,focus等效果这样的样式。
-
完全支持CSS
几乎所有的CSS功能封面都是相同的Tailwind CSS。比如渐变,背景效果,网格,响应式设计(断点)等。
越来越多的实用类?
是啊!但如果使用VS Code,它甚至很好,因为它已经提供了VS Code扩展,在那里再次编辑HTML类,将出现Tailwind CSS类实用程序的自动完成列表!
-
简写工具
可以使用 class
inset-0来输出CSS:.inset-0 { top: 0px; right: 0px; bottom: 0px; left: 0px; }或者更丰富的
xdany用于左+右和上下+下的缩写。 例如,inset-x-0,px-2,border-y-0等。
-
支持黑暗模式
Tailwind CSS 提供了一个名为 (variant) 的实用类。
dark:它可以用于黑暗模式。例如:
<div class="text-black dark:text-white">Hello, World!</div>Tulisan 'Hello, World!' 默认情况下,上面的颜色为黑色,而在暗模式下为白色。
-
CSS输出很小
由于Tailwind CSS会自动捆绑未使用的实用程序类,因此根据使用多少实用程序,输出很小。
有什么不好吗?当然有
-
长的Classname
这在Twitter上也是如此。😂 但我认为使用
clsx()有点脆弱. 例如:<nav className={clsx( 'border-divider-light rounded-xl border bg-white', 'dark:border-divider-dark dark:bg-slate-900' )} ></nav>
-
HTML的负载越来越重
虽然CSS的输出很小,但HTML的输出更大。因为长的类名肯定会增加HTML的位大小。
可以回到旧的方式,假设类很多,更不用说重复使用(例如循环)可以使用普通的css类。
案例示例:
<div class="text-accent-600 dark:text-accent-400 hover:text-accent-700 hover:dark:text-accent-300 flex h-9 items-center gap-1 rounded-xl px-2 text-[13px] font-bold dark:font-semibold" > Home </div> <div class="text-accent-600 dark:text-accent-400 hover:text-accent-700 hover:dark:text-accent-300 flex h-9 items-center gap-1 rounded-xl px-2 text-[13px] font-bold dark:font-semibold" > Projects </div> <div class="text-accent-600 dark:text-accent-400 hover:text-accent-700 hover:dark:text-accent-300 flex h-9 items-center gap-1 rounded-xl px-2 text-[13px] font-bold dark:font-semibold" > Blog </div>我把它改成了:
<div class="nav-link">Home</div> <div class="nav-link">Projects</div> <div class="nav-link">Blog</div>这样可以减少HTML的负载。
Framer Motion
简化事务。它不适用于复杂的动画,但不是基本的,例如fade-in fade-out。
非常好的新体验,使用JavaScript进行动画。以前,我用CSS做动画。
感觉如何?很好结果也很顺利。因为它使用JavaScript,所以通过特定的事件“动画”也很容易。
例如,“onClick”,“onScroll”,当第一个组件被渲染时,甚至当其元素在视口中“可见”时。
奖励积分
-
Vercel
以前只使用GitHub页面,因为不要托管静态页面(使用CRA)。现在我使用Vercel托管Next.js项目
Vercel是面向前端开发人员的平台,提供创新者在灵感时刻所需的速度和可靠性。
部署设置简单,快速,具有开发或网站预览模式等阶段化功能(不直接部署到生产),当然还有免费版本。
推荐托管Next.js项目,因为Next.js也有Vercel😂
摘要
不要使用 Next.js、Tailwind CSS 和 Framer Motion。开发者体验非常好,易于使用,文档整洁。
尽管最近被列为尝试, 我认为这个技术堆栈将是我创建网站时的第一选择.
保持健康,下周见。👋