在生产中,就像在较早版本的Rails中一样,我们通常首先预编译我们的assets资源 ,以便在为公共assets资源 提供服务时性能更好.但是在rails 7中,由于默认配置表明您应该使用来自assets资源 管道的所有css、字体和自定义js文件,以及使用导入映射的外部js库,那么rails 7在生产中的预编译过程是什么?
在生产中,就像在较早版本的Rails中一样,我们通常首先预编译我们的assets资源 ,以便在为公共assets资源 提供服务时性能更好.但是在rails 7中,由于默认配置表明您应该使用来自assets资源 管道的所有css、字体和自定义js文件,以及使用导入映射的外部js库,那么rails 7在生产中的预编译过程是什么?
什么都没变.开发中使用assets资源 管道(又名sprockets
或propshaft
)为任何本地assets资源 提供服务,包括import-maps
.当您进行更改时,assets资源 是compiled个动态assets资源 ,并且当您刷新页面时会为新assets资源 提供服务.这个过程需要时间、内存和CPU周期--这是您不想在生产中浪费的东西.
解决办法是提前把一切都汇编好--precompile.所有内容都会进入public/assets
号目录.然后,像nginx
一样,Web服务器被配置为服务从public/assets/*
到/assets/*
的任何请求.通过这种方式,可以快速处理assets资源 ,您的应用程序服务器不需要关心它们.
使用资源管道中的所有css、字体和自定义js文件.
在我们拥有sprockets
和webpacker
之前,有两条assets资源 管线线做了同样的事情.两个assets资源 URL /assets
和/packs
、两个编译过程、两个公共目录public/assets
和public/packs
.
在rails 7年,一切都与sprockets
挂钩.任何新的构建工具,如tailwindcss
,都可以处理assets资源 并将它们放在app/assets/builds
中,在app/assets/builds
中链轮可以执行以前的工作--编译并在开发中服务,为生产预编译.