作者归档:白宦成

关于白宦成

独立开发者, 自由职业者, 写作者

CAPTCHA

为什么 2022 年了,依然让堂弟入 IT 的坑

在之前的文章里,提到过,堂弟最近在跟我学习编程。不过没有提到为什么我做出这样的判断,这篇文章就来聊一聊为什么要做这样决策。

任何决策都有其背后的上下文,基于这个上下文才能理解这个决策的原因。

我的堂弟来自村里,从小便是帮大伯种地做生意和喂羊,没少做农活。大伯家中虽然不能说是清贫,但也确实算不得富有。堂弟还有一个姐姐,目前在北京上班。

可以看出,堂弟的基础并不好,家中并不能给他提供太多的帮助,对于堂弟来说,如果不能留在外面,很有可能就要回到河南,做个小生意,或者找一个公司工作,拿着河南的平均工资。

在这种情况下,我判断堂弟的核心诉求应该是 致富,首先要解决致富的问题,从村里走出来,而不是随时有可能生意黄了,不得不回村里。

基于上述的判断,我给到堂弟的建议是从事互联网/IT的研发工作,而具体方向的划分,则是前端工程师

关于选择 IT 主要考量的因素主要有以下几个:

  1. 我可以给他一些指导。相比于让他自己完全从 0 开始进入 IT 这个行业,显然我的帮助可以让他稍微少走一些弯路。
  2. 即使 IT/互联网增长放缓,依然是一个高薪行业。即使目前 IT/互联网增长放缓,但也仅仅是相比于互联网本身。相比于更多的传统行业,IT 依然拥有相对可观的薪水收入和可预期的行业持续生命周期。对于从农村出来的堂弟来说,是一个不错的选择。
  3. IT/互联网的学历歧视较轻。不少的行业是存在学历的歧视的,如果员工没有相应的学历或是不是从特定的学校/专业毕业,就会存在歧视的情况。互联网因为本身没什么门槛,所以相应的歧视也比较少,更多是你是否有足够的能力来做这件事。如果有能力做,就不太会被歧视。而本科的文凭已经达到了行业的硬门槛水平线,堂弟需要的是锻炼自己的能力,让自己的能力达到可以求职的水平。

总体来说,我算是帮堂弟做了一个人生决定,从我上述的判断来看,没有什么大问题,但长期来看,还是要看他能否在这个行业当中坚持,并找到属于自己的路,并持续的走下去。

meditation

关于正念,我知道的

由于长期的焦虑和压力,我始终在寻求一些能够让自己摆脱压力或解决压力的方式和方法。正念冥想在最近几年,被宣传的「神乎其神」,那些练习了正念冥想的人宣称正念可以「10分钟冥想就可以达到休息一整晚的效果」,对于自认为压力比较大的我来说,自然是十分具有吸引力,因此,我也开始了漫长的正念练习。

我的正念练习其实开始的并不算顺利,冥想源自佛教,但又不同于佛教的冥想,因此,并不能单纯的理解为佛教的冥想,现代说的「正念冥想」是去除了宗教概念之后的产物。

正念意味着心在当下,活在此刻,心神不乱。它意味着在自然的觉醒状态下安顿心灵,不带任何偏见或评判。

《十分钟冥想》

从正念的介绍当中,其实大致可以知道正念能干嘛:让我们被扰乱的心神重归平静,用一种自然平静的心态来看待我们所处的状态。换句话说,正念并不能做到药到病除,更多只是能够帮助你回归平静,并用平静的心态来处理问题。因此,正念冥想并不适用于所有人,从我的视角来看,更适合那些情绪波动极大,容易出现易怒、无法集中注意力等问题的人。

当你摆正了对于正念冥想的认知,控制好自己的预期后,正念冥想就真正适合你了。


