HTML + CSS + JavaScript 快速入门(三):JS 与 jQuery 实战

HTML + CSS + JavaScript 快速入门(三):JavaScript 与 jQuery 实战(2026 年视角)

这是系列第三讲,我们进入 JavaScript(简称 JS)核心内容,并对比经典的 jQuery
2026 年的现实情况是:

  • 原生 JS(尤其是 ES6+)已成为主流,几乎所有新项目都优先用原生。
  • jQuery 仍然大量存在(据 W3Techs 2026 年 3 月数据,约 70% 的网站在使用某种 JS 库的情况下 jQuery 占比 ~88%,整体网站约 70% 仍在跑 jQuery,主要因为 WordPress、Bootstrap 遗留、大量维护中的老项目)。
  • jQuery 4.0 已于 2026 年初正式发布,体积更小、现代化更好,但新项目极少从零引入

因此本讲的策略是:先掌握原生 JS 核心(必须),再理解 jQuery 能做什么 + 怎么快速迁移/维护

1. JavaScript 核心基础(零基础到能写小交互)

1.1 变量与数据类型(ES6+ 写法)

// 优先用 const,需改值才用 let,永远别用 var(除非维护 2015 年前代码)
const name = "重阳";              // 字符串
let age = 30;                      // 数字(number)
const isDev = true;                // 布尔
const skills = ["HTML", "CSS", "JS"]; // 数组
const person = { name, age, isDev };  // 对象(简写属性)

console.log(typeof person);        // "object"
console.log(Array.isArray(skills)); // true

1.2 函数(现代写法)

// 箭头函数(最常用)
const greet = (name = "访客") => `你好,${name}!`;   // 模板字符串

// 普通函数(需要 this 绑定时用)
function add(a, b) {
  return a + b;
}

// 立即执行函数(IIFE,少用但偶尔有用)
(() => {
  console.log("页面加载就执行");
})();

1.3 数组与对象常用操作(高频实战)

const nums = [10, 5, 8, 3, 12];

// 增删改查
nums.push(99);              // 尾加
nums.unshift(1);            // 头加
nums.pop();                 // 尾删
nums.shift();               // 头删
nums.splice(2, 1, 88);      // 从索引2删1个,插入88

// 遍历(优先 for...of)
for (const num of nums) {
  console.log(num);
}

// 高级操作(map / filter / reduce 最常用)
const doubled = nums.map(n => n * 2);
const evens = nums.filter(n => n % 2 === 0);
const sum = nums.reduce((acc, n) => acc + n, 0);

// 对象解构 + 展开
const { name, age: userAge } = person;
const updated = { ...person, city: "Meppel" };

1.4 DOM 操作基础(原生 vs jQuery 对比表)

需求原生 JavaScript (2026 推荐)jQuery (经典写法)备注
获取元素document.querySelector(".box")$(".box")原生更精确
获取多个document.querySelectorAll(".item")$(".item")原生返回 NodeList
修改文本el.textContent = "新内容"el.text("新内容")textContent 更安全
修改 HTMLel.innerHTML = "<strong>粗体</strong>"el.html("<strong>粗体</strong>")警惕 XSS
添加类el.classList.add("active")el.addClass("active")原生更轻量
事件绑定btn.addEventListener("click", () => {...})btn.click(() => {...})原生支持移除更方便
AJAX / fetchfetch("/api").then(r => r.json())$.get("/api", data => {...})fetch 内置 Promise
隐藏/显示el.style.display = "none" / "block"el.hide() / el.show()

现代结论凡是 jQuery 能做的,原生 JS 都能做,而且性能更好、体积更小
但在维护 WordPress 主题、老后台管理系统、Bootstrap 3/4 项目时,jQuery 仍然是最快上手的方式。

2. 实战小案例:Todo List(原生 JS 版 vs jQuery 版)

HTML 骨架(共用)

