购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 用Webpacker给Rails项目添加React

问题

Rails框架在交互式JavaScript应用程序开始流行之前就被创建出来了。Rails遵循一种更为传统的Web应用程序开发模型,它在服务器上生成HTML页面以响应浏览器请求。但有时你可能想要在Rails应用程序中包含更多的交互元素。

解决方案

你可以使用Webpacker库将React应用程序插入Rails生成的网页中。我们先来生成一个包含Webpacker的Rails应用程序,看看它是如何工作的:

这个命令将在 my-app 目录中创建一个Rails应用程序,该目录已经预先做了运行Webpacker服务器的配置。在启动应用程序之前,我们先生成一个示例页面(controller):

这个命令会在 app/views/example/index.html.erb 中生成这样的模板页面:

接下来,我们创建一个简单的React应用程序,用来插入这个页面。Rails把Webpacker程序以包的形式插入进来,其中包(pack)是指Rails中的小型JavaScript代码包(bundle)。我们将在 app/javascript/packs/counter.js 中创建一个包含简单计数器组件的新包:

每当用户单击按钮时,该应用程序就会更新计数器。

我们现在可以通过向模板页面添加一行代码来将这个包插入网页中:

最后,我们可以在端口3000上运行Rails服务器:

在编写本书时,启动Rails服务器要求你安装yarn包管理器。你可以使用npm install-g yarn来全局安装yarn。

你可以在浏览器中打开 http://localhost:3000/example/index.html 页面,如图1-9所示。

图1-9:在 http://localhost:3000/example/index.html 内嵌入的React应用程序

讨论

你可能已经猜到了,Webpacker在后台使用Webpack来转译代码,你可以用 app/config/webpacker.yml 配置文件来配置它。

Webpacker是和Rails一起使用的。如果Rails应用程序需要一些额外的交互功能,那么可以考虑使用它。

你可以在Webpacker GitHub网站( https://oreil.ly/aYZ0h )上找到更多关于Webpacker的信息。

你可以从GitHub网站( https://oreil.ly/H3q1F )下载本解决方案的源代码。 JV9InJtsPcieplPtzZWeUPoIE41vNtFxkDAPWXu5W1fDW84CrAaFzIMJKm6bC2Fq

点击中间区域
呼出菜单
上一章
目录
下一章
×