Web安全基础相关知识2.0(前端三剑客)

HTML

定义

HTML(超文本标记语言)是用来描述网页结构的标记语言。

- 它用标签(带角号标签 例如<body>)来定义页面的各个部分,比如标题、段落、图片、链接等。
- HTML 本身不负责样式和交互,样式由 CSS 负责,交互由 JavaScript 负责。

基本结构

一个标准的 HTML5 页面结构如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>页面标题</title>
</head>
<body>
    <!-- 页面可见内容 -->
    <h1>这是一级标题</h1>
    <p>这是一个段落。</p >
</body>
</html>

CSS

定义

CSS(层叠样式表)是用来描述 HTML 或 XML 文档样式的语言。

它控制网页的外观:颜色、字体、布局、间距、动画等。
CSS 与 HTML 分工明确:HTML 负责结构,CSS 负责样式。

基本语法

CSS 规则由选择器和声明块组成:

选择器 {
    属性名: 属性值;
    属性名: 属性值;
}

示例:

p {
    color: red;
    font-size: 16px;
}

- 选择器 
"p":选中所有 
"<p>" 标签。
- 声明块:
"{}" 内的样式规则。
- 属性名 
"color":要设置的样式属性(文字颜色)。
- 属性值 
"red":属性的具体值。

CSS 的三种引入方式

3.1 内联样式

直接在 HTML 标签中用 
"style" 属性定义样式:

<p>这是蓝色文字</p >

- 优点:优先级最高,适合临时覆盖样式。
- 缺点:难以维护,代码冗余。

3.2 内部样式表

在 
"<head>" 中用 
"<style>" 标签定义样式:

<head>
    <style>
        p {
            color: green;
            font-size: 16px;
        }
    </style>
</head>

- 优点:适合单个页面的样式管理。
- 缺点:多个页面无法共享样式。

3.3 外部样式表

将 CSS 代码保存在独立的 
".css" 文件中,通过 
"<link>" 标签引入:

<head>
    <link rel="stylesheet" href="styles.css">
</head>

styles.css 文件内容:

p {
    color: purple;
    font-size: 18px;
}

- 优点:样式可复用,便于维护和缓存。
- 推荐使用:大型项目必备。

CSS 选择器

选择器用于选中需要应用样式的 HTML 元素。

4.1 基础选择器

- 元素选择器:
"p { ... }"(选中所有 
"<p>" 标签)。
- 类选择器:
".intro { ... }"(选中所有 
"class="intro"" 的元素)。
- ID 选择器:
"#header { ... }"(选中 
"id="header"" 的元素)。
- 通配符选择器:
"* { ... }"(选中所有元素)。

4.2 组合选择器

- 后代选择器:
"div p { ... }"(选中 
"<div>" 内的所有 
"<p>")。
- 子元素选择器:
"div > p { ... }"(选中 
"<div>" 的直接子元素 
"<p>")。
- 相邻兄弟选择器:
"h1 + p { ... }"(选中紧跟在 
"<h1>" 后的第一个 
"<p>")。
- 通用兄弟选择器:
"h1 ~ p { ... }"(选中 
"<h1>" 后的所有同级 
"<p>")。

4.3 伪类与伪元素

- 伪类:
":hover"(鼠标悬停)、
":active"(激活状态)、
":first-child"(第一个子元素)。
- 伪元素:
"::before"(在元素前插入内容)、
"::after"(在元素后插入内容)。

CSS 盒模型

每个 HTML 元素都可以看作一个矩形盒子,由四部分组成:

1. Content(内容):元素的实际内容(文字、图片等)。
2. Padding(内边距):内容与边框之间的空间。
3. Border(边框):围绕内容和内边距的边界线。
4. Margin(外边距):元素与其他元素之间的空间。

示例:

box {
    width: 200px;       /* 内容宽度 */
    height: 100px;      /* 内容高度 */
    padding: 20px;      /* 内边距 */
    border: 5px solid black; /* 边框 */
    margin: 30px;       /* 外边距 */
}

