模块加载在没有Node的Apache环境中响应组件

时间:2017-02-16 17:02:55

标签: javascript node.js reactjs

我目前正致力于为网站添加基于React的部分。数据需要实时更新,而不需要使用jQuery等代码复杂化。我使用React与pub / sub系统一起使用Node和Socket.io来检索更新,但是,Node仅用于更新数据。 Node不会访问React页面,而是Apache访问。我在开发版本中包含了React,ReactDOM和独立版本的Babel。

所以,我的问题是如何将我的React组件分离成.js文件并在Node中需要它们?

我查看了RequireJS和Browserify,但他们似乎并没有完成任务。我需要一种可以编辑的方法,并在开发环境中将它们分开包含,但是它们需要在实时自动化上进行简化和缩小。我们的构建过程已经使用了Jenkins,所以如果有一个可以挂钩Jenkins的解决方案,那将是最佳的。

2 个答案:

答案 0 :(得分:0)

我建议使用webpack捆绑您的JavaScript代码,这是一个基于Node.js的构建工具,可以让您轻松地连接和缩小代码。您在项目根目录中创建webpack.config.js文件,并使用 node webpack 在Jenkins构建代理程序上运行它。

答案 1 :(得分:0)

正如Patrick Hund已经建议的那样,你应该使用模块捆绑器。有几个选项,但我使用 - 像Patrick Hund - webpack

webpack实际上做了什么?

它加载您指定的所有文件 - 这些文件大多是项目中所需的文件 - 并将它们捆绑到一个文件中。

如何使用?

您需要一个配置文件,其中主要指定三件事:

  • 条目文件(层次结构的根目录)
  • 输出文件(捆绑文件)
  • 系统中所需文件的加载程序。

您还可以指定插件,以启用例如热模块替换,启动捆绑过程的仪表板等。但这不是强制性的,要启动,您可能不需要此。

太多了?

现在,如果您不得不在每次更改时不断重新收集所有文件,那么您可能会认为这对开发来说太多了。但是它附带了一些预先构建的脚本,其中包含一个<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.chandan.halo.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> 选项,可以为您完成此操作,更方便的是热模块替换,它可以在每次更改时更新浏览器,而无需刷新它。

对于生产环境,您可以创建另一个配置文件,您可以在其中保留所需的内容(例如,不建议将Hot Module Replacement用于生产),就是这样。

所以这一切都归结为这些配置文件。你可以看看this one,这是我以前理解的,因为它被缩小到我刚刚告诉你的内容。

要将它集成到您​​的项目中,您需要匹配加载js脚本和输出文件的watch文件,并且出于开发目的,您可能希望使用开发服务器,它可以是webpack-dev-server