为什么 Framer 使用 React 来构建网站

阅读 0 分钟

分享

分享

现代网络不仅仅是构建外观良好的内容,而是要创造无缝、引人入胜且能响应每个用户交互的体验。为此,开发者需要超越基础的工具,这些工具不仅性能出色,而且易于管理、扩展,并支持团队协作。

React 已成为构建现代网络最流行的工具之一,目前为全球超过 1440 万个网站提供支持。它在软件工程师中的广泛采用凸显了它赢得的信任以及它提供的高质量开发人员体验。

什么是现代网络

在我们讨论 React 的影响之前,让我们先谈谈我们所说的“现代网络”到底指什么。用纯 HTML 和 CSS 构建的网站可靠且性能良好,为什么不坚持传统方法呢?

在互联网早期,网站主要是静态的页面集合,旨在消费信息。虽然这些传统的基于 HTML 和 CSS 的网站轻巧且性能良好,但它们缺乏当今用户期望的交互性和动态功能。

现代网络已演变为一个动态、交互式生态系统,其中网站是成熟的应用程序。它们与 API 集成,通过流畅高效的动画和过渡吸引用户,提供实时更新,并支持从台式机到手机和平板电脑的各种设备。

传统的 Web 开发方法仍然是当今 Web 开发的重要组成部分,但如果没有现代工具,就很难构建现代 Web 应用程序所需的复杂用户界面和功能。开发人员将花费大量时间开发底层基础设施,并基本上为常见功能重新发明轮子,而不是专注于您的产品。

这就是 React 等工具发挥作用的地方。React 是当今最流行的前端开发库之一,由 Meta 开发,旨在面向现代 Web。它使任何规模的公司的开发人员都能够创建满足甚至超越当前用户期望的高级 Web 应用程序。

改善用户体验

现代网络对具有复杂用户界面的交互式应用程序的需求不断增长,这通常会影响性能。随着网站功能越来越丰富,加载和运行这些应用程序所需的资源可能会显著增加。

这种日益增加的复杂性可能导致更长的加载时间、响应能力下降和潜在的性能问题,尤其是在低端设备或慢速网络连接上。在现代网络上,用户期望在所有平台和设备上获得无缝体验,因此缓慢的加载时间和无响应的界面是不可接受的。

低效的视觉更新通常是性能不佳的原因。在幕后,浏览器会执行一系列步骤,称为“像素管线”,以更新用户界面,其中包括布局计算、绘制元素以及将图层组合到屏幕上。这些步骤对于视觉变化是必要的,但可能占用大量资源,通常会阻塞主线程并在更新期间导致无响应的界面。

React 通过引入虚拟 DOM 的概念来解决这一挑战。虚拟 DOM 是实际 DOM 的轻量级内存表示。React 不会直接更新实际 DOM(这可能会触发低效且不必要的重绘和重排),而是有效地计算实际 DOM 和虚拟 DOM 之间的差异,仅将必要的更改应用于实际 DOM。

这个过程称为协调,它使用 React 的差异算法来查找更新真实 DOM 所需的最少更改。然后,React 通过将 DOM 更新批处理并一次性执行它们来优化更新过程,从而最大限度地减少资源密集型的重排和重绘。

此外,React 提供了一种调度机制,可根据用户交互和设备的渲染能力确定更新的优先级和对齐方式。Framer 利用此机制确保关键更新(例如用户输入)优先,从而保持流畅且响应迅速的用户体验。

虽然 React 无法保证开箱即用的完美性能,但它提供了解决现代 Web 性能挑战所需的工具。通过优化更新过程、优先处理用户交互以及使用虚拟 DOM 和协调等技术,React 使开发人员能够构建复杂的交互式 Web 应用程序,同时保持良好的性能和响应能力。

基于组件的设计

在传统的 Web 开发中,开发人员通常创建大型的、单一的代码文件,其中结构 (HTML)、样式 (CSS) 和功能 (JavaScript) 分离到不同的文件中。

React 采用不同的方法,利用基于组件的架构。组件是封装的、可重用的 UI 片段,可以组合在一起构建复杂的户界面。这些组件使用 JavaScript 函数或类构建,旨在接受输入(props),从而改变组件的行为和显示内容。

