当前位置: 首页 > 面试题库 >

反应真的需要前端ENV上的nodeJS吗?

伍嘉
2023-03-14
问题内容

我是新来的。我想举一个自己的例子。

大多数教程都提供以下内容:

app.js

var React = require('react');
var ReactDOM = require('react-dom');
var reactElement = React.createElement('h1', { className: 'header' },
'This is React');
ReactDOM.render(reactElement, document.getElementById('react-
application'));

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge, chrome=1" />
    <title>Snapterest</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/
    bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
    <div id="react-application">
        I am about to learn the essentials of React.js.
    </div>
    <script src="./app.js"></script>
</body>
</html>

问题在于 示例需要nodeJS(用于requeir()部分),npm install和npm start ..所有这些。

我可以像这样没有nodeJS来做不同的事情

app.js

var reactElement = React.createElement('h1', { className: 'header' },
'This is React');
ReactDOM.render(reactElement, document.getElementById('react-application'));

index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge, chrome=1" />
    <title>Snapterest</title>

     <script src=" /react-0.14.8.min.js"></script>
 <script src=" /react-dom-0.14.8.min.js"></script>


</head>
<body>
    <div id="react-application">
     dsf
    </div>
    <script src="./app.js"></script>
</body>
</html>

在此示例中,我使用cdn来导入nodejs在npm安装阶段应导入的react的依赖项。问题是-
哪个更好?我可以只使用CDN而不完全使用nodejs吗?让nodejs和npm模块(或bower ..)具有react东西更正确吗?

谢谢


问题答案:

标题中提出的问题的答案为 否,您不需要node.js在客户端上使用React

实际上,您给出的第二个示例就是这样做的-在客户端使用React,而无需提及node.js。

也就是说,有两种不同的使用node.js的方式,这些方式在构建基于React的应用程序时非常有用。

使用基于node.js的构建工具像
browserify
或的WebPack捆绑您的客户端代码在一个干净,整洁的软件包,你接发球给客户端。

例如,在我正在从事的项目中,我使用browserify来构建一个保存的Javascript文件,public/js/bundle.js该文件通过一个普通的旧<script>标签包含在其中,index.html并且全部由Apache提供。这个捆绑包包含我的应用程序代码(包括一些React组件)以及我的应用程序代码的所有依赖关系(包括reactreact- dom,其中包括)。客户端的主要好处是减少了页面请求的数量和所需的带宽(因为我可以使用UglifyJS来缩小整个包)。对于开发人员来说,主要的好处是您可以使用Babel这样的工具来编写.jsx代码,而不必使用普通的Javascript-
这极大地提高了生产率。

在node.js中编写HTTP服务器

近年来,关于使用node.js构建整个应用程序(客户端
服务器端)的讨论很多。这里的主要好处是代码重用:假设您编写了一个对日期有幻想的库。如果要用Javascript编写客户端代码,用PHP编写服务器端代码,则必须重写该库。如果双方都使用node.js,则只需执行一次。

在node.js中编写一个HTTP Server并将其与React应用程序集成

用React编写的单页面应用程序(SPA)有一个问题:在客户端接收并执行Javascript代码之前,页面不会呈现。这意味着不执行Javascript的客户端将看不到任何内容,例如Google的网络抓取工具。因此,如果要为页面建立索引,则需要找出某种方法来在客户端发出请求时为完全渲染的页面提供服务。解决方案是服务器端React渲染。这是一个极具挑战性的主题,如果您对此感兴趣,我鼓励您做一些谷歌搜索。

现在关于您的问题: 哪个更好? 与往常一样,这取决于您的需求。

我的项目之一是一个旧版PHP应用程序,我在其中重写了一些前端代码以使用React组件。我需要一个node.js
HTTP服务器或服务器端渲染吗?一点都不。但是我正在使用Babel和Browserify来简化我作为开发人员的生活。

我的另一个个人项目是使用名为Next.js的框架编写的小型SPA,该框架非常先进,并结合了服务器端渲染。我当然可以使用其他技术来编写该项目,但我确实喜欢它提供的客户端和服务器之间的共享代码库。



 类似资料:
  • 问题内容: 我在阅读AngularJS附带的精简版jQuery。但是,我不断听到有关谈论Angular和jQuery的人们的参考。我什至检查了ng- grid 并注意到它说: AngularUI团队用AngularJS和jQuery编写的Angular Data Grid 因此,如果我确实在需要jQuery的时候才使用Angular,那么AngularJS附带的版本又没有提供什么呢? 问题答案:

  • 我有过 在我package.json 然后我运行命令 接下来,在我的React store中导入“fs”模块 但是当我尝试使用fs时 除了构造函数和其他一些方法之外,我没有看到其他方法。我没有看到createReadStream方法或任何其他文件操作方法。 有人知道怎么了吗?(使用网页)并可根据要求提供更多信息,但我已经走到了这一步。。。 ps:为什么我可以npm I fs——当我在其他帖子上读到

  • 问题内容: 我真的需要做mysql_close()吗?为什么或者为什么不? 即使我不执行mysql_close,也有触发器会在mysql_connect之后关闭链接吗? 问题答案: 在大多数情况下,调用不会对性能产生任何影响。但是,关闭程序不再使用的资源(文件句柄,打开的套接字,数据库连接等)始终是一个好习惯。 如果您正在做可能要花费几秒钟的操作,例如从REST API读取和解析数据,则尤其如此。

  • 我有一个Flink应用程序,它从Kafka中读取一些事件,从MySQL中丰富数据,使用窗口函数缓冲数据,并将窗口内的数据写入HBase。我目前已经启用了检查点,但事实证明,检查点非常昂贵,随着时间的推移,它花费的时间越来越长,并影响我的作业延迟(Kafka摄取率落后)。如果我想办法使HBase写操作幂等,是否有充分的理由使用检查点?我可以将内部kafka消费客户端配置为每隔一段时间提交一次,对吗?

  • 问题内容: 因此,当您声明一个组件以小写首字母作为反应时,该组件不会显示,并且不会引发错误。当您将组件名称大写时,它确实起作用。 这样实现的是什么?为了避免与现有的html元素冲突,还是这是一个错误? 当我更改为时,它可以工作: 问题答案: 从一些反应发行说明 JSX标记名称约定(小写字母名称是指内置组件,大写字母名称是指自定义组件)。

  • 最近我创建了一个flask应用程序,并决定在应用程序文件夹外添加一个测试文件夹(应用程序文件夹和测试文件夹都在同一个目录中)。我要测试的所有实现都包含在app文件夹中创建的包和模块中。 在两个文件夹中都有_init__u; py.py文件,正如预期的那样工作正常。但是,当我从测试文件夹中删除_uinit__uuu.py文件时,我开始体验moduleImportError。PythonDoc说,Py

  • 我没有在现实世界的Web项目上工作。在大学里,我们使用Servlets和Spring进行Java Web开发。在这两个项目中,我们都得到了已经配置的web.xml文件,我们只对它们进行了微小的更改。现在我需要从头开始构建一个 Web 应用。我在Eclipse中创建了新的Servlet类,它没有自动创建任何web.xml。然后我用谷歌搜索,我从几个资源中读到,web.xml并不是真正需要的,但是这个

  • 今天,我们从为前端应用程序购买了EV ssl证书,一切正常。但是由于我们在后端没有ssl证书,这是否意味着我们从前端传递到后端的数据将是未加密的? 前端和后端服务器都需要ssl证书吗? 我们的后端只有服务器向我们的前端应用程序请求,没有其他客户端连接到我们的后端?那么,可以为后端使用自签名或廉价的SSL证书吗? 还是从购买另一个ssl证书?(有点贵) 我已经讨论了几个堆栈溢出问题,似乎建议在两个服