总宽度 = 
"width + padding-left + padding-right + border-left + border-right + margin-left + margin-right"。

CSS 布局

CSS 提供了多种布局方式,常见的有:

5.1 普通流

默认布局方式,元素按照 HTML 顺序从上到下、从左到右排列。

5.2 Flexbox(弹性布局)

适用于一维布局(行或列):

.container {
    display: flex;
    justify-content: center; /* 水平居中 */
    align-items: center;     /* 垂直居中 */
}

- 优点:简单易用,适合响应式设计。

5.3 Grid(网格布局)

适用于二维布局(行和列):

.container {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr; /* 三列等宽 */
    gap: 10px; /* 网格间距 */
}

- 优点:强大的二维布局能力。

5.4 浮动(Float)

早期用于图文混排,现在逐渐被 Flexbox 和 Grid 取代:

img {
    float: left; /* 图片左浮动 */
    margin-right: 10px;
}

5.5 定位(Position)

控制元素的位置:

"static":默认值,正常流。
"relative":相对定位,相对于自身原位置偏移。
"absolute":绝对定位,相对于最近的定位祖先元素。
 "fixed":固定定位,相对于浏览器窗口。
"sticky":粘性定位,滚动时在阈值范围内固定。

CSS 响应式设计

让网页在不同设备上自适应显示:

6.1 媒体查询

根据屏幕尺寸应用不同样式:

/* 默认样式(手机) */
.container {
    width: 100%;
}

/* 平板及以上 */
@media (min-width: 768px) {
    .container {
        width: 750px;
    }
}

/* 桌面及以上 */
@media (min-width: 1200px) {
    .container {
        width: 1170px;
    }
}

6.2 相对单位


"%":相对于父元素尺寸。
"em":相对于当前元素字体大小。 
"rem":相对于根元素(
"<html>")字体大小。
"vw/vh":相对于视口宽度/高度的 1%。

CSS 预处理器(Sass/SCSS)

CSS 预处理器扩展了 CSS 的功能,如变量、嵌套、混合等:

// 变量
$primary-color: #007BFF;

// 嵌套
.nav {
    ul {
        margin: 0;
        padding: 0;
        list-style: none;
        li {
            display: inline-block;
            a {
                color: $primary-color;
                &:hover {
                    color: darken($primary-color, 10%);
                }
            }
        }
    }
}

编译后会生成标准 CSS。

CSS 动画与过渡

1. 过渡

平滑改变属性值:

.button {
    transition: background-color 0.3s ease;
}
.button:hover {
    background-color: #0056b3;
}

2. 动画

定义关键帧动画:

@keyframes slidein {
    from {
        transform: translateX(-100%);
    }
    to {
        transform: translateX(0);
    }
}

.element {
    animation: slidein 0.5s ease-out;
}

CSS 最佳实践

1. 语义化 HTML:用合适的标签表达内容结构。
2. 分离关注点:HTML 负责结构,CSS 负责样式,JS 负责交互。
3. 命名规范:使用 BEM(Block__Element--Modifier)等方法提高可读性。
4. 性能优化:减少重排(reflow)和重绘(repaint),压缩 CSS 文件

JavaScript

定义

JavaScript(简称 JS) 是一种脚本语言,主要用于为网页添加交互功能。

- 与 HTML(结构)、CSS(样式)并列,是前端开发的三大核心技术之一。
- 现在也可用于后端开发(Node.js)、移动端开发(React Native)、桌面应用(Electron)等。

JavaScript 的三种引入方式

2.1 内联脚本

在 HTML 标签中直接使用 
"onclick" 等事件属性:

<button onclick="alert('Hello')">点击</button>

- 缺点:难以维护,不推荐大量使用。

2.2 内部脚本

在 
"<script>" 标签中编写 JS 代码:

<script>
  console.log('页面加载完成');
</script>

2.3 外部脚本

将 JS 代码保存在 
".js" 文件中,通过 
"<script src="app.js"></script>" 引入:

<script src="app.js"></script>