复杂的 UI 元素可以通过组合更小的、可重用的组件来构建,使开发人员能够从简单的构建块中构建现代用户界面。这些组件可以轻松地在整个应用程序或多个项目之间共享和重用,从而促进代码重用和一致性。

Framer 充分利用了这种基于组件的范式,它提供了一系列由社区创建的专业制作的现成 React 组件。您可以将这些预构建组件无缝集成到您的项目中,并对其进行自定义以满足您的特定需求,同时受益于 React 基于组件模型的重用性和模块化。

Framer 对 React 组件的使用使您能够利用强大、高质量的 UI 组件,而无需重新发明轮子,从而加速您的开发过程并确保一致、精美的界面和用户体验。

面向未来

React 旨在通过使其易于适应不断变化的用户需求和技术进步来经久耐用。其核心是,React 使用声明式方法构建用户界面。

在传统的命令式编程中,开发人员需要指定操纵 DOM 的逐步说明:

// index.html

<div>
  <input type="text" id="itemInput" placeholder="输入新项目" />
  <button id="addItemButton">添加项目</button>
  <ul id="itemList"></ul>
</div>
// index.js

// 1. 获取按钮元素
const addItemButton = document.getElementById("addItemButton");

// 2. 为按钮元素添加事件监听器
addItemButton.addEventListener("click", {

  // 3. 获取输入和列表元素
  const itemInput = document.getElementById("itemInput");
  const list = document.getElementById("itemList");

  // 4. 创建新的列表项
  const listItem = document.createElement("li");

  // 5. 将内部文本设置为输入的值
  listItem.innerText = itemInput.value;

  // 6. 将列表项添加到列表
  list.appendChild(listItem);

  // 7. 将输入设置为空
  itemInput.value = "";
})

使用声明式编程,例如在 React 中,开发人员描述了在应用程序给定状态下用户界面应有的外观:

// itemList.jsx

import React, { useState } from "react";

function itemList() {

  // 1. 定义状态
  const [items, setItems] = useState([]);
  const [newItem, setNewItem] = useState("");

  // 2. 处理按钮点击
  function handleAddItem() {
    setItems(prevItems => [...prevItems, newItem]);
    setNewItem(""); // 添加后清除输入;
  }

  // 3. 将状态和事件处理程序绑定到 UI
  return (
    <div>
      <input 
          type="text"
          value={newItem}
          onChange={e => setNewItem(e.target.value)}
      />
      <button onClick={handleAddItem}>添加项目</button>
      <ul>
        {items.map((item, index) => <li key={index}>{item}</li>)}
      </ul>
    </div>
  );
}

在 React 中,开发人员定义可重用的组件来表示用户界面的各个部分。这些组件声明它们应该如何根据其输入数据(props)和内部状态进行渲染。当数据发生变化时,React 会有效地更新 DOM 以匹配组件描述的所需状态,而无需显式的 DOM 操作。

这种声明式方法通过允许开发人员专注于描述所需的结果,而不是担心如何实现它的复杂细节来简化开发。它促进了代码重用,因为组件可以轻松共享和组合以构建更复杂的用户界面。这使得添加新功能和调整以满足不断变化的用户需求和 Web 标准变得容易,因为开发人员只需更新组件的所需状态或 props。React 会相应地处理用户界面的高效更新。

Framer 通过充当您的私人 React 开发人员,进一步实现了面向未来。当您在 Framer 画布上可视化设计组件时,它会自动将您的工作转换为专业的、可重用的 React 组件。这种强大的组合使您无需编写任何代码即可创建复杂、模块化的用户界面,同时确保底层代码库遵循最佳实践并与最新的 Web 技术兼容。

Framer 遵循 React 的不可变性原则,以确保可靠性和性能。不可变性意味着一旦创建状态对象,就不能直接修改它。React 不会改变现有状态,而是为每次更新创建一个新的状态对象。这种方法带来了几个好处,使 React 应用程序更可靠和可预测。

通过将状态视为不可变的,Framer 确保一旦状态被渲染,它将保持不变,直到下一次更新。这使得渲染过程高度可靠,因为对于相同的输入(状态),您将始终获得相同的输出(渲染 UI)。这可以防止因无意中修改共享状态对象而导致的意外副作用。