说完了正念冥想的基本认知,接下来说说在我自己学习冥想过程中,我认为对我有帮助的东西:

  • 《HeadSpace 正念冥想指南》:这是一个来自 Netflix 的纪录片 / 教程,由 HeadSpace 的创始人 Andy Puddicombe 所制作的课程,介绍了一些比较简单的冥想入门的方式。
  • 《十分钟冥想》:这本书也是由 Andy Puddicombe 所撰写的,相比于纪录片,提供了更加丰富的信息和上下文,对于理解正念的价值,会更有帮助。

如果你也打算学习正念,那么这两个资源应该会对你有比较大的帮助。


除了这些视频/书以外,现在看到最多的应该就是各种冥想的 App 了,他们大多提供了一些冥想的音频,可以帮助你快速进入都某些状态当中。对于初学者来说,借助于这些 App 和提供的引导,可以快速先体验到冥想的状态。但也需要注意到是,在真正意义上你需要冥想的场景中,你是无法依靠这些 App 的。这些 App 是好的教具,但不能太过依赖,不然就本末倒置了。

你需要在使用这些 App 的时候,尝试习得自主正念冥想的技能,这样才能在你真正需要正念冥想的时候,快速进入到状态。

man wearing white and black plaid button-up sports shirt pointing the silver MacBook

公司不是让你来学习的,但你可以在公司学到东西

最近堂弟毕业,我让他来和我一起住,顺便学习编程,希望借此机会,进入到互联网/软件行业,借助 IT 技术的力量脱贫。

在指导他的时候,我突然意识到了职场的另一层价值 —— 让你学东西。

我们常说,公司是要盈利的,所以公司不是让你来学习的,公司是让你来干活的。所以,我们更加关注自己在进入公司前的水平。但如果你能够用好公司的资源,确实也可以在公司当中学到东西。

1. 企业为你提供经验

企业通过剥削你,获得利益。但与此同时,你也因为被剥削,而获得了经验,这些经验可以帮助你积累经验、建立壁垒。从而成为一个更加强大的自己,让你能够更好的处理工作,以及跳槽到下一家公司。

2. 企业为你提供老师

在任何一家公司,作为一个新人,你都有值得学习的人。无论是你的直接管理者,还是你的导师,抑或是公司的 CEO。

作为一个新人,你可以放心大胆的去向这些前辈提出你的问题。从我以往的经验当中来看,绝大多数的人都有「好为人师」的「毛病」,所以,当你拿出问题去问他们的时候,他们都愿意给出一些思考的方向,甚至是直接告诉你答案。

当然, 你也会遇到一些人秉承着「教会徒弟,饿死师傅」的理念,不愿意教你,这也是正常的。遇到这样的人,你不要再找他来提问就好了,选择其他人来提问,学习。

总结

资产阶级和工人解决的剥削问题常被提上台面。不过作为打工人,我们既要看到剥削的坏处,也要意识到背后的好处,坦然的接受剥削的坏处,然后巧妙的利用剥削带来的好处,才是一个优秀的打工人。

woman signing on white printer paper beside woman about to touch the documents

职场小建议:事事需要 Double Check

独立开发者孵化器日常工作有感

在职场当中,一个常见的问题就是 —— 我以为我做到了,但其实我没做到。

比如非常常见的:

  • 我以为我和同事说了,但同事说没说;
  • 我以为我把信息同步到位了,但其实没有同步到位。

而一个非常简单的方式可以解决掉这个问题便是 —— Double Check

比如,你和同事说完之后,可以让她用她的理解复述一遍同样的问题。她说的时候便是你进行 Double Check 的时候,你可以很快发现你们对于同样的问题是否有相同的认知,哪些点上你们以为一致了,但其实没有一致。

在协作场景下,上下文的同步无比重要,因此,积极去做上下文的同步,才能做好你的工作。逐渐从职场菜鸟一步步往上走。

pile of assorted-title books

读书读的是个细嚼慢咽,但也是狼吞虎咽

我最近在读互联网圈爆火的《纳瓦尔宝典》,这本书不厚,但我读的非常慢,和我预想的完全不同。这本薄薄的书,却花费了我不少的时间,我读这本书读了快半个月,也不过读了 30%(大约 70 页),实在算不得快。

