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

推荐订阅源

Cyberwarzone
Cyberwarzone
V
Vulnerabilities – Threatpost
T
Tenable Blog
Forbes - Security
Forbes - Security
Simon Willison's Weblog
Simon Willison's Weblog
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
S
Securelist
C
Cybersecurity and Infrastructure Security Agency CISA
Project Zero
Project Zero
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Visual Studio Blog
WordPress大学
WordPress大学
Latest news
Latest news
K
Kaspersky official blog
T
Tailwind CSS Blog
T
Threat Research - Cisco Blogs
B
Blog RSS Feed
C
Cisco Blogs
博客园 - 聂微东
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss
小众软件
小众软件
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
Security Latest
Security Latest
Y
Y Combinator Blog
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 最新话题
月光博客
月光博客
The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
S
Security Affairs
P
Proofpoint News Feed
D
DataBreaches.Net
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
一名嵌入式开发学习前端技术的失败之旅 - 少数派
2024-09-08 · via 少数派

前言

这篇文章与标题相关的是前两节,后边是以如下界面为目标的一个超简洁小教程,请按需选择阅读📖。

为什么要学前端

TL;DR 不要问为什么学这玩意,问就是闲的。

作为一名嵌入式开发,前端技术似乎是八竿子打不着的东西。学这玩意儿,好像是费力不讨好?其实,还是有不少好处的:

解决需求:之前用 PySide6 开发了一个使用大模型辅助看文档与视频的开源、免费工具「Verbiverse(感兴趣就快来看看✨)」。虽然 QT 是跨平台的,但想在手机或 iPad 上使用却不太方便,这时候前端技术的优势就体现出来了。能跑浏览器的设备上都可以使用,而移植 Verbiverse-web 就是我的主要目的。

工作相关:如今的嵌入式产品为了追求用户体验,往往会搭配本地页面和 web 服务。这就免不了和前端开发的同事打交道。为了不被忽悠得加班加到怀疑人生,掌握点前端技术可太有用了🐶。

使用范围:前端技术三件套带来了无数的库和工具,学会了前端,你会感觉像是打通了任督二脉,世界突然开阔了。最不济,你也能通过 F12 看懂网页上一些神秘的信息😄。

为什么说是失败之旅

TL;DR 学习新技术永远是个怪圈,总想快速上手,但是总会遇到问题倒逼你去补课基础,就像你逃课幽魂但是最终总有 BOSS 会让你主动回去打的💀。

这一切都得从我想做 Verbiverse-web 版本说起,结果从零开始学前端,直接撞上了以下几个大坑:

  1. 教程海量:一搜教程,铺天盖地。硬着头皮啃,简直是对耐心的极限挑战。而且很多东西都超出了我的知识体系,根本搞不懂学这些有什么用;
  2. 工具泛滥:前端的工具、框架多得像是逛超市,而我又有点强迫症,总担心选了个不流行的东西,白白学了一通。于是,我花了大量时间在各种调研和纠结上,浪费了大量时间;
  3. 好教程难找:作为抠门的程序员,我实在找不到一个简洁、免费、基于简单的示例项目的教程来学习;

最终,我结合大模型和一些开源项目模板,硬是靠着死磕和生搬硬套勉强上手改了点代码。费了九牛二虎之力,终于能在浏览器里预览 PDF 了,可当我拿 iPad 操作时,发现触摸体验烂到爆。以为攻克了难关,结果才发现,这只是对手在热身😅。

是不是看上去挺像回事儿,但实际在触摸屏上难用得你怀疑人生😢,这打击简直是致命的,直接让我放弃了:

肯定你已经在心里说,都失败了那你还在这啰唆一大顿🤨

因为怎么说也是花了好几天学习,在这里整理了下,希望能帮助到有需要的人。

来让我看看你都记了啥

能看到这一节,说明你骨骼惊奇,必是学这门手艺的好苗子 👌。

这个教程大量依赖大模型辅助,尝试前确保有可用的大模型。当前免费的代码辅助工具有很多,请自行搜索。

目标

我不想只是罗列看到的那些文章链接,同时我也梳理下整体的知识体系,打算用如下这个页面为目标,把需要的知识点与对应的文档整理出来,因此接下来文章的特点:

  1. 超级简洁: 不包括任何深入的知识点介绍,会提出一步步的目标,因此你要懂得搜索,有自己解决问题的耐心。
  2. 有示例源码:我提供了一份源代码,每个提交都做了标注,可以对应参考。

