前端十年:从0到资深开发者的10堂必修课【第1篇】

前端十年:从0到资深开发者的10堂必修课【第1篇】

前端十年:从0到资深开发者的10堂必修课

第1篇:基石篇——HTML/CSS/JavaScript 核心与开发环境

万丈高楼平地起,任何宏伟的前端工程都离不开最基础的三大核心技术:HTML、CSS 和 JavaScript。本篇将带你夯实这些基石,同时搭建高效的开发环境,为后续的进阶之路做好充分准备。

一、HTML5 语义化与文档结构

HTML 是网页的骨架,而 HTML5 带来的语义化标签让骨架更加清晰、可读。良好的语义化不仅有助于搜索引擎理解页面内容(SEO),还能提升代码的可维护性和无障碍访问性(a11y)。

1. 常用语义标签与 SEO 基础

在 HTML5 之前,我们常用 <div> 来划分页面区域,但 <div> 本身没有任何语义。HTML5 引入了一系列语义标签,让页面结构一目了然。

标签含义典型使用场景
<header>页眉页面顶部、文章头部、logo、导航
<nav>导航链接主导航菜单、侧边栏导航
<main>主要内容区域每个页面唯一,包含核心内容
<article>独立的自包含内容博客文章、新闻条目、评论
<section>主题性内容分组文章的章节、页面的区块
<aside>侧边栏或补充内容广告、相关链接、作者简介
<footer>页脚版权信息、联系方式、站点地图

示例代码:一个典型的博客文章页面结构

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>语义化 HTML 示例</title></head><body><header><h1>我的技术博客</h1><nav><ul><li><ahref="/">首页</a></li><li><ahref="/about">关于</a></li><li><ahref="/contact">联系</a></li></ul></nav></header><main><article><header><h2>理解 HTML5 语义化</h2><p>发布于 <timedatetime="2025-03-17">2025年3月17日</time></p></header><section><h3>为什么需要语义化?</h3><p>语义化标签让机器(如搜索引擎、屏幕阅读器)更好地理解内容结构...</p></section><section><h3>常用标签实践</h3><p>在本文中,我们介绍了 header, nav, main 等标签...</p></section><footer><p>标签:<ahref="/tags/html">HTML</a>, <ahref="/tags/semantic">语义化</a></p></footer></article><aside><h3>关于作者</h3><p>前端开发者,热爱分享技术。</p></aside></main><footer><p>&copy; 2025 我的技术博客. 保留所有权利。</p></footer></body></html>

SEO 小提示

  • 使用 <h1><h6> 构建清晰的标题层级,搜索引擎会抓取这些作为页面重点。
  • <meta name="description"> 提供页面摘要,影响搜索结果展示。
  • 语义化标签本身并不会直接提升排名,但它们有助于搜索引擎更准确地提取内容,间接有利于 SEO。

2. 可访问性(ARIA)初探

可访问性(Accessibility,缩写 a11y)确保所有用户,包括残障人士(如视障、听障),都能正常使用网页。HTML5 语义标签已经提供了天然的 accessibility 支持,但有时我们需要借助 ARIA(Accessible Rich Internet Applications)来增强复杂组件的可访问性。

ARIA 的核心属性

  • role:定义元素的角色,如 role="navigation"role="search"
  • aria-label:为元素提供文本标签,用于屏幕阅读器。
  • aria-labelledby:引用其他元素的 ID 作为标签。
  • aria-hidden:隐藏屏幕阅读器不需要朗读的元素。

示例:一个自定义的可访问按钮

<buttonaria-label="关闭"onclick="closeDialog()">X</button>

屏幕阅读器会朗读“关闭”而不是冰冷的“X”。在实际开发中,我们应优先使用原生 HTML 元素(如 <button><a>),因为它们自带可访问性。只有当必须模拟非标准组件(如自定义下拉框)时,才需引入 ARIA。


二、CSS3 核心布局与样式

CSS 负责网页的视觉呈现。掌握选择器权重、盒模型、现代布局(Flex/Grid)以及响应式设计,是写出优雅样式的基础。

1. 选择器权重与盒模型