- 优点:代码分离,便于维护和缓存。

JavaScript 基础语法

3.1 变量与常量


"let":可变变量(块级作用域)。

"const":不可变常量(块级作用域)。

"var"(旧版,不推荐):函数作用域,容易引发问题。

let name = 'Alice';
const age = 25;

3.2 数据类型

- 原始类型:
"string"、
"number"、
"boolean"、
"null"、
"undefined"、
"symbol"(ES6)、
"bigint"(ES2020)。
- 引用类型:
"object"(包括数组、函数等)。

let str = "Hello";
let num = 42;
let isDone = true;
let obj = { key: "value" };
let arr = [1, 2, 3];

3.3 运算符

- 算术:"+"、"-"、"*"、"/"、"%"、"**"(幂)
- 比较:"=="(宽松相等)、"==="(严格相等)、"!="、"!=="、">"、"<" 
- 逻辑:"&&"(与)、"||"(或)、"!"(非)。

流程控制

4.1 条件语句

if (age >= 18) {
  console.log("成年人");
} else {
  console.log("未成年人");
}

4.2 循环语句

// for 循环
for (let i = 0; i < 5; i++) {
  console.log(i);
}

// while 循环
let j = 0;
while (j < 5) {
  console.log(j);
  j++;
}

5. 函数

函数是可重复使用的代码块。

5.1 函数声明

function greet(name) {
  return "Hello, " + name;
}
console.log(greet("Bob")); // Hello, Bob

5.2 箭头函数

const add = (a, b) => a + b;
console.log(add(2, 3)); // 5

6. 对象与数组

6.1 对象

let person = {
  name: "Alice",
  age: 25,
  sayHi: function() {
    console.log("Hi, I'm " + this.name);
  }
};
person.sayHi(); // Hi, I'm Alice

6.2 数组

let fruits = ["apple", "banana", "orange"];
fruits.push("grape"); // 添加元素
console.log(fruits[1]); // banana

7. DOM 操作(前端核心)

DOM(Document Object Model)是 HTML 文档的对象表示,JS 可以通过 DOM API 操作页面元素。

7.1 选择元素

let title = document.getElementById("title");
let items = document.querySelectorAll(".item");

7.2 修改内容

title.textContent = "新标题";
title.style.color = "red";

7.3 事件监听

let btn = document.querySelector("button");
btn.addEventListener("click", function() {
  alert("按钮被点击");
});

前端开发常见代码

1. HTML 基础结构

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>页面标题</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1>网站标题</h1>
    </header>
    <main>
        <p>这是一个段落。</p >
    </main>
    <footer>
        <p>版权 © 2026</p >
    </footer>
    <script src="app.js"></script>
</body>
</html>

2. CSS 常用样式

/* 重置默认边距 */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    background-color: #f4f4f4;
}

.container {
    width: 80%;
    margin: 0 auto;
    padding: 20px;
}

.btn {
    display: inline-block;
    padding: 10px 20px;
    background: #007BFF;
    color: white;
    text-decoration: none;
    border-radius: 5px;
    transition: background 0.3s;
}

.btn:hover {
    background: #0056b3;
}

3. JavaScript 基础

// 获取元素
const btn = document.querySelector('.btn');
const output = document.getElementById('output');

// 事件监听
btn.addEventListener('click', () => {
    output.textContent = '按钮被点击了!';
});

// 定时器
setTimeout(() => {
    console.log('3秒后执行');
}, 3000);

// 数组操作
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

Read more

RK3588+AI算力卡替代英伟达jetson方案,大算力,支持FPGA自定义扩展

RK3588+AI算力卡替代英伟达jetson方案,大算力,支持FPGA自定义扩展