示例源码使用

源码地址:HATTER-LONG/HowToLearn-WebDev (github.com)

如下图,每个 Commit 描述前都有一个中括号标签,可以回退到对应的版本,比对两个提交之间的差异就清楚改了那些代码,有相同标签的看最后一个就行,后续文章我会贴上对应的步骤标签。
 

根基

最基础的要了解前端开发三件套:HTML、CSS 与 JS ,这里我最开始看的教程是 web 入门这部分:web 入门 - 学习 Web 开发 | MDN (mozilla.org)

  • HTML(超文本标记语言):构建网页的骨架,定义网页的结构和内容。它用标签来标识文本、图像、链接等元素,决定了网页上有什么。
  • CSS(层叠样式表):为网页添加样式,决定了网页的外观和布局。它通过选择器应用样式规则,如颜色、字体、排版等,使页面变得美观和可视化。
  • JavaScript:赋予网页交互功能。它可以动态更新内容、响应用户输入、操控多媒体和动画,使网页更具互动性和活力。

DOM(Document Object Model,文档对象模型)是网页的编程接口,它把整个网页(HTML 或 XML 文档)表示为一个结构化的树形模型。通过 DOM,程序员可以使用 JavaScript 动态地访问、修改网页的内容、结构和样式。

npm(Node Package Manager):是 Node.js 的包管理工具,后续有很多工具需要依赖 npm 安装。Downloading and installing Node.js and npm | npm Docs (npmjs.com)

  • npx:npx 是 npm 的一个工具,用于直接运行 npm 包中的可执行文件,而无需全局安装它们。用于临时执行 npm 包中的命令,方便无需安装就可以运行某些工具。

项目创建 「Commit 1 | 44ad840」

tinyplex/vite-tinybase: A vanilla TinyBase Vite template (github.com) 是一个基于 vite 构建的最小项目,包含了基本的 html、css、js 文件:npx tiged tinyplex/vite-tinybase my-tinybase-app

目录结构如下:

可以使用 vite 直接预览最小模板:vite-tinybase instructions

问问大模型 「Commit 2 | 45f0221」

没有思路写接下来的代码,那就先画张图问问大模型:

最终将代码复制到我们的项目中,简单修改下导入 js 与 css 的路径信息,最终效果还是不错的:

了解源码 「Commit 3 | 0a84c90」

接下来我们准备发车了,但是首先趁着现在代码很少,先了解下基本的代码都是什么含意,遇到不清楚的去查相关资料或者询问大模型:

修改侧边栏「Commit 4 | 60fb3b4」

大模型提供的代码细节还是缺失比较严重,可以尝试解决如下问题:

  • 展开与收缩显示问题:展开时显示 LOGO + APP 名称,收缩时只显示 LOGO。
  • 侧边栏图标显示修复:侧边栏收缩时,确保图标完整显示。
  • 按钮状态问题:修复控制侧边栏收缩与展开的按钮,使其在状态切换时正确更新。
  • 鼠标悬停效果:调整侧边栏的悬停效果,变为背景色变化而不是变为手型指针。

那么,当没有相关知识时如何去改代码呢?这时就要多多询问大模型的帮助了。大模型已经改变了我们学习技术的方式,现在你可以先主动尝试实现各种功能,再深入理解代码细节。

例如侧边栏我想要展开时显示 LOGO + APP NAME,收缩时显示 LOGO,就可以在同一会话内(提供代码的会话中)或者使用 copilot 这种工具询问如何修改,并让大模型解释这么修改的目的:
 

实现页面切换「Commit 5 | 1abdcf3」

当前所有页面代码都是在 index.html 中,这很不利于代码维护,我们可以将 Home、Page1、Page2 的代码拆分开,侧边栏点击对应按钮时自动切换到对应页面。

这里有个细节是使用 fetch 方法加载 html 是不会自动执行 <script> 标签的脚本,需要主动执行才可以。

最后,实现的界面如下:

VUE 框架

VUE 是当前流行的前端开发框架,它简化了 js 与 HTML 数据交互的过程,可以更方便我们开发复杂的项目,推荐先阅读下如下两个简短教程,对 VUE 有个初步印象:

  1. 快速上手 | Vue.js (vuejs.org)
  2. 教程 | Vue.js (vuejs.org)

