HTML5 Web Workers通常使用importScripts()
依赖外部脚本。这些脚本应该放在Rails 4的哪个位置,以便它们按照资产管道正常缩小,但仍能正常工作?
使用需要解决的资产管道时存在一些问题:
vendor/assets
下)不会由资产管道处理(在Rails 3中不是这种情况)。app/assets
下,则需要将它们包含在application.js
中才能进行处理。但是,工作文件不应包含在组合输出中(即application-[digest].js
)。new Worker('myWorker.js')
。我们如何找到路径?(我尝试了asset_path
,但它没有用。)importScripts()
时需要按名称引用其他文件。我们如何找到加载的路径?答案 0 :(得分:3)
对于来自Google的所有人 - 您都可以使用Inline Workers。
内联员工
如果要动态创建工作脚本,或创建自包含页面而不必创建单独的工作文件,该怎么办?使用Blob(),您可以"内联"通过以字符串形式创建工作程序代码的URL句柄,将您的工作者放在与主逻辑相同的HTML文件中:
var blob = new Blob([
"onmessage = function(e) { postMessage('msg from worker'); }"]);
// Obtain a blob URL reference to our worker 'file'.
var blobURL = window.URL.createObjectURL(blob);
var worker = new Worker(blobURL);
worker.onmessage = function(e) {
// e.data == 'msg from worker'
};
worker.postMessage(); // Start the worker.
答案 1 :(得分:0)
根据惯例(不太受欢迎),它应该转到vendor/assets
。确切地说:
app/
严格限制在此特定应用中的所有内容lib/
所有由您编写但未绑定到您的应用程序的代码(可以或将被提取到单独的gem)vendor/
所有第三方代码