d2b5ca33bd970f64a6301fa75ae2eb22 30

又会想起我之前读的《你是你吃出来的》,一两天就翻完了。

这样截然相反的结果让我思考,这是为什么?为什么我读纳瓦尔宝典这么慢?

仔细对比二者的不同,我得到了答案:

  • 对于《你是你吃出来的》,我在读之前,就知道这是一本不错的书,且我读它就是希望获得一些过去我没有的信息的,所以这本书对我来说就是完全输入。我直接阅读即可。
  • 对于《纳瓦尔宝典》,我在读之前同样知道这是一本不错的书,且他和我所在几乎是相同的行业。我虽然是希望获得一些过去我没有的信息的,但因为这里面有太多相似和过去共同的部分,所以我在阅读的过程中,时常会将其中的信息拿去放在我自己的经历当中去做对比。这种拿信息和我自己的对比,让我话费了不少的时间,基本上是读一页就要想一会儿。

哪一种好呢?我觉得都挺好,

  • 前者是让我获取新的信息,我从小白开始快速了解到一些信息,指导我的生活;
  • 后者是让我验证我的判断,我从新的信息里和过去的判断进行对比,增强了自己对于判断的认知,直接指导我的生活。

二者都挺好。

telegram

为你的 WordPress 站点配置 Telegram Instant View

Telegram 内置了一个非常好用的阅读功能 —— Instant View。Instant View 可以实现在 Telegram 内部重新对网站内容进行排版,从而为读者提供更好的阅读体验。

作为一个网站主,如果你希望对你的网站提供相应的支持,则可以自行在 Instant View 的网站添加你自己的网站进行适配。

为 WordPress 添加 Instant View 适配

访问 Instant View 官网,并使用你自己的 Telegram 账号登录

d2b5ca33bd970f64a6301fa75ae2eb22 8
Instant View 官网

登录成功后,点击右侧的 My Templates,进入到 Templates 管理页面。

d2b5ca33bd970f64a6301fa75ae2eb22 9

并在 Templates 管理页面中间的输入框中输入你网站任一文章的地址,并回车,你会自动进入到规则的适配页面。

d2b5ca33bd970f64a6301fa75ae2eb22 10
规则适配页面

随后,在页面中输入你的站点的规则,这里我们可以使用其他开发者写好的规则。将规则粘贴在页面中

# Use Instant View version 2.0
~version: "2.0"

# Use this template only blog article pages
?exists: /html/head/meta[@property="article:published_time"]

# Get article text in <article> 
body:     //article

# Get title from <h1>

title:    $body//h1[1]
subtitle: $title/next-sibling::h2
author_url: //span[has-class("author")]//@href

# Get article cover image
cover: //img[has-class("wp-post-image")]

# Convert all iframe elements to inline element
@inline: $body//iframe[starts-with(@src, "/media/")]

# Remote header and footer
@remove: //article/header
@remove: //article/footer

# Replace p to figure
@replace_tag(<figure>): $body//p[.//img]

# Youtube Embedded Fix
@replace_tag(<figure>): $body//p[.//iframe]
Code language: PHP (php)

粘贴并保存后,会自动在最右侧页面生成预览的效果。

d2b5ca33bd970f64a6301fa75ae2eb22 11
加入规则适配后的效果

当你的规则适配效果无误后,接下来只需要点击右上叫的 Mark as Checked ,来标记该页面已经检查完车。

d2b5ca33bd970f64a6301fa75ae2eb22 12
标记为检查成功

测试完成第一个后, 接下来你只需要在你的博客当中挑选出 10 篇文章,进行文章的验证即可。

d2b5ca33bd970f64a6301fa75ae2eb22 4
验证至少 10 个页面才行

根据 Telegram Instant View 的规则,你需要验证满 10 篇文章,才能提交你的模板给官方人员审核。

d2b5ca33bd970f64a6301fa75ae2eb22 5

提交后,你会见到这样的提示,接下来只需要等待你的模板通过测试即可。

d2b5ca33bd970f64a6301fa75ae2eb22 6
提交成功