RK3588+AI算力卡替代英伟达Jetson方案的技术对比与实施路径 1. ‌硬件性能与算力配置‌ * ‌RK3588核心优势‌:采用8nm工艺,集成6TOPS NPU,支持INT4/INT8混合精度计算,搭配PCIe 3.0接口可扩展Hailo-8等AI加速卡,实现32TOPS总算力‌12。 ‌Jetson Thor对比‌:英伟达新一代平台提供2070 FP4 TFLOPS算力(约5168 TOPS),是RK3588+扩展方案的160倍,但功耗高达130W,远超RK3588的5W典型功耗‌34。 2. ‌边缘AI场景适配性‌ * ‌实时性需求‌:RK3588在1080P视频结构化分析中延迟低于50ms,满足工业质检、安防监控等场景;Jetson Thor虽支持毫秒级多模态推理,但成本过高(量产模组2999美元)‌24。 ‌能效比‌:RK3588方案能效达1.2 TOPS/W,优于Jetson Orin的4.5 TOPS/W,适合电池供电的移动机器人‌14。

手把手用ROS实现Ego-Planner动态避障:无人机撞树问题终结方案

手把手用ROS实现Ego-Planner动态避障:无人机撞树问题终结方案 你是否曾满怀期待地启动无人机,看着它在仿真环境中流畅起飞,却在下一秒“砰”地一声撞上突然出现的障碍物,仿真画面定格,留下一串令人沮丧的报错信息?在复杂、非结构化的真实飞行场景中,比如在枝叶交错的林间穿行,或在有行人、车辆移动的城区执行任务,传统的全局规划器往往显得力不从心。它们规划的路径可能全局最优,但面对瞬息万变的局部环境,反应速度跟不上变化,导致“撞树”成了家常便饭。今天,我们不谈空洞的理论对比,而是聚焦于一个能真正解决这个痛点的方案——Ego-Planner,并带你一步步在ROS和Gazebo搭建的仿真世界里,亲手实现一个能“眼观六路、随机应变”的无人机大脑。 本文面向的是已经具备一定ROS和无人机仿真基础,正被动态避障问题困扰的开发者、研究者或高级爱好者。我们将彻底抛开宏观的算法优劣论述,直接深入到代码配置、参数调优和实战排错层面。你将看到的不是“Ego-Planner实时性更好”这样的结论,而是“如何设置距离场梯度计算的网格分辨率”、“碰撞反作用力系数调到多少能让无人机既灵活又稳定”的具体操作。我们

低代码的天花板:一个完备低代码平台的架构全景

低代码的天花板:一个完备低代码平台的架构全景

目录 一、为什么必须讨论“低代码的天花板” 二、从工具到平台:低代码能力跃迁的本质 三、适用领域的天花板 (一)数据中心型开发 (二)流程中心型开发 (三)二者统一的架构挑战 四、复杂度分层与兜底策略 (一)简单业务的高效处理 (二)复杂业务的分步实施与回退机制 五、Low Code × Pro Code 的混合模型 (一)混合模型的核心概念 1. Low Code 模块(LC) 2. 中间表示层(IR) 3. Pro Code 模块(PC) 4. 运行时环境(Runtime) (二)实现要点与技术细节 1. 中间表示层(IR)

近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点

近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点

摘要 实体瘤治疗长期受制于递送效率低、肿瘤组织渗透不足以及免疫抑制与耐药等问题。传统纳米药物多依赖被动累积与扩散,难以在肿瘤内部形成均匀有效的药物浓度分布。2021–2025 年,体内微/纳米机器人(包括外场驱动微型机器人、自驱动纳米马达以及生物混合机器人)围绕“运动能力”形成了三条相互收敛的技术路线: 其一,通过磁驱、声驱、光/化学自驱等方式实现运动增强递药与深层渗透,将治疗从“被动到达”推进到“主动进入”; 其二,与免疫治疗深度融合,实现原位免疫唤醒与肿瘤微环境重塑; 其三,针对胶质母细胞瘤(glioblastoma, GBM)等难治肿瘤,研究趋势转向“跨屏障递送(BBB/BBTB)+ 成像/外场闭环操控 + 时空可控释放”的系统工程。 本文围绕“运动—分布—疗效”的因果链条,总结 2021–2025 年代表性研究与关键评价指标,讨论临床转化所需的安全性、