如何使用Sprockets生成自定义脚本,而不是普通Rails资产管道的一部分?

问题描述 投票:-1回答:1

在Rails中,我想动态生成一些JavaScript并将其上传到S3。首先,我需要生成它。我需要这样的东西:

Sprockets.generateFile(“assets / application.js”,{name:“John”,年龄:35})

哪会产生如下字符串:

(function() {
  var data = {name: "John", age: 35};
  function thisComesFromMyAssets() {
    ...
  }
 function moreStuff() {
 }
})()

然后我可以把那个字符串上传到S3。

我正在努力阅读Sprockets和资产管道文档,以弄清楚如何实际执行此操作。有人比较熟悉吗?

ruby-on-rails ruby-on-rails-5 asset-pipeline
1个回答
0
投票

首先确保您要用于此任务的资产管道:

  1. 您可以通过在提供给该用户的html模板中呈现内联js或使用像“gon”这样的gem来将用户数据传递给js,并且只在编译的js中保留公共代码
  2. 在生成+上传+服务的所有麻烦之前,你是否尝试像常规的rails动作一样动态地提供这些文件? JS只是文本,可以通过ERB轻松呈现(action_name.js.erb)
  3. 如果您的任务是制作许多带有用户数据的独立js文件 - 最好在资产管道之外(rake / activejob / PORO服务),因为在这种情况下,这些文件与您的部署没有直接关系。您还应该处理版本控制,因为用户可能有过时的数据。
  4. 最后,如果任务真的在制作带有一些半动态数据的单个文件 - 资产管道将处理finename.js.erb,但请记住,它将在部署时编译,导致相应的数据时代问题
© www.soinside.com 2019 - 2024. All rights reserved.