预览效果

在审核期间,你可以在编辑器页面右上角点击「View in Telegram」来查看预览的效果。包括你也可以复制里面的 rhash 的值,使用这个值来生成 Instant View 的链接分享给别人。不过,最方便的当然还是等官方审核通过以后再用。

d2b5ca33bd970f64a6301fa75ae2eb22 13
预览效果。

总结

Telegram Instant View 的开发不困难,掌握了一定的 HTML 、XPath 的基础,就可以开发完成,简单的几步,就可以让你的网站在 Telegram 当中拥有一个不错的预览效果,这个时间值得去花。

text

为你的服务器配上自定义的登录界面

我自己在服务器上使用的是 Ubuntu 20.04,每次在登录时,Ubuntu 都会展示一系列的信息,冗余且在多个服务器上看不出差异,并不能非常友好的提醒我这个是哪个服务器。

d2b5ca33bd970f64a6301fa75ae2eb22 25

于是,我决定对其进行自定义,改成我自己喜欢的样子。

d2b5ca33bd970f64a6301fa75ae2eb22 29

1. 分析现有的 Message 格式

想要修改,就一下先分析一下组成结构。我截图所示的输出可以分为三个部分:header、motd 和 last login message

而我主要不满的是 header 和 motd 的部分,对于 last login message,我虽然觉得有些多余,但在很多场景下,确实可以用于提醒。所以我就不隐藏了。不过,如果你希望隐藏 last login 的话,可以在当前用户的根目录下创建一个 .hushlogin 文件来关闭 last login message

touch ~/.hushlogin

2. 修改 motd 和 header

修改 motd

motd 的全称是 Message of Today,他的内容被存放在 /etc/motd 当中,想要修改 Motd 的文字,只需要直接修改 /etc/motd 文件的内容即可。不过需要注意的是,motd 文件不支持做格式化,只支持展示默认的文本。因此,你可以通过在其中加入空行来引起注意。

l9p67

修改 header

Header 部分存放在 /etc/update-motd.d/ 目录中,你可以通过修改这个文件夹下的文件来实现不同样式的 motd 风格。其中文件名格式为 优先级-文件名的方式进行组织,你可以根据自己的需要,创建适当优先级的文件。

2czq5

比如,00-header 文件的源码如下

#!/bin/sh
#
#    00-header - create the header of the MOTD
#    Copyright (C) 2009-2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@canonical.com>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

[ -r /etc/lsb-release ] && . /etc/lsb-release

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
	# Fall back to using the very slow lsb_release utility
	DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi

printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
Code language: PHP (php)

其中有价值的代码主要就是最后几行的输出。

类似的, 10-help-text 的代码则输出了文字。

#!/bin/sh
#
#    10-help-text - print the help text associated with the distro
#    Copyright (C) 2009-2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@canonical.com>,
#             Brian Murray <brian@canonical.com>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

printf "\n"
printf " * Documentation:  https://help.ubuntu.com\n"
printf " * Management:     https://landscape.canonical.com\n"
printf " * Support:        https://ubuntu.com/advantage\n"
Code language: PHP (php)

而我们自己如果想要控制,可以自己写一个文件,比如叫 01-custom ,在其中加入如下代码(这段代码可以生成一段黑底红字的输出,用于提醒我自己这是生产环境服务器),并执行 chmod +x /etc/update-motd.d/01-custom 来设置可执行权限。

#!/bin/bash
printf "\u1b[31mwelcome to ixiqin.com production server\n"
Code language: JavaScript (javascript)

这里需要注意的是,/etc/update-motd.d 目录下的文件本质上是一个可执行文件,你可以使用 bash / dash 等任何 Shell 来实现,也可以考虑使用 Node.js、Python 之类的脚本来实现。这样就不用像我一样,使用 Termial Color Code 来实现颜色的变化。

执行完成后的结果如下

6wek6

根据需要自定义

当你找到了具体的文件的位置和配置的方式,就可以根据自己的需要来调整 /etc/motd/etc/update-motd.d 当中文件的内容,来达到你想要的效果了。

