web前端开发,零基础入门到精通,收藏这篇就够了

前端Web开发基础知识 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 阅读详情

1. 概述

    Web 前端开发是构建和优化网站用户界面的过程,主要包括实现用户界面的结构(HTML)、样式(CSS)和交互(JavaScript)功能。前端开发的目标是确保网站在各种设备和浏览器上都能良好地运行,并提供最佳的用户体验。
1.1 Web前端开发概述
Web即Web系统,指以 网站 形式呈现并通过浏览器进行访问的系统,它旨在实现特定的功能或服务。
前端网页上为用户呈现的部分。
开发即代码编写。
1.2 网站与网页
网站 web site网页 web page
互联网上用于展示特定内容的相关网页的集合。

网站中的一页,一个网站中的网页通过“超链接”的方式被组织在一起。

    **主页 homepage**:进入网站看到的第一个网页,主页的文件名通常是index。

    **网页元素**:Logo站标、导航栏、文字超链接、banner广告横幅、表单等。

    **网站**:是一个包含多个网页文件及相关资源的文件夹。

    **网页**:是网站中的单个文件,通常以HTML格式存在。

    **浏览器**:负责解析网页源代码,并将其渲染为可视化的网页内容。
1.3 Web前端开发技术
结构:HTML样式:CSS行为:JavaScript
从语义的角度,描述页面结构从审美的角度,美化页面从交互的角度,提升用户体验
    前端技术标准:W3C(万维网联盟: the World Wide Web Consortium)

    W3C标准:[W3C](https://www.w3.org/ "W3C")

    W3C教程:[w3school 在线教程](http://www.w3school.com.cn/ "w3school 在线教程")

    MDN :  [学习 Web 开发 | MDN](https://developer.mozilla.org/zh-CN/docs/Learn "学习 Web 开发 | MDN")

2. HTML基础

2.1 HTML概述
2.1.1 HTML语言
    HTML(HyperText MarkUp Language):"**超文本标记语言**",它是制作网页的标准语言。

    注:**HTML不区分大小写**,<div>, <DIV> , 和 <DiV>在HTML中都被视为相同的标签。HTML5规范建议使用小写字母,这样可以保持代码一致性并提升可读性。
2.1.2 HTML标签、元素
    HTML标签或元素是由**尖括号**包围的标识符,例如<title>, 它们通常成对出现,包括一个**开始标签**和一个**结束标签**,用于定义和包含网页中的特定内容或功能。

2.1.3 HTML标签、属性
    HTML标签可以包含多个属性,**属性之间的顺序不影响其功能**。每个属性由名称和值组成,名称和值之间用等号分隔,属性之间用空格分隔。即使属性的顺序不同,浏览器仍会按照相应的规则正确解析和呈现这些属性。

2.2 HTML文件结构
2.2.1 HTML
    **.htm** 或 **.html** 文件

2.2.2 HTML5

2.3 字符集与编码
    字符(Character):文字、符号

    字符集(Charaset):字符的集合

    编码:将字符和二进制码对应起来
ASCⅡ数字、英文字母、符号
GB2312简体中文
Unicode所有语言
UTF-8所有语言,占用空间更小
    注:**乱码问题**

    当源文件保存时的编码,与源文件声明中<meta charset="编码方式">,编码方式不一致时,就会出现乱码问题。
2.4 HTML 常用标签
标题h1~h6
段落p
段内换行br
空格字符&nbsp;
预留格式pre
行内组合span
水平线hr
注释<!-- 注释内容 -->
超链接a
插入图片img
区域div
列表ul ol li
表格table tr td
表单form
    表单是一个用于收集用户信息的区域,通常包含多种输入元素,以便用户填写和提交数据。

常见的表单元素包括:

  • 文本框:用于输入单行文本。

  • 按钮:用于触发提交或其他操作。

  • 单选按钮:允许用户从多个选项中选择一个。

  • 复选框:允许用户选择一个或多个选项。

  • 下拉列表:提供一个可展开的列表,让用户从中选择一个选项。

  • 文本域:用于输入多行文本,例如评论或反馈。

    这些元素共同构成了一个完整的表单,使用户能够方便地输入和提交信息。
    

2.5 Web语义化
    **Web语义化**指的是在网页设计和开发中使用具有明确意义的HTML标签,以便浏览器和搜索引擎更好地理解网页内容的结构和含义。这种做法不仅有助于提高网页的可访问性和搜索引擎优化(SEO),还使得代码更加清晰和易于维护。  

常见的Web语义化标签包括:

  1. <header>:定义文档或部分的头部区域,通常包含网站的导航、标题或标识。

  2. <nav>:定义导航链接的区域,通常包含站点的主要导航菜单。

  3. <main>:定义文档的主要内容区域,通常是页面的核心内容部分,与侧边栏、头部和底部区域区分开。

  4. <article>:定义独立的内容块,如文章、博客帖子或新闻报道,通常可以单独分发和重用。

  5. <section>:定义文档中的一个章节或部分,通常用于将内容分成逻辑组。

  6. <aside>:定义与主要内容间接相关的附加信息,如侧边栏、广告或引用。

  7. <footer>:定义文档或部分的底部区域,通常包含版权信息、联系信息或版权声明。

3. CSS

3.1 基本概念
    **CSS(Cascading Style Sheets,层叠样式表)** 是一种用于描述网页文档外观和格式的样式表语言。它主要用于控制HTML文档的排版、颜色、布局等视觉效果。CSS使得网页设计师和开发者能够将样式与内容分离,从而更好地维护和更新网站。
  • 选择器(Selectors):用于指定哪些HTML元素应该应用样式。例如,.class, #id, element等。

  • 属性(Properties):定义具体的样式规则,例如 color, font-size, margin, padding 等。

  • 值(Values):给属性指定具体的样式值。例如,color: red; 中的 red 就是值。

3.2 基本语法
    CSS的基本语法结构如下:
selector {
  property: value;
}

    例如,要将所有段落的文本颜色设置为蓝色,可以使用以下CSS规则:
p {
  color: blue;
}
3.3 常见属性
字体font-family, font-size, font-weight, font-style
文本color, text-align, text-decoration, line-height
布局margin, padding, border, width, height
背景background-color, background-image, background-size
定位position, top, right, bottom, left
显示和隐藏display, visibility, opacity
3.4 布局模型
  1. 盒模型(Box Model):定义了每个HTML元素的布局,包括内容区、内边距(padding)、边框(border)和外边距(margin)。

  2. 流式布局(Flow Layout):默认的布局方式,元素按顺序从上到下、从左到右排列。

  3. 弹性布局(Flexbox):提供了更强大的布局能力,可以在一个容器中灵活地对齐和分配空间。

  4. 网格布局(Grid Layout):基于二维网格的布局系统,允许开发者创建复杂的布局结构。

  5. 定位(Positioning):包括静态定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。

3.5 引入方式
  1. 内联样式(Inline Styles):直接在HTML元素中使用style属性添加样式。

    <p style="color: red;">这是红色的文本。</p>
    
    
  2. 内部样式表(Internal Stylesheet):在HTML文档的<head>部分使用<style>标签定义样式。

    <style>
      p {
        color: green;
      }
    </style>
    
    
  3. 外部样式表(External Stylesheet):将CSS样式定义在独立的CSS文件中,并通过<link>标签引入。

    <link rel="stylesheet" href="styles.css">
    
    
    CSS使得网页设计更具灵活性和可维护性,通过分离内容与样式,开发者可以更轻松地进行样式调整和设计优化。
    

4. JavaScript基础

4.1 基本概念
    **JavaScript** 是一种运行于JavaScript解释器/引擎中的**解释型**脚本语言,主要用于在网页中实现动态功能和交互。它使得网页不仅仅是静态内容,而是可以响应用户操作和事件。

    运行环境:

            1、独立安装的JS解释器(NodeJS)

            2、嵌入在\[浏览器\]内核中的JS解释器

    **解释型**:运行之前是不需要编译的,运行之前不会检查错误,直到碰到错误为止。

    **编译型**:对源码进行编译,还能检查语法错误。(C/c++)
完整的JS是由三部分组成
1、核心(ECMAScript)
2、文档对象模型(DOM,Document Object Model)
浏览器对象模型(BOM,Browser Object Model)
4.2 基本语法
4.2.1 变量声明
变量名 命名规则
1、不允许使用 JS 的关键字 和 保留关键字
2、由字母、数字、下划线以及$组成
3、不能以数字开头
4、尽量见名知意
5、可以采用“驼峰命名法”
    变量名为合成词时,第一个单词全小写,从第二个单词开始,每个单词首字符变大写(eg: var stuName;)

    如果只有一个单词作为变量名,全小写(eg:var age;)

|

let name = "Alice";
const age = 25;
  • var:传统的变量声明方式,有函数作用域。
  • let:块级作用域,更现代的变量声明方式。
  • const:用于声明常量,块级作用域,值不可修改。
4.2.2 数据类型
  • 基本数据类型:Number(数字),String(字符串),Boolean(布尔值),undefined,null,Symbol(ES6 新增),BigInt(用于大整数)
  • 对象类型:Object(对象),Array(数组),Function(函数),Date(日期),RegExp(正则表达式)
let number = 10;           // Number
let name = "Alice";        // String
let isActive = true;       // Boolean
let user = { name: "Alice", age: 25 }; // Object
let numbers = [1, 2, 3, 4]; // Array
4.2.3 运算符
  • 算术运算符:+, -, *, /, %
  • 比较运算符:==, ===, !=, !==, >, <, >=, <=
  • 逻辑运算符:&&(与),||(或),!(非)
  • 赋值运算符:=, +=, -=, *=, /=
let a = 5;
let b = 10;
let result = a + b; // 15
4.3 控制结构
4.3.1 条件语句

if, else if, else

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

**switch**

4.3.2 循环语句
  • for:用于重复执行代码块。
  • while:当条件为真时重复执行代码块。
  • do...while:先执行一次代码块,再判断条件。
for (let i = 0; i < 5; i++) {
  console.log(i); // 输出 0 到 4
}
while (condition) {
  // 当 condition 为 true 时执行的代码
}

condition:一个布尔表达式。如果 condition 为 true,则执行 while 语句块中的代码。如果为 false,则退出循环。

do {
  // 循环体代码
} while (condition);

  • do:关键字,表示开始循环体。
  • condition:布尔表达式。如果 condition 为 true,则继续执行循环体中的代码;如果为 false,则退出循环。
4.4 函数
4.4.1 定义函数
function greet(name) {
  return `Hello, ${name}!`;
}
console.log(greet("Alice")); // 输出 "Hello, Alice!"
4.4.2 箭头函数(ES6)
const greet = (name) => `Hello, ${name}!`;
console.log(greet("Bob")); // 输出 "Hello, Bob!"
4.5 事件处理
    **添加事件监听器**:
document.getElementById("myButton").addEventListener("click", function() {
  alert("按钮被点击了!");
});
4.6 DOM 操作
    DOM(文档对象模型)操作是指通过 JavaScript 对 HTML 文档中的元素进行访问和修改的过程。
4.6.1 选择元素
  • document.getElementById(id)

    • 根据 ID 选择元素。

    • 示例:```
      const element = document.getElementById(‘myId’);

      
      
  • document.getElementsByClassName(className)

    • 根据类名选择元素,返回一个 HTMLCollection。

    • 示例:```
      const elements = document.getElementsByClassName(‘myClass’);

      
      
  • document.getElementsByTagName(tagName)

    • 根据标签名选择元素,返回一个 HTMLCollection。

    • 示例:```
      const elements = document.getElementsByTagName(‘div’);

      
      
  • document.querySelector(selector)

    • 根据 CSS 选择器选择第一个匹配的元素。

    • 示例:```
      const element = document.querySelector(‘.myClass’);

      
      
  • document.querySelectorAll(selector)

    • 根据 CSS 选择器选择所有匹配的元素,返回一个 NodeList。
    • 示例:```
      const elements = document.querySelectorAll(‘div.myClass’);
      
      
      
4.6.2 修改元素
  • element.innerHTML

    • 获取或设置元素的 HTML 内容。

    • 示例:```
      element.innerHTML = ‘

      新内容

      ’;
      
      
  • element.textContent

    • 获取或设置元素的文本内容。

    • 示例:```
      element.textContent = ‘新文本内容’;

      
      
  • element.setAttribute(attributeName, value)

    • 设置元素的属性。

    • 示例:```
      element.setAttribute(‘class’, ‘newClass’);

      
      
  • element.style

    • 修改元素的 CSS 样式。
    • 示例:```
      element.style.color = ‘red’;
      
      
      
4.6.3 添加和删除元素
  • document.createElement(tagName)

    • 创建一个新的 HTML 元素。

    • 示例:```
      const newDiv = document.createElement(‘div’);

      
      
  • element.appendChild(newChild)

    • 将新的子元素添加到指定元素中。

    • 示例:```
      element.appendChild(newDiv);

      
      
  • element.removeChild(child)

    • 从指定元素中删除一个子元素。

    • 示例:```
      element.removeChild(oldChild);

      
      
  • element.insertBefore(newNode, referenceNode)

    • 在指定元素的前面插入一个新的子元素。
    • 示例:```
      element.insertBefore(newDiv, referenceElement);
      
      
      
4.6.4 事件处理
  • element.addEventListener(event, function)

    • 为元素添加事件监听器。

    • 示例:```
      element.addEventListener(‘click’, function() {
      alert(‘元素被点击了!’);
      });

      
      
  • element.removeEventListener(event, function)

    • 移除事件监听器。
    • 示例:```
      element.removeEventListener(‘click’, handlerFunction);
      
      
      
4.6.5 类名操作
  • element.classList
    • 访问元素的类名列表,可以方便地添加、删除或切换类名。
    • 示例:```
      element.classList.add(‘newClass’); // 添加类名
      element.classList.remove(‘oldClass’); // 删除类名
      element.classList.toggle(‘toggleClass’); // 切换类名
      
      
      
4.6.6 获取和设置位置与尺寸
  • element.getBoundingClientRect()

    • 获取元素的大小和相对于视口的位置。

    • 示例:```
      const rect = element.getBoundingClientRect();
      console.log(rect.top, rect.left);

      
      
  • element.offsetWidth 和 element.offsetHeight

    • 获取元素的宽度和高度,包括内边距和边框。
    • 示例:```
      const width = element.offsetWidth;
      const height = element.offsetHeight;
      
      
      
4.7 数组操作
4.7.1 创建数组
  • 使用数组字面量

    const array = [1, 2, 3, 4, 5];
    
    
  • 使用 Array 构造函数

    const array1 = new Array(5); // 创建一个包含 5 个空位的数组
    const array2 = new Array(1, 2, 3); // 创建一个包含 1, 2, 3 的数组
    
4.7.2 访问和修改元素
  • 访问元素

    const value = array[0]; // 访问第一个元素
    
    
  • 修改元素

    array[1] = 10; // 将第二个元素修改为 10
    
4.7.3 常用数组方法
  • push()

    • 向数组末尾添加一个或多个元素。
    array.push(6, 7);
    
    
  • pop()

    • 从数组末尾删除一个元素,并返回该元素。
    const lastElement = array.pop();
    
    
  • shift()

    • 从数组开头删除一个元素,并返回该元素。
    const firstElement = array.shift();
    
    
  • unshift()

    • 向数组开头添加一个或多个元素。
    array.unshift(0, -1);
    
    
  • splice(start, deleteCount, item1, item2, ...)

    • 从指定位置删除或替换元素,并可以插入新的元素。
    array.splice(2, 1, 10, 11); // 从索引 2 开始删除 1 个元素,插入 10 和 11
    
    
  • slice(start, end)

    • 返回数组的一个片段,不修改原数组。
    const subArray = array.slice(1, 4); // 从索引 1 到 3
    
    
  • concat(array1, array2, ...)

    • 合并两个或多个数组,返回新数组。
    const newArray = array.concat([6, 7], [8, 9]);
    
    
  • join(separator)

    • 将数组元素连接成一个字符串。
    const str = array.join('-'); // '1-2-3-4-5'
    
    
  • reverse()

    • 反转数组中的元素顺序。
    array.reverse();
    
    
  • sort(compareFunction)

    • 对数组元素进行排序。
    array.sort(); // 默认按字典顺序排序
    array.sort((a, b) => a - b); // 按升序排序数字
    
4.7.4 数组迭代方法
  • forEach(callback)

    • 对数组的每个元素执行一次回调函数。
    array.forEach(element => console.log(element));
    
    
  • map(callback)

    • 返回一个新数组,其中每个元素是回调函数返回值的结果。
    const doubledArray = array.map(element => element * 2);
    
    
  • filter(callback)

    • 返回一个新数组,其中包含回调函数返回 true 的所有元素。
    const evenArray = array.filter(element => element % 2 === 0);
    
    
  • reduce(callback, initialValue)

    • 从数组的第一个元素开始,依次执行回调函数,将结果汇总为一个单一的值。
    const sum = array.reduce((acc, current) => acc + current, 0);
    
    
  • find(callback)

    • 返回数组中第一个使回调函数返回 true 的元素。
    const firstEven = array.find(element => element % 2 === 0);
    
    
  • some(callback)

    • 如果数组中至少有一个元素使回调函数返回 true,则返回 true,否则返回 false。
    const hasEven = array.some(element => element % 2 === 0);
    
    
  • every(callback)

    • 如果数组中的所有元素都使回调函数返回 true,则返回 true,否则返回 false。
    const allPositive = array.every(element => element > 0);
    
    
  • includes(value)

    • 判断数组是否包含指定的值,返回 true 或 false。
    const hasThree = array.includes(3);
    
4.7.5 数组转化方法
  • toString()

    • 将数组转换为字符串。
    const str = array.toString();
    
    
  • toLocaleString()

    • 将数组转换为本地化字符串。
    const localeStr = array.toLocaleString();
    
4.8 对象
    在 JavaScript 中,对象是一种用于存储键值对的集合。对象可以包含各种数据类型的值,包括其他对象。
4.8.1 创建对象
  • 对象字面量

    const person = {
      name: 'John',
      age: 30,
      greet: function() {
        console.log('Hello!');
      }
    };
    
    
  • 使用 new Object() 构造函数

    const person = new Object();
    person.name = 'John';
    person.age = 30;
    
    
  • 使用 Object.create()

    const proto = { greet() { console.log('Hello!'); } };
    const person = Object.create(proto);
    person.name = 'John';
    person.age = 30;
    
    
4.8.2 访问和修改对象属性
  • 访问属性

    console.log(person.name); // 'John'
    console.log(person['age']); // 30
    
    
  • 修改属性

    person.age = 31;
    person['name'] = 'Jane';
    
    
  • 添加新属性

    person.email = 'john.doe@example.com';
    
    
  • 删除属性

    delete person.email;
    
    
4.8.3 对象方法
  • 定义和调用方法```
    const person = {
    name: ‘John’,
    greet() {
    console.log('Hello, ’ + this.name);
    }
    };
    person.greet(); // ‘Hello, John’

    
    
    
4.8.4 遍历对象属性
  • for...in 循环

    for (const key in person) {
      if (person.hasOwnProperty(key)) {
        console.log(key + ': ' + person[key]);
      }
    }
    
    
  • Object.keys(obj)

    • 返回对象的可枚举属性名的数组。
    console.log(Object.keys(person)); // ['name', 'age', 'greet']
    
    
  • Object.values(obj)

    • 返回对象的可枚举属性值的数组。
    console.log(Object.values(person)); // ['John', 30, [Function: greet]]
    
    
  • Object.entries(obj)

    • 返回对象的键值对数组。
    console.log(Object.entries(person)); // [['name', 'John'], ['age', 30], ['greet', [Function: greet]]]
    
    
4.8.5 对象操作
  • Object.assign(target, ...sources)

    • 将一个或多个源对象的属性拷贝到目标对象。
    const target = { a: 1 };
    const source = { b: 2 };
    Object.assign(target, source);
    console.log(target); // { a: 1, b: 2 }
    
    
  • Object.freeze(obj)

    • 冻结对象,防止修改其属性。
    const person = { name: 'John' };
    Object.freeze(person);
    person.name = 'Jane'; // 不会生效
    
    
  • Object.seal(obj)

    • 密封对象,防止添加和删除属性,但允许修改现有属性。
    const person = { name: 'John' };
    Object.seal(person);
    person.name = 'Jane'; // 可以修改现有属性
    delete person.name; // 无效
    
    
  • Object.getPrototypeOf(obj)

    • 返回对象的原型。
    const proto = { greet() { console.log('Hello!'); } };
    const person = Object.create(proto);
    console.log(Object.getPrototypeOf(person) === proto); // true
    
    
  • Object.setPrototypeOf(obj, prototype)

    • 设置对象的原型。
    const proto = { greet() { console.log('Hello!'); } };
    const person = {};
    Object.setPrototypeOf(person, proto);
    person.greet(); // 'Hello!'
    
    
4.8.6 对象的属性描述符
  • Object.getOwnPropertyDescriptor(obj, prop)

    • 获取对象属性的描述符。
    const person = { name: 'John' };
    const descriptor = Object.getOwnPropertyDescriptor(person, 'name');
    console.log(descriptor);
    
    
  • Object.defineProperty(obj, prop, descriptor)

    • 定义对象的属性或修改其描述符。
    const person = {};
    Object.defineProperty(person, 'name', {
      value: 'John',
      writable: false,
      enumerable: true,
      configurable: false
    });
    

5. 响应式布局

    响应式布局(Responsive Design)是一种网页设计技术,旨在使网站在各种设备上都能良好地显示,无论是桌面电脑、平板还是手机。响应式布局通过动态调整布局和内容,以适应不同的屏幕尺寸和设备特性。下面是实现响应式布局的一些关键技术和方法:
5.1 流式网格布局
    **流式网格布局(Fluid Grid Layout)**
  • 使用百分比宽度:代替固定的像素宽度,使用百分比来设置元素的宽度,使其能够根据父容器的宽度进行调整。```
    .container {
    width: 100%;
    }
    .column {
    width: 50%; /* 使列宽度占据容器的一半 */
    }

    
    
    
5.2 媒体查询
    **媒体查询(Media Queries)**
  • 基本用法:根据不同的屏幕尺寸、分辨率或其他特性应用不同的样式。

    @media (max-width: 600px) {
      .container {
        padding: 10px;
      }
      .column {
        width: 100%; /* 在小屏幕上使列宽度占满整个容器 */
      }
    }
    
    
  • 多个条件:可以组合多个条件来处理更复杂的布局需求。

    @media (min-width: 600px) and (max-width: 900px) {
      .container {
        padding: 20px;
      }
    }
    
    
5.3 弹性盒子布局
    **弹性盒子布局(Flexbox)**
  • 基础使用:使容器中的项目能够灵活地调整和排列。```
    .container {
    display: flex;
    flex-direction: row; /* 行内排列 /
    justify-content: space-between; /
    项目之间均匀分布 /
    }
    .item {
    flex: 1; /
    每个项目占据相等的空间 */
    }

    
    
    
5.4 网格布局
    **网格布局(CSS Grid Layout)**
  • 基础用法:创建复杂的布局结构,能够更精确地控制行和列。```
    .container {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 创建3列,每列宽度相等 /
    gap: 10px; /
    设置网格间隙 /
    }
    .item {
    grid-column: span 1; /
    每个项目占据1列 */
    }

    
    
    
5.5 视口单位
     **视口单位(Viewport Units)**
  • vw 和 vh:使用视口宽度和高度单位来设置元素的尺寸。```
    .container {
    width: 100vw; /* 宽度占据整个视口宽度 /
    height: 100vh; /
    高度占据整个视口高度 */
    }

    
    
    
5.6 响应式图片
  • 使用 max-width:确保图片不会超出其容器的宽度。

    img {
      max-width: 100%;
      height: auto; /* 保持图片的宽高比 */
    }
    
    
  • srcset 和 sizes:为不同分辨率提供不同的图片资源。

    <img src="small.jpg" srcset="small.jpg 600w, medium.jpg 1200w, large.jpg 1800w" sizes="(max-width: 600px) 100vw, 50vw" alt="Responsive Image">
    
    
5.7 移动优先设计
    **移动优先设计(Mobile First Design)**
  • 先设计移动设备版本:先实现适合小屏幕的设计,然后使用媒体查询添加对大屏幕的支持。```
    /* 移动设备样式 */
    .container {
    padding: 10px;
    }

    @media (min-width: 768px) {
    .container {
    padding: 20px;
    }
    }

    @media (min-width: 1200px) {
    .container {
    padding: 30px;
    }
    }

    
    
    
5.8 排版和字体
  • 响应式字体:根据屏幕尺寸调整字体大小。```
    body {
    font-size: 16px;
    }

    @media (max-width: 600px) {
    body {
    font-size: 14px;
    }
    }

    
    
    
    
    

2025开年,AI技术打得火热,正在改变前端人的职业命运:

阿里云核心业务全部接入Agent体系;

字节跳动30%前端岗位要求大模型开发能力;

腾讯、京东、百度开放招聘技术岗,80%与AI相关……

大模型正在重构技术开发范式,传统CRUD开发模式正在被AI原生应用取代!

最残忍的是,业务面临转型,领导要求用RAG优化知识库检索,你不会;带AI团队,微调大模型要准备多少数据,你不懂;想转型大模型应用开发工程师等相关岗,没项目实操经验……这不是技术焦虑,而是职业生存危机!

曾经React、Vue等热门的开发框架,已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发,那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地,未来企业更看重能用AI大模型技术重构业务流的技术人。

如今技术圈降薪裁员频频爆发,传统岗位大批缩水,相反AI相关技术岗疯狂扩招,薪资逆势上涨150%,大厂老板们甚至开出70-100W年薪,挖掘AI大模型人才!

在这里插入图片描述

不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态,吸引了很多人的关注和兴趣,也有很多新人小白想要学习入门大模型,那么,如何入门大模型呢?

下面给大家分享一份2025最新版的大模型学习路线,帮助新人小白更系统、更快速的学习大模型!

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

四、大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版优快云大礼包:《AGI大模型学习资源包》免费分享

Web前端开发【新手入门指南】 Web前端开发入行门槛低、薪资高,是互联网行业的紧俏岗位之一。目前Web前端开发人员年薪基本都在10万以上,一线城市的薪资会更高,这也吸引了很多人进入Web前端行业。对于完全不了解行业的人来说,他们对Web前端知之甚少。下面小菌就给大家解读一下Web前端开发到底是干什么的,初学Web前端的小伙伴不容错过。 阅读详情

相关推荐

web前端开发基础教程一

简单的来说,en就是英文网页,zh-CN就是中文网页。但这并不意味着,我们一旦定义好语言,就不能在其中书写别的语言了,只是说为了展现当前页面的语言而已。那么它的作用就体现在,假如说当前的页面使我们不熟悉的语言,那么我们可以进行翻译。

m0_64365419的博客 1万+

web前端开发介绍

前端内容介绍 一、什么是前端 应用软件组成:前端+后端 后端负责处理业务逻辑&提供数据,任何与用户直接打交道的操作界面都可以称之为前端,主要负责页面展示、与用户交互等等下面都是前端: 公司官网(在PC通过浏览器来访问公司网站) 移动端网页(在手机上来浏览公司信息、小游戏等) 移动端APP(例如:淘宝、去哪儿旅游、携程等) 微信小程序(微信最新推出的功能,随用随装,不占用手机空间)。 前端开发是从网页制作演变而来的。 早期的网页制作主要内容都是静态的,以文字图片为主,用户使用网站也以浏览为主。 随着互联网

淘小欣的博客 1万+

修改串口服务器,串口虚拟化 | 串口服务器Nport 5630 设置

原标题:串口虚拟化 | 串口服务器Nport 5630 设置JZGKCHINA项目改造,客户需要对IFix4.5进行升级,并优化通讯,在不改变原来配置的基础上逐步进行替换。需要将IFix升级到IFix5.9,数据库升级为SQL Server 2016,客户现场使用的智能仪表都是支持Modbus RTU协议的,因原来的手拉手的通讯方式的,当一台仪表掉线后,会影响到其他仪表的通讯,所以此次在不改变原有...

weixin_31688465的博客 2408

Web前端开发-基础知识

Web 前端开发是构建和优化网站用户界面的过程,主要包括实现用户界面的结构(HTML)、样式(CSS)和交互(JavaScript)功能。前端开发的目标是确保网站在各种设备和浏览器上都能良好地运行,并提供最佳的用户体验。

2302_77228054的博客 9094

从零开始写一个RTSP服务器(一)RTSP协议讲解

从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTP传输H.264(待写) 从零开始写一个RTSP服务器(三)一个传输H.264的RTSP服务器(待写) 从零开始写一个RTSP服务器(四)RTP传输AAC(待写) 从零开始写一个RTSP服务器(五)一个传输AAC的RTSP服务器(待写) 从零开始写一个RTSP服务器(...

JT同学的博客 7万+

NLP自然语言处理:神经网络语言模型(NNLM)

目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛...

陈宸的博客 1万+

Web前端开发,零基础入门到精通,收藏这篇就够了

HTML(HyperTextMarkupLanguage):超文本标记语言。超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。标记语言:由标签构成的语言。CSS(CascadingStyleSheet):层叠样式表,用于控制页面的样式(表现)。JavaScript(简称:JS) 是一门跨平台面向对象的脚本语言(不需要编译,由浏览器解释执行)。是用来控制网页行为的,它能使网页可交互。

Python_0011的博客 1114

VOWIFI--相关的协议文档

一、3GPP相关协议文档 3GPP 23.402 Architecture enhancements for non-3GPP accesse- //重要 整体框架结构和流程,3GPP和NON-3GPP切换 3GPP 36.304  User Equipment (UE) procedures in idle mode //重要,终端在空闲状态下3GPP与NON-3GPP之间的重选方法   3GP

时九博客 3580

学web前端开发技术,零基础入门到精通,收藏这篇就够了

从事Web前端要学什么?常用前端开发技术有哪些?随着移动互联网的迅猛发展,Web前端工程师开始崭露头角。随着JS和XHTML应用程序的普及,越来越多的Web界面应用程序技术出现在网站上。有很多人想要从事Web前端,却又不知道学什么,接下来小编就给大家分享常用的Web前端开发技术及工具。常用的Web前端开发技术1)HTML。HTML是网页的核心,是一种制作万维网页面的标准语言,是万维网浏览器使用的一种语言。

Javachichi的博客 1227

CST毫米波雷达ADAS仿真:从直角反射器到距离多普勒(RD图)的实战解析

本文通过CST Studio Suite实战解析毫米波汽车雷达ADAS仿真,详细演示了从构建直角反射器目标、参数化定义速度、进行参数扫描到生成距离多普勒图(RD图)的全过程。文章深入探讨了雷达关键参数(如距离分辨率、速度分辨率)的设计权衡与工程逻辑,并提供了单位统一、速度范围设定等实用避坑指南,帮助工程师高效完成雷达系统性能的前期验证与优化。

weixin_29292535的博客 502

SentEval学习笔记

SentEval allows you to evaluate your sentence embeddings as features for the followingdownstreamtasks: Task Type #train #test needs_train set_classifier MR movie review(影评) 11k 11k 1 1 CR product review(产品评述) ...

AlphaFinance 803

Web前端开发入门:概述与基础语法详解,从零基础到精通,收藏这篇就够了!

Web前端开发是构建网站和Web应用用户界面的关键环节。本文将带你深入了解Web前端开发的概述与基础语法,助你快速入门并提升编程技能。Web前端开发主要负责网站和Web应用的用户界面设计、交互逻辑实现以及用户体验优化。它包括HTML、CSS和JavaScript三大核心技术。掌握Web前端开发的概述与基础语法,是成为一名优秀前端开发者的第一步。通过不断实践和学习,你将能够构建出更加美观、高效和用户友好的Web应用。

Libra1313的博客 1535

Java数据可视化实战:基于JFreeChart的数学函数绘图工具开发

JFreeChart是一个开源的Java图表库,适用于Swing和JavaFX应用程序。折线图和面积图柱状图和饼图散点图和气泡图组合图表3D图表等实现自定义数学表达式解析:java复制下载throw new IllegalArgumentException("表达式不能为空");// 验证表达式try {}");throw new IllegalArgumentException("无效的数学表达式: " + e.getMessage());try {

2201_76125393的博客 365

Web前端开发学习笔记,零基础入门到精通,收藏这篇就够了

可以是文字也可以是图片文字

Python_0011的博客 971

(考研湖科大教书匠计算机网络)第四章网络层-第三节3、4:划分子网的IPv4地址和无分类IP地址

子网掩码: 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号子网掩码使用连续的比特1来对应网络号和子网号子网掩码使用连续的比特0来对应主机号将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址如下图。

快乐江湖的博客 1348

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

web前端开发常用工具有哪些?零基础入门到精通,收藏这篇就够了

Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合,它使用了新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等。Foundation是一个易用、强大而且灵活的框架,用于构建基于任何设备上的Web应用。提供多种Web上的UI组件,如表单、按钮、Tabs等。Cloud9IDE是一个基于Node.JS构建的JavaScript程序开发WebIDE。

Python_0011的博客 794

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Web前端开发必不可少的10个开源框架,零基础入门到精通,收藏这篇就够了

2、MVVM框架========是一个软件架构设计模式,由微软 WPF 和 Silverlight 的架构师 Ken Cooper 和 Ted Peters 开发,是一种事件驱动的编程方式。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。目前比较常见的MVVM框架包括:Angular、Vue和React。诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。

Libra1313的博客 1557

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Web前端开发工程师需要掌握哪些核心技能?零基础入门到精通,收藏这篇就够了

HTML发展历史有二十多年,历经多次版本更新,HTML5和CSS3的出现又是一次革新。有些人认为前端开发要掌握的技能简单,不就是制作网页 嘛,其实不然,web前端需要掌握的核心语言xHTML+CSS+JavaScript,JavaScript作为最难的语言之一,许多编程高手也不敢妄 自菲薄自封精通。由于JavaScript与html的差异性,以及静动态分开处理的一些好处。在大公司编写静态效果和动态效果往往是分开由不同的人完成 的。

Python_0011的博客 816

零基础学习Web前端开发应该先学什么?以下这几点一定是你需要掌握的。零基础入门到精通,看这篇就够了!赶紧收藏!

我们知道在网站开发中有前端和后端两种角色的开发人员,那么前端一般来说是客户端,而后端则是服务器端”。前端主要负责的是与服务器进行通信并实现视觉和交互效果。

2401_84578953的博客 1202

Web前端开发最常见的八种编程软件,零基础入门到精通,收藏这篇就够了

它是为前端开发者服务的通用IDE,或者称为编辑器。与vscode、sublime、webstorm类似。它可以开发普通web项目,也可以开发DCloud出品的uni-app项目、5+App项目、wap2app项目。目前有800万开发者在使用HBuilder。老版的HBuilder是红色logo,已于2018年停止更新。绿色logo的HBuilderX是新版替代品。除了服务前端技术栈,它也可以通过插件支持php等其他语言。相比于竞品,它的优势有:运行速度快(c++内核)

Python_0011的博客 1905
上一篇: 前端面试项目难点案例,零基础入门到精通,收藏这篇就够了
下一篇: 前端环境搭建,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值