react.js是否适合静态内容驱动网站?


14

我对React.js模型非常满意,因为它使DOM操作变得如此平滑和易于理解。但是我想知道如何将其用于静态的,没有大量文本和图像的静态网站。会妨碍吗?组件状态处于文本KB状态似乎很尴尬。


4
您有一把锤子,正在考虑是否可以将此螺钉用作钉子。通常,与技术相关的决策应遵循“我们的要求是X,Y,Z。哪些技术可以使我们以最低的成本到达那里?”,而不是“我有解决方案,但是请您给出我有问题吗?”。您已经具有React经验的事实对决定有些偏爱,但此决定可以满足什么要求?它会为客户或用户增加什么价值?
阿蒙2015年

4
好吧,这就是我要确定的。React是锤子还是工具箱?它在Facebook所用的那种用例上肯定是出色的,而且我还没有看到任何迹象表明它会在其他用例上受挫。绝对不那么吸引人,但这并不意味着它并不完美。
jiggy 2015年

1
我实际上有相同的问题。我喜欢与React组件有关的所有内容,但对于仅使用几行javascript的内容驱动的网站,它似乎更侧重于HTML-JS耦合,而不是干净的HTML-CSS更加关注状态和事件。我喜欢用另一种模板语言来编写类似React组件的东西。
JeroenVdb 2015年

Answers:


10

知道您想做什么,然后选择技术。

从这个角度来看,React.js似乎对于大多数静态Web来说是过大的。

从React网站:

我们构建React来解决一个问题:使用随时间变化的数据构建大型应用程序。

React是特定钉子的锤子。那将表明它将妨碍创建一个大多数为静态的网站。


2

如文档中所述,生成静态页面是React的预期用途。 React.renderToStaticMarkup

与相似renderToString,不同之处在于它不会创建data-react-idReact内部使用的额外DOM属性(例如)。如果您想将React用作简单的静态页面生成器,这将很有用,因为去除多余的属性可以节省很多字节。

一些人称这里使用“反应过度”。但是,当我想要死掉的东西时,我就毫不费力地杀了它。在这个用例中,react可以做的事情远远超出了必要的事实,这并不是反对React的理由。

但是,如果您要执行异步代码,则可能会出现问题。让我们想象以下内容:

function SchoolClass({classId}) {
   const students = await query("SELECT name FROM student WHERE class = ?", classId);
   return <ul>
      {_.map(students, ({name}) => <li>{name}</li>}
   </ul>
}

但这是行不通的,因为该函数返回Promise而不是React元素,因此与React不兼容。如果您正在设计一个React风格的静态站点生成器框架,那么您可能会允许这样做。但是,由于React专注于Webapp客户端,因此不允许这样做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.