d2b5ca33bd970f64a6301fa75ae2eb22 28

这样,就完成了对于 Shell 的登录界面的改造工作了。

a86f98132e422cac2ec9c1a99f4849a6

Switch 游戏: 雪人兄弟 Special (SNOW BROS. NICK & TOM SPECIAL) 游玩体验

最近王大夫帮我把 Switch 的充电问题给解决了,我又可以开始玩 Switch 了。

第一波开始玩的,是雪人兄弟。我上一次玩这个游戏还是在小学的时候,在同小区的小朋友家插卡带玩的。现在 Switch 上也有了,刚好这两天低价促销,就买了下来。

关于游戏

雪人兄弟的 Switch 版本分为多个版本。其中的 Arcade 重置版模式,则和我们小时候在卡带上玩的版本一样,一关关的向上突破。

此外, Switch 版也支持多个手柄一起玩(意味着你可以和朋友一起玩)。

a86f98132e422cac2ec9c1a99f4849a6

在整体的游玩体验上来讲,是非常不错的,可以让你回顾一下小时候玩雪人兄弟的感觉。和小时后的雪人兄弟一毛一样。

此外,如果你希望在界面上再回顾一下小时候的感觉,还可以切换画面模式为 Green(绿屏)或 Black & White(黑白屏模式),并开启扫描线,来回溯小时候的那种 CRT 大块头电视的效果。

2c01e02a0f48131dcc3a07a997ba2457

关于游戏的背景故事

小时候玩雪人兄弟的时候并没有关注雪人兄弟背后的那些故事。这次在 Switch 上就顺便看了一下雪人兄弟的背景故事。

第一感受

我在看完过场动画以后,第一感觉是故事内核和马里奥一毛一样。 X 国家被 Y 国家攻占,Y 还抓走了 X 的公主,X 国家的人奋发图强决定救回公主。

然后又想了一想,觉得和马里奥还是有点区别的 —— 马里奥是爱情,雪人兄弟是亲情。。。因为雪人兄弟被抓走的是雪人兄弟的姐妹,而不是爱人。

图片版

e6c9d24ely1h35y3ocu3tj20zk0k0ta0
e6c9d24ely1h35y3z1nwmj20zk0k0dh8
e6c9d24ely1h35y3ysc69j20zk0k0q4e
e6c9d24ely1h35y3yjwm3j20zk0k03zv
e6c9d24ely1h35y3yadzoj20zk0k0t9s
e6c9d24ely1h35y3y4masj20zk0k075m

文字版

在遠方,有個寧靜祥和的冰雪樂園。 然而在某一天,卻遭到了Hotteda王國的Artich王的襲擊。 雖然冰雪樂園的孿生王子尼克和湯姆試圖阻止,但卻被Artich王下詛咒,變成了雪人。

而孿生公主Puripuri和Puchipuchi也被綁架,成為了人質。 再這麼下去…冰雪樂園就要完全融化,消失殆盡了。 為了拯救冰雪樂園,恢復原有的寧靜祥和,尼克和湯姆王子踏上了漫長的遠征路途。

「我一定會救出公主們,並且破除詛咒!」

「出發! 雪人兄弟們!!」

black android smartphone displaying man in white shirt

macOS 如何从 Nintendo Switch 中复制截图

最近沉迷 Switch ,无法自拔。在游玩过程中,截图了不少游戏中的画面,想要将其分享给大家,自然需要能够将截图图片复制出来。而 Switch 使用的是 Micro SD 卡,想要复制图片需要单独准备一个读卡器,显然不如直接将 Switch 作为读卡器,借助 Switch 上的 Type C 接口,来完成图片的复制。

原理

在 Switch 当中,实现了一个名为媒体传输协议(MTP)的通信协议,只需要你在 macOS 当中安装支持该协议的软件,并将电脑与 Switch 相连,就可以实现将 Switch 作为读卡器读取其中的截图文件。

步骤

1. 安装 Android File Transfer