选择器权重:当多个规则同时作用于同一元素时,权重高的规则生效。权重计算规则(按优先级从高到低):

  1. !important(最高,应谨慎使用)
  2. 内联样式(如 style="..."
  3. ID 选择器(如 #header
  4. 类选择器、属性选择器、伪类(如 .nav[type="text"]:hover
  5. 元素选择器、伪元素(如 div::before
  6. 通配符、组合符(如 *+>

示例

/* 权重 (0,1,0) */.nav{color: blue;}/* 权重 (0,0,1) */div{color: red;}/* 内联样式 权重 (1,0,0) */ <div style="color: green;">文本</div> <!-- 实际显示绿色 --> 

盒模型:每个元素都可以看作一个盒子,由内容(content)、内边距(padding)、边框(border)、外边距(margin)组成。标准盒模型中,width/height 只包含内容;而怪异盒模型(IE 盒模型)中,width/height 包含 content、padding、border。通过 box-sizing 切换:

/* 标准盒模型 */.box{box-sizing: content-box;width: 200px;padding: 20px;/* 实际占用宽度 200 + 20*2 = 240px */}/* 怪异盒模型(推荐) */.box{box-sizing: border-box;width: 200px;padding: 20px;/* 实际占用宽度仍为 200px(内容区被压缩为 160px) */}

2. Flex 与 Grid 实战对比

Flex 和 Grid 是目前最主流的布局方式,它们解决了传统 float 布局的诸多痛点。

特性FlexboxGrid
适用场景一维布局(行或列)二维布局(同时控制行和列)
主要属性display: flexdisplay: grid
容器属性flex-direction, justify-content, align-items, flex-wrapgrid-template-rows, grid-template-columns, gap, justify-items
项目属性flex-grow, flex-shrink, align-selfgrid-row, grid-column, justify-self

Flex 示例:实现水平垂直居中

.container{display: flex;justify-content: center;align-items: center;height: 300px;border: 1px solid #ccc;}.item{width: 100px;height: 100px;background: deepskyblue;}

Grid 示例:实现经典的圣杯布局(header, footer, 三列)

.grid-container{display: grid;grid-template-rows: auto 1fr auto;/* 三行:头部自适应,中间占满剩余,底部自适应 */grid-template-columns: 200px 1fr 200px;/* 三列:左右固定200px,中间自适应 */min-height: 100vh;}.header{grid-column: 1 / -1;/* 从第一列到最后一列,即横跨整个网格 */background: #f0f0f0;}.footer{grid-column: 1 / -1;background: #f0f0f0;}.left{background: #ccc;}.main{background: #fff;}.right{background: #ccc;}
<divclass="grid-container"><headerclass="header">Header</header><asideclass="left">Left Sidebar</aside><mainclass="main">Main Content</main><asideclass="right">Right Sidebar</aside><footerclass="footer">Footer</footer></div>

3. 响应式设计:媒体查询、rem/vw/vh

响应式设计的目标是让网页在不同设备上都能良好展示。

  • 相对单位
    • rem:相对于根元素(<html>)的字体大小。默认 1rem = 16px,可通过设置 html { font-size: 62.5%; }1rem 变为 10px,方便计算。
    • vw/vh:视口宽高的 1%。100vw 即视口宽度,100vh 为视口高度。常用于全屏元素。

媒体查询:根据屏幕尺寸、分辨率等条件应用不同样式。

/* 当视口宽度小于等于 768px 时生效 */@media(max-width: 768px){.sidebar{display: none;}}

示例:移动优先的响应式卡片

.card{width: 90%;margin: 0 auto;padding: 1rem;}@media(min-width: 600px){.card{width: 50%;}}@media(min-width: 1024px){.card{width: 30%;}}

4. CSS 变量与现代特性(calc, clamp)

CSS 变量(自定义属性)让我们可以在样式表中复用值,并实现动态主题。

:root{--primary-color: #3498db;--spacing: 16px;}.button{background-color:var(--primary-color);padding:var(--spacing)calc(var(--spacing) * 2);}

calc() 函数允许在属性值中进行计算,支持混合单位。

.element{width:calc(100% - 40px);height:calc(100vh - 80px);}

clamp() 函数返回一个区间内的值,非常适合流体排版:font-size: clamp(1rem, 5vw, 3rem); 表示最小 1rem,首选 5vw,最大 3rem


三、JavaScript 快速入门

JavaScript 赋予网页交互能力。我们不需要在一篇文章中穷尽所有细节,但必须掌握最核心的语法与概念。

1. 变量提升、数据类型、运算符与流程控制

变量声明varletconst 的区别。

  • var:函数作用域,存在变量提升(hoisting),可重复声明。
  • let:块作用域,无提升(暂时性死区),不可重复声明。
  • const:块作用域,声明常量(引用类型可修改属性,不可重新赋值)。

变量提升示例

console.log(a);// undefined(而不是报错)var a =5; console.log(b);// ReferenceError: Cannot access 'b' before initializationlet b =10;

数据类型:原始类型(number, string, boolean, null, undefined, symbol, bigint)和引用类型(object, array, function)。

运算符:算术、比较、逻辑、赋值等。特别注意 ===== 的区别:== 会进行类型转换,=== 严格相等。

流程控制if-elseswitchforwhile 等。

const score =85;if(score >=90){ console.log('优秀');}elseif(score >=60){ console.log('及格');}else{ console.log('不及格');}// for 循环for(let i =0; i <5; i++){ console.log(i);}

2. 函数声明与表达式、对象基础

函数定义方式

  • 函数声明(有提升):function sum(a, b) { return a + b; }
  • 函数表达式(无提升):const sum = function(a, b) { return a + b; };
  • 箭头函数:const sum = (a, b) => a + b;

对象基础

  • 对象字面量:const person = { name: 'Alice', age: 25 };
  • 访问属性:person.nameperson['name']
  • 添加/修改属性:person.email = '[email protected]';
  • 方法:const person = { greet() { console.log('Hi'); } };

示例:结合函数与对象

functioncreateUser(name, age){return{ name, age,isAdult(){returnthis.age >=18;}};}const user =createUser('Bob',20); console.log(user.isAdult());// true

四、开发环境搭建

工欲善其事,必先利其器。一个高效、舒适的开发环境能极大提升编码体验。

1. VS Code 插件推荐与 Live Server

VS Code 是目前最流行的前端编辑器,安装以下插件让开发事半功倍:

  • Live Server:一键启动本地开发服务器,支持热重载。
  • Prettier:代码格式化工具。
  • ESLint:JavaScript 代码检查。
  • Auto Rename Tag:自动重命名配对的 HTML/XML 标签。
  • CSS Peek:快速查看 CSS 定义。
  • Path Intellisense:路径自动补全。

Live Server 使用

  1. 在 VS Code 扩展市场搜索并安装 Live Server。
  2. 打开一个 HTML 文件,右键点击“Open with Live Server”,或点击状态栏的“Go Live”按钮。
  3. 浏览器自动打开页面,修改代码后保存,页面自动刷新。

2. Chrome DevTools 基础

Chrome 开发者工具是前端调试的利器,常用面板:

  • Elements:查看和编辑 DOM 树与 CSS 样式。可以实时修改样式观察效果。
  • Console:运行 JavaScript 代码,查看日志、错误信息。
  • Sources:断点调试 JavaScript 代码。
  • Network:监控网络请求,查看请求头、响应、时间线。
  • Performance:分析页面性能,如 FPS、CPU 占用。
  • Application:查看存储(LocalStorage、SessionStorage、Cookie)、缓存等。

示例:使用 Console 调试

let count =0;functionincrement(){ count++; console.log('当前计数:', count);// 在 Console 中查看输出}increment();

断点调试:在 Sources 面板找到 JS 文件,点击行号添加断点,刷新页面后代码会在断点处暂停,可以单步执行、查看变量。


总结

本篇我们系统回顾了前端三大基石:

  • HTML5:语义化标签让页面结构更清晰,结合 ARIA 提升可访问性。
  • CSS3:掌握选择器权重、盒模型、Flex/Grid 布局、响应式设计以及现代 CSS 特性,能应对绝大多数样式需求。
  • JavaScript:理解了变量提升、数据类型、函数、对象等核心语法,为后续深入打下基础。
  • 开发环境:配置好 VS Code 插件并熟练使用 Chrome DevTools,提升开发效率。

至此,你已经具备了前端开发的基本功。下一篇我们将深入 JavaScript 语言精髓,探讨作用域、闭包、原型链、异步编程等进阶概念,敬请期待!


思考题

  1. 为什么推荐使用 border-box 盒模型?
  2. 在什么场景下应该使用 Grid 而不是 Flex?
  3. 什么是“暂时性死区”?它如何影响 letconst 的使用?

欢迎在评论区留言讨论,我们一起进步!

Read more

Ψ0——人形全身VLA:先用800h人类自视角视频数据和30h的真实机器人交互数据预训练VLM,再后训练MM-DiT,最后用AMO做下肢RL跟踪

Ψ0——人形全身VLA:先用800h人类自视角视频数据和30h的真实机器人交互数据预训练VLM,再后训练MM-DiT,最后用AMO做下肢RL跟踪

前言 今26年3.11,一投资人微信上跟我说,“ 周老师好!最近在搞什么模型?今天USC大学发布的这个模型,请您评估看看?” 我当时回复她道,“这个我这个星期,抽时间解读一下,到时候再说一下我的看法哦” 对于本文要解读的Ψ0 1. 首先,作者在大规模第一视角人类视频(约800 小时的人类视频数据),和30 小时的真实世界机器人数据上对一个 VLM 主干进行自回归预训练,以获得具有良好泛化能力的视觉-动作表征 2. 随后,再在高质量的人形机器人数据上后训练一个基于流(flow-based)的动作专家,用于学习精确的机器人关节控制 个人认为,该工作在理念创新上 确实 挺不错的 1. 以规模不大的“人类第一视角数据和真实机器人交互数据”预训练vlm 再后训练、微调 避免一味 堆数据,毕竟 数据 很难是个头 2. 全身摇操系统 看起来 也组合的不错 更重要的是,虽然目前市面上loco-mani方向的工作已经不少了

树莓派4B连接大疆M300无人机全网最细教程

树莓派4B连接大疆M300无人机全网最细教程

注:本教程适用于树莓派4B连接大疆M300_RTK无人机,若是其余型号可以参考本文思路,但是具体细节请前往官方教程或大疆开发者论坛查找,第三方开发板连接大疆无人机,不同型号之间会有很多细节差异,请确认自己的型号然后针对性查找 官方教程网址:Payload SDK (官方的是树莓派4B连接M350!并非M300,实现细节完全不同,请慎重查看) 大疆开发者论坛网址:Payload SDK – 大疆创新SDK技术支持论坛 (优点:几乎能找到所有问题的解决方法;缺点:太零散了,找解决方法如同大海捞针) 1 硬件准备 1.1 硬件选型 * 无人机型号:M300_RTKM300顶部一共有三个接口,其中OSDK端口和云台口(Payload SDK Port)可以用来运行PSDK程序,TypeC调参口,则是用来与电脑连接,打开DJI Assistant2软件后,可以升级无人机固件,导出日志,使用模拟器,绑定负载等。 1.FPV摄像头13.左视和右视红外感知系统25.调参接口2.前视红外感知系统14.

【论文笔记】知识蒸馏的全面综述

【论文笔记】知识蒸馏的全面综述

目录 写在前面 一、知识从哪里来? 二、知识蒸馏的传授方案 三、知识蒸馏的核心算法 四、知识蒸馏的应用领域 写在前面         今天看一篇关于知识蒸馏(Knowledge Distillation, KD)的全面综述,知识蒸馏可以想象成一位“学霸”老师把自己的解题思路和秘诀传授给“学弟学妹”学生的过程,目的是让小巧高效的“学生”模型也能拥有接近庞大“老师”模型的强大能力。这在人工智能领域非常重要,能让我们在手机、摄像头等计算资源有限的设备上也能运行强大的AI模型。         这篇文章系统性地梳理了知识蒸馏这个领域,就像一本厚厚的“武功秘籍大全”,详细讲解了各种不同的“传授功力”的方法。下面我梳理一下最重要的内容。 论文地址:https://arxiv.org/pdf/2503.12067 一、知识从哪里来?         这就像是问,老师要教给学生什么?文章总结了三大类“知识宝库”: 1.

Mac平台Neo4j图数据库:从安装到核心操作详解

Mac平台Neo4j图数据库:从安装到核心操作详解 一、环境准备 * macOS 10.14+ * Java 11+(推荐AdoptOpenJDK) 安装Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 系统要求 brew install adoptopenjdk11 二、Neo4j安装步骤 方式1:Homebrew安装(推荐) brew install neo4j brew services start neo4j # 启动服务 方式2:手动安装 1. 下载社区版: https://neo4j.