VUE 的源码文件已 .vue 结尾,可以将 html css js 写到同一个文件中;

  1. html 相关代码使用:<template> 标签包裹;
  2. css 相关代码使用:<style scoped> 标签包裹,作用是将样式限定在当前组件内,使其只作用于当前组件的元素,而不会影响到其他组件的样式。
  3. js 相关代码使用:<script setup> 标签包裹,这个 setup 是可选的,简单理解就是当创建这个页面组件时的初始化函数,代码会被自动加载执行,不必手动去调用,这里定义的变量、函数等均可以在 template 中使用。
    • 那就有好奇的同学要问,setup 里是初始化这时要想操作 DOM 怎么办,那就需要使用 vue 的 onMounted{} 同理也有 onBeforeUnmountonUnMounted,其被调用的时机就是 DOM 挂载完成后与卸载前:

<script setup>
import { ref, onMounted } from 'vue';

const count = ref(0);

onMounted(() => {
  console.log('Component is mounted');
  // 可以在这里执行一些需要在组件挂载后进行的操作
});

创建 VUE 项目 「VUE 1 | b18d7e1」

创建一个 VUE 框架项目也很简单:npm create vue@latest,按照提示进行选择即可,如果不清楚是什么,说明我们还用不上,那就选否,不要纠结 😄:

同样使用 npm i 安装依赖后,npm run dev 可以使用 vite 使用开发环境。

项目结构如下,可以按照如下顺序阅读代码:

基于 vue 实现目标功能「VUE 2 | 1087978」

主要将之前使用三件套写的代码移植到 App.vue 中,使我们界面可以正常显示。页面切换先用空函数替代。

实现页面切换「VUE 3 | 2e033c8」

如果认真读了代码和教程会发现 VUE 框架想要嵌入其他 vue 组件是非常方便的,直接把标签导入,加到 html 里就行了,这节就使用 vue 组件的方式实现不同页面切换,最终可以使页面正常切换。

使用 VUE 数据绑定实现侧边栏伸缩「VUE 4 | b0b825a」

VUE 框架使得 HTML 与 JS 之间的数据交付变得更加方便,不再需要我们使用 DOM 获取、更新,而直接像是操作变量一样即可,HTML 会自动根据数据的变化进行渲染,这节使用数据绑定的方法优化侧边栏伸缩控制按钮功能。

使用 VUE Router 路由切换界面 「VUE 5 | fa598f7」

Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用(SPA)。它可以让你在不同的 URL 路径下显示不同的页面组件,从而实现页面导航。

路由组件非常灵活,还可以设置路由守卫检查是否登录状态以及权限控制等等,本节使用路由组件来实现页面切换。

路由组件安装:npm install vue-router@4

入门 | Vue Router (vuejs.org)

至此虽说我们界面没有太大变化,但是实际代码实现层面已经完全改变了,接下来我们实现些更有意思的功能。

使用 Pinia 保存数据「VUE 6 | a4df4a9」

简介 | Pinia (vuejs.org)

Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。

不知道注意到没有,当你在一个页面输入完数据,切换页面后再回来页面已经被刷新数据消失了。这节使用 Pinia 尝试保存每个页面的数据,切换页面后不会丢失。

定义 Store | Pinia (vuejs.org)

使用 Element-Plus 重构侧边栏「VUE 7 | 3198956」

Element-Plus 是基于 Vue 3,面向设计师和开发者的组件库,包含了很多设计好的组件,可以像积木一样使我们搭建一个 像模像样 的界面。

安装与导入使用:

安装 | Element Plus (element-plus.org)

快速开始 | Element Plus (element-plus.org)

查找模块与示例代码:

Overview 组件总览 | Element Plus (element-plus.org)

我们在 Menu 中找找有没有可以直接复用的控件,这个折叠面板就挺符合我们使用:

本节我们将侧边栏代码抽出为单独组件,并使用 element-plus 重新实现。

最后我们再添加些 LOGO 图片,完成我们的终极目标。

接下来还要做什么

  1. 学习前端工程化细节了解如何打包发布:了解前端工程化 | Vue3 入门指南与实战案例 (chengpeiquan.com)
  2. 学习后端程序开发 ,例如 FastAPI,配合前端页面打包成完整的服务。学习 - FastAPI (tiangolo.com)
  3. 学习基于前端技术的桌面应用开发,例如 Tauri、Electron 等。快速开始 | Tauri Apps