来自webpacker gem:
Webpacker 使使用 JavaScript 预处理器和 bundler Webpack 2.x.x+ 用于在 Rails 中管理类似应用程序的 JavaScript。 它与资产管道共存,作为 Webpack 是类似应用程序的 JavaScript,而不是图像、CSS 甚至 JavaScript。 洒水(全部继续存在于应用/资产中(。
但是,可以将Webpacker用于CSS,图像和字体 资产也是如此,在这种情况下,您甚至可能不需要该资产 管道。这在专门使用 基于组件的 JavaScript 框架。
为什么使用Webpacker作为资产对于基于组件的框架更相关?如果我使用 React,从 Asset pipepline 和 Webpack 获取资产有什么区别?
在严格持有资产方面 - 我认为没有太大区别。 但是,我最近将我们的一个应用程序从资产管道迁移到 webpack - 我将尝试在下面分享一些关于为什么 webpack 有益的学习。
- 尽管 Rails 是一个快速移动和动态的 Web 框架,但使用最新的前端工具和默认的 rails 资产处理程序是很困难的。 使用捆绑器管理JS库是一种痛苦。Webpack 使维护第三方库变得相当容易。
- 使用 webpack 的页面加载速度比默认资产管道快,因为它在每次刷新期间默认编译文件。
- Rails 目录结构不能足够清楚地区分应用程序的前端和后端。 单页应用程序的曙光意味着将应用程序的客户端标识为一个单独的实体,而不是后端的某个插件,我们认为这是非常重要的。 前端组件不仅仅是插件。 他们是他们自己的存在。
- 将资产与视图分开很奇怪 - 视图和资产创建了一个存在,应该坐在一个地方,Rails 视图更像是控制器上的背包。
- 我们的应用程序前端的热重载非常棒。这节省了大量的开发时间。
然而
- 我们发现,随着配置的不断更改,它可能会不稳定,因此不友好。
- 它不会像链轮那样在请求时自动运行。 例如,如果您使用的是 webpacker,则需要运行 webpacker 开发服务器,该服务器首先查找文件更改,然后进行编译,然后才能重新加载您的页面。
事实上,webpack 主要关注的是 js 而不是 jpeg、pngs、svgs 等,这使得比较 rails 资产管道和 webpack 有点令人困惑......
不确定是否确实如此,但我希望这有所帮助!