此外,React 和 Framer 都优先考虑向后兼容性,这使它们成为您项目的绝佳长期选择。React 对支持旧功能的承诺意味着开发人员无需为每次更新重写他们的应用程序。相反,更新版本可以无缝集成到现有代码库中,使您的应用程序与最新的 Web 技术保持同步,同时保持坚实的、面向未来的基础。

Framer 确保了多年前编写的旧组件不会在多年后随机失效。这种向后兼容性使您能够构建持久、可扩展的应用程序,而无需频繁重写,从而提供稳定可靠的开发体验。

通过使用 Framer 进行构建,您可以确保您的设计自动面向未来、稳定且可扩展,同时受益于 React 的高效更新和长期支持,而无需编写任何代码。使用 Framer 构建的项目可以随着最新的 Web 趋势和用户需求发展,同时保持与旧功能的兼容性。它简化了在几乎不需要任何努力的情况下保持应用程序更新的过程。

社区支持

选择 React 进行 Web 开发最显著的优势之一是其活跃和支持性的社区。React 拥有一个由开发人员、设计师和公司组成的庞大生态系统,所有人都为它的成长和改进做出了贡献。这确保了 React 始终处于 Web 开发的前沿,并不断随着现代 Web 的需求而发展。

尽管 Framer 的无代码方法不需要用户学习 React,但强大的 React 社区为 Framer 生态系统带来了显著的好处。随着 React 持续普及,越来越多的库、组件和工具在其生态系统内得到开发。

许多这些社区驱动的创新可以无缝集成到 Framer 中,使用户无需编码即可创建更具创意和功能的网站。无论您是想添加复杂的动画、连接到 API 还是实施高级状态管理,很有可能来自 React 生态系统的解决方案可以轻松集成到您的 Framer 项目中。

围绕 React 的活跃社区也有助于其持续改进以及与最新 Web 标准和技术的兼容性。随着 React 的发展,可供 React 开发人员以及 Framer 用户使用的资源和工具也随之发展。

此外,React 社区分享知识和资源意味着 Framer 用户可以从大量资源中受益,即使无需直接学习 React。从特定库和工具的教程和文档到最佳实践和设计模式,社区的努力可以帮助 Framer 用户更好地理解并发挥 React 生态系统在其项目中的全部潜力。

Framer 允许您与 React 生态系统集成,并利用 React 开发人员的技能和专业知识。您可以自由地雇用 React 工程师,他们可以在您现有的 Framer 设计基础上进行构建。Framer 内置的 Monaco 代码编辑器允许 React 开发人员在他们熟悉的环境中扩展您的网站功能,并提供自动完成和类似 IDE 的体验等功能。

由于 React 的流行度和广泛采用,寻找熟练的 React 开发人员是一个简单的过程,确保您可以获得大量人才来帮助您将您的愿景变为现实。

无论您是个人创作者还是大型团队的一员,Framer 都能打破您所能取得成就的上限。您可以从 Framer 的无代码方法开始,随着项目的发展,无缝集成自定义 React 组件、高级逻辑和尖端功能,同时保持可扩展和可维护的代码库。

Framer 不仅使用户无需编码专业知识即可为现代 Web 创建网站,而且还提供了一个面向未来的基础,可以成长和发展,让您突破现代 Web 的可能性界限,而不受封闭生态系统限制的束缚。

结论

选择 Framer 意味着选择 React。通过利用 React,Framer 确保您的设计得到开发人员、设计师和公司组成的庞大社区的支持,所有这些都致力于推动现代 Web 的可能性界限。

无论您是经验丰富的开发人员还是希望将您的想法变为现实的非技术人员,Framer 和 React 都提供了一个面向未来的平台,使您能够创建尖端网站。

Framer 与 React 的集成使您能够无缝集成自定义 React 组件、高级逻辑和尖端功能,所有这些都同时保持可扩展和可维护的代码库,而不是受限于封闭的生态系统。

Framer 的无代码方法让您能够完全专注于构建您的产品。您可以从视觉设计和原型化您的想法开始,随着需求的发展,利用 React 开发人员的技能将您的网站提升到新的水平。

Create a free website with Framer, the website builder loved by startups, designers and agencies.