一个比较常用 & 简单的支持 MTP 协议的软件是来自 Google 官方为 Android 提供的 Android File Transfer

下载该软件并进行安装,安装完成后,打开软件,等待 Switch 链接。

2. 在 Switch 上进入复制模式

配置完 Android File Transfer,接下来拿出一根 Type C 数据线,将其插入 Switch 底部的充电口。

并开机,在 Switch 当中找到 「设置」—「数据管理」—「管理截图与视频」

32c760cc37a480d78ebf4ace7864eeb7
993be4edefb1eb546b6d7f10ebb243ea

在截图与视频管理中,找到「通过 USB 连接复制到电脑中」,点击这个选项。

df858b0ca21be4b0f6636302e53a23c6

随即 Switch 会进入到配对模式,看到如下界面,则说明已经配对成功。

0ce6f28e154fa96363dffcb9eb7f234f

对应的, Android File Transfer 也读取到了 SD 卡当中的截图文件。

其中:「其他」文件夹是你在系统界面截图得到的图片;而以游戏名命名的文件夹,则是各自游戏当中的截图。

d2b5ca33bd970f64a6301fa75ae2eb22 24

接下来你就可以在其中找到你想要的截图,通过拖拽,将其拖到你本地的文件夹中进行查看了。

当你拷贝完成后,点击 Switch 上的「解除连接」,就可以安全退出 Android File Transfer,拔下数据线,继续开心的玩游戏了。

总结

我一开始以为 Switch 底层是 Android 改造的,后经推特上推友提醒,Switch 底层是任天堂自己开发的操作系统,只是兼容了 MTP 协议,所以特地在文章前加入了 MTP 协议的说明。

希望这个文章,可以帮到还在用 Switch 玩游戏的你。

computer screen displaying website home page

在 Next.js 中直接引入 SVG

随着 SVG 的兴起,过去使用雪碧图、IconFont 作为界面中图标用法已经过时。大家会更倾向于加载更加简单、空间占用更小、编写更容易的 SVG 作为图标的解决方案。

而 Next.js 同样对于 SVG 提供了支持。

最简单的加载方式 —— URL 加载

如果不希望对应用程序做任何的改进,一个最简单的方式是直接使用路径进行加载。只需要使用一个 img 标签,并设定 src 为 svg 文件的路径就可以了。

<img src="/logo.svg" alt="Logo SVG" />
Code language: HTML, XML (xml)

不过,使用 URL 来加载的问题是,当你的文件夹路径和结构比较复杂的时候,你需要使用一个较长的路径来加载 SVG,比较麻烦。

当然, 你也可以简单的优化这个方案 —— 比如自行封装一个 svg component,支持传入文件名 & alt 文字和其他参数。这样在调用的时候只需要输入文件名即可。

最舒服的加载方式 —— 编程加载

在 Next.js 当中,如果你希望更加舒服的引入 SVG,那比较好的方案是使用 import 标签来进行引入。不过,由于 SVG 本身并不是一个标准的 React 组件,你需要在 Next.js 上安装插件来支持对 SVG 的解析。

加入对 SVG 的解析需要安装 @svgr/webpack 插件。执行如下命令安装插件。

# yarn
yarn add @svgr/webpack
# npm
npm install --save @svgr/webpack
Code language: PHP (php)

安装完成后,修改 next.config.js添加相关的解析规则。

module.exports = {
  webpack(config) {
    config.module.rules.push({
      test: /\.svg$/,
      use: ["@svgr/webpack"]
    }); // 针对 SVG 的处理规则

    return config;
  }
};
Code language: JavaScript (javascript)

修改后保存,便可以直接使用 import 语法来处理

import Logo from "../assets/logo.svg";


// usage
<Logo />
Code language: JavaScript (javascript)

这样,你就可以直接将 SVG 作为一个 Component 引入,并使用你熟悉的 React Componet Props 来修改这个 Component 的各项属性。

总结

在这篇文章中,分享了两种在 Next.js 的方法,你可以根据自己的实际情况来决定选择具体使用什么样的方式来引入 SVG。