从原生 JS 到 Vue 与 React:前端开发的演进之路

在前端开发的早期,开发者主要依赖原生 JavaScript 进行 DOM 操作、样式管理与事件绑定。但随着 Web 应用日益复杂,这种"刀耕火种式"的开发方式逐渐暴露出低效、难维护的问题。现代前端框架如 Vue 和 React 应运而生,极大地提升了开发效率,让开发者可以专注于业务逻辑而非底层 API 的使用。

本文将带你通过具体示例,逐步了解如何从原生 JS 迁移到 Vue 和 React,并掌握背后的设计思想。

一、语义化标签:构建结构清晰的页面

HTML5 引入了大量语义化标签(如 <table><thead><tbody><tr><th> 等),这些标签不仅提高了代码可读性,也增强了网页的语义表达能力,便于搜索引擎理解和辅助工具访问。

示例:使用语义化表格结构展示数据

html 复制代码
<table class="table table-striped">
  <thead>
    <tr>
      <th>姓名</th>
      <th>家乡</th>
    </tr>
  </thead>
  <tbody>
    <!-- 动态内容区域 -->
  </tbody>
</table>
  • <thead> 表头部分;
  • <tbody> 表体部分,用于动态插入数据;
  • <tr> 行;
  • <th> 表头单元格;
  • <td> 数据单元格。

这种方式使页面结构清晰、易于维护,同时也方便后续接入 CSS 框架或 JavaScript 框架。


二、原生 JS:DOM 编程实现数据动态渲染

原生 JS 的 DOM 编程是动态更新页面的最基本手段。例如以下代码展示了如何使用原生 JS 渲染数据表格:

html 复制代码
<div class="container">
  <table id="friends" class="table table-striped">
    <thead>
      <tr>
        <th>姓名</th>
        <th>家乡</th>
      </tr>
    </thead>
    <tbody></tbody>
  </table>
</div>

<script>
  const oBody = document.querySelector("#friends tbody");

  const friends = [
    { name: "张三", hometown: "北京" },
    { name: "李四", hometown: "上海" }
  ];

  // 使用模板字符串拼接 HTML 并注入
  oBody.innerHTML = friends.map(friend => `
    <tr>
      <td>${friend.name}</td>
      <td>${friend.hometown}</td>
    </tr>
  `).join("");
</script>

原生 JS 的局限性:

  1. 手动操作 DOM :频繁地调用 querySelector, innerHTML 容易出错;
  2. 数据与视图耦合严重:数据变更时需手动重新渲染;
  3. 难以维护扩展:数据量大或交互复杂时,代码冗长且不易管理;
  4. 缺乏模块化和组件化思维:不利于大型项目协作。

三、样式处理:借助第三方框架提升效率

为了减少重复造轮子的工作,我们可以使用成熟的 CSS 框架如 Bootstrap,它提供了一系列预定义的类名和组件,快速搭建美观一致的 UI。

html 复制代码
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">

常用类名说明:

  • .container:固定宽度的容器;
  • .table:基础表格样式;
  • .table-striped:带斑马纹的表格;
  • .btn.form-control 等:表单和按钮控件。

使用如 .container.table 等类名,我们可以快速搭建一个美观且一致的 UI:

html 复制代码
<body>
    <!-- 页面容器 -->
    <div class="container">
        <h1 class="text-center">我的好友列表</h1>

        <!-- 按钮示例 -->
        <p class="text-center">
            <button class="btn btn-primary">添加好友</button>
        </p>

        <!-- 表格示例 -->
        <table class="table table-striped table-bordered">
            <thead>
                <tr>
                    <th>姓名</th>
                    <th>家乡</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>张三</td>
                    <td>北京</td>
                </tr>
                <tr>
                    <td>李四</td>
                    <td>上海</td>
                </tr>
            </tbody>
        </table>
    </div>

</body>

无需从头写样式,让开发者聚焦业务本身。


四、Vue:声明式开发,关注业务逻辑

Vue 是一个轻量、渐进式的前端框架,核心特点是 响应式数据绑定声明式编程,非常适合中小型项目快速开发。

示例代码:

html 复制代码
<div id="app">
  <h1>{{ title }}</h1>
  <table class="table table-striped">
    <thead>
      <tr><th>姓名</th><th>家乡</th></tr>
    </thead>
    <tbody>
      <tr v-for="friend in friends">
        <td>{{ friend.name }}</td>
        <td>{{ friend.hometown }}</td>
      </tr>
    </tbody>
  </table>
</div>
js 复制代码
const App = {
  data() {
    return {
      title: 'ECUT 未来之星',
      friends: [
        { name: "张三", hometown: "宜春" },
        { name: "李四", hometown: "吉安" }
      ]
    };
  }
};

Vue.createApp(App).mount('#app');

优势:

  1. 响应式数据绑定:数据变化自动触发视图更新;
  2. 指令系统 :如 v-forv-ifv-model 等简化模板逻辑;
  3. 组件化设计:支持构建可复用的 UI 组件;
  4. 生命周期钩子:控制组件创建、更新、销毁等过程;
  5. 开箱即用:官方提供了 Vue Router、Vuex 等配套工具,满足中大型应用需求。

五、React:构建大型应用的利器

React 是由 Facebook 推出的组件化前端框架,擅长构建复杂的用户界面。其核心是 组件状态管理

初始化项目:

bash 复制代码
npm create vite@latest my-react-app
cd my-react-app
npm install
npm run dev

组件示例:

jsx 复制代码
function App() {
  const friends = [
    { name: "王五", hometown: "广州" },
    { name: "赵六", hometown: "深圳" }
  ];

  return (
    <div className="container">
      <h1>React 示例</h1>
      <table className="table table-striped">
        <thead>
          <tr><th>姓名</th><th>家乡</th></tr>
        </thead>
        <tbody>
          {friends.map((friend, index) => (
            <tr key={index}>
              <td>{friend.name}</td>
              <td>{friend.hometown}</td>
            </tr>
          ))}
        </tbody>
      </table>
    </div>
  );
}

React 的特点:

  1. JSX 语法:允许在 JavaScript 中直接书写类似 HTML 的结构;
  2. 虚拟 DOM 技术:高效比较差异,减少真实 DOM 操作;
  3. 组件驱动开发:UI 被拆分为多个独立、可复用的组件;
  4. 强大的生态系统:React Router、Redux、Context API、Hooks 等支撑大型应用;
  5. 跨平台能力:React Native 可用于移动端开发。

六、总结:为何选择现代框架

特性 原生 JS Vue React
编程方式 命令式 声明式 声明式
DOM 操作 手动 自动绑定数据 虚拟 DOM 自动更新
学习曲线 简单 简单易学 需要了解 JSX、状态管理等
适用场景 小项目、练习 中小型项目、快速开发 中大型项目、复杂逻辑
社区和生态 基础 丰富 超丰富

现代框架的核心理念:

  • 远离底层 API :不再关注 innerHTMLaddEventListener
  • 聚焦业务逻辑:将精力放在"如何组织数据"、"如何划分组件"、"如何处理状态"等更高层次的问题上;
  • 组件化 + 响应式:提高代码复用率、降低维护成本;
  • 工程化思维:模块化、工程化、可测试性强,适应团队协作和持续集成。

结语

从前端开发的演进历程来看,从原生 JS 到 Vue 和 React,不仅是工具的升级,更是开发思维和工程方法的跃迁。现代框架帮助我们摆脱繁琐的 DOM 操作,转而专注于构建高质量、可维护、可扩展的 Web 应用。无论你是刚入门的新手,还是希望转型的前端工程师,掌握 Vue 或 React 都是迈向职业成长的重要一步。

相关推荐
爱学习的茄子7 分钟前
AI驱动的单词学习应用:从图片识别到语音合成的完整实现
前端·深度学习·react.js
撰卢34 分钟前
如何提高网站加载速度速度
前端·javascript·css·html
10年前端老司机39 分钟前
在React项目中如何封装一个可扩展,复用性强的组件
前端·javascript·react.js
sophie旭1 小时前
《深入浅出react开发指南》总结之 10.1 React运行时总览
前端·react.js·源码阅读
sophister1 小时前
Flex 布局中容易踩的那些坑,你踩过几个?
前端·css·html
轻语呢喃1 小时前
React智能前端:从零开始写的图片分析页面实战
前端·react.js·aigc
MiyueFE1 小时前
每个前端开发者都应该掌握的几个 ReactJS 概念
前端·react.js
用户26124583401612 小时前
vue学习路线(11.watch对比computed)
前端·vue.js
旧时光_2 小时前
Zustand 状态管理库完全指南 - 进阶篇
前端·react.js
阑梦清川2 小时前
Java后端项目前端基础Vue(二)
vue.js