&lt;!DOCTYPE html>
&lt;html lang="zh-CN">
&lt;head>
  &lt;meta charset="UTF-8">
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0">
  &lt;title>Todo List&lt;/title>
  &lt;link rel="stylesheet" href="style.css">
&lt;/head>
&lt;body>
  &lt;div class="container">
    &lt;h1>我的待办事项&lt;/h1>
    &lt;input type="text" id="taskInput" placeholder="输入新任务...">
    &lt;button id="addBtn">添加&lt;/button>

    &lt;ul id="taskList">&lt;/ul>
  &lt;/div>

  &lt;!-- 两种版本都可切换使用 -->
  &lt;!-- &lt;script src="https://code.jquery.com/jquery-3.7.1.min.js">&lt;/script> -->
  &lt;script src="app.js">&lt;/script>
&lt;/body>
&lt;/html>

原生 JS 版本(推荐学习 & 新项目)

// app.js - Vanilla JS
const input = document.getElementById("taskInput");
const addBtn = document.getElementById("addBtn");
const list = document.getElementById("taskList");

function addTask() {
  const text = input.value.trim();
  if (!text) return;

  const li = document.createElement("li");
  li.innerHTML = `
    &lt;span>${text}&lt;/span>
    &lt;button class="delete">×&lt;/button>
  `;

  li.querySelector(".delete").addEventListener("click", () => {
    li.remove();
  });

  list.appendChild(li);
  input.value = "";
  input.focus();
}

addBtn.addEventListener("click", addTask);
input.addEventListener("keydown", e => {
  if (e.key === "Enter") addTask();
});

jQuery 版本(维护老项目或快速原型时用)

// app.js - jQuery 版
$(function() {   // 等价于 DOMContentLoaded
  const $input = $("#taskInput");
  const $addBtn = $("#addBtn");
  const $list = $("#taskList");

  $addBtn.on("click", function() {
    const text = $input.val().trim();
    if (!text) return;

    const $li = $(`
      &lt;li>
        &lt;span>${text}&lt;/span>
        &lt;button class="delete">×&lt;/button>
      &lt;/li>
    `);

    $li.find(".delete").on("click", function() {
      $(this).parent().remove();
    });

    $list.append($li);
    $input.val("").focus();
  });

  $input.on("keydown", function(e) {
    if (e.key === "Enter") $addBtn.trigger("click");
  });
});

3. 2026 年学习路径建议(实战导向)

  1. 必须精通(80% 时间):
  • DOM 操作(querySelector / addEventListener / classList / dataset)
  • 数组方法(map/filter/reduce/find/forEach)
  • 事件委托(event delegation)
  • async/await + fetch
  • 模块化(import/export 或 type=”module”)
  1. 了解 & 能读懂(20% 时间):
  • jQuery 基本语法($() / .on() / .html() / .ajax() / .fadeIn() 等)
  • 如何把 jQuery 代码改写成原生(常见面试题)
  • 为什么很多老项目还在用 jQuery(WordPress、遗留系统、团队熟悉度)
  1. 小项目练习推荐(由简到难):
  • 动态待办列表(上面例子)
  • Tabs 切换 / 手风琴菜单
  • 图片懒加载 + 无限滚动
  • 简单表单验证 + AJAX 提交
  • Dark Mode 切换(localStorage 保存)

4. 一句话总结(2026 心态)

“原生 JS 是未来,jQuery 是过去和现在的大量遗产。”
先用原生把能力练扎实,再遇到老项目时看一眼 jQuery 文档就能快速维护。

下一讲预告(如果继续):

  • 事件机制深入 + 事件委托实战
  • 模块化开发(ES modules vs bundler)
  • 简单状态管理(不依赖框架)
  • 常见面试 JS 题解析

你现在想重点练哪个部分?

  • 更多原生 DOM 小案例
  • jQuery → 原生 迁移对比
  • 事件冒泡/委托的完整解释
  • 用 fetch 做真实 API 交互

告诉我,我可以直接给对应代码 + 详细步骤。

文章已创建 5225

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部