微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 需要使用Browserify和browserify-rails的sprockets预处理文件

我正在使用 browserify-rails并且我正在尝试使用sprockets来预处理包含sprockets指令的文件,因此当我使用browserify需要()它时,它将包含生成的JavaScript.

sprockets指令尝试包含gem js-routes输出,以便允许我从客户端访问Rails路由.

这是我的设置(在app / assets / javascripts中):

system/
  rails_routes.js
application.js

application.js是主文件,它运行应用程序的其余部分.我希望能够做类似的事情

var rr = require("./system/rails_routes.js");

在其中,并访问路由对象.

在system / react_routes.js中,我有以下内容

//= require js-routes

console.log("Does this work?");

(顺便说一句,我配置了js-routes将输出放在一个名为module.exports的对象中,以符合Commonjs模型,如railsware/js-routes#121所述)

唯一的问题是,当我查看生成的bundle时,sprockets指令仍然存在并且尚未展开.

console.log调用也在那里,当我需要()模块时执行.

有没有办法让这个工作?在使用browserify-rails捆绑文件之前让链接器预处理文件的正确方法是什么?

解决方法

我花了无数个小时在我的项目中集成browserify-rails并使JS Routes在这个设置中工作……

我来到下面描述的解决方案是我无法在browserify进入之前让Sprockets预处理我的路由文件的结果.我在browserify-rails和sprockets的源代码中花了很长时间但是却没有没有办法扭转局面,让每个组件按照正确的顺序行事.

所以我的解决方案是使用Rails挂钩在开发环境中“手动”生成完整的JS文件,以便路由始终与最新的Rails路由文件保持同步.然后我假设路由JS文件在推送到生产时将是最新的.

在环境加载中这样做可确保在Sprockets / browserify chime in之前JS文件已准备就绪:对于它们来说,它只是另一个普通的JS文件.

这是包含在development.rb中的代码

Actiondispatch::Reloader.to_prepare do
  Rails.application.reload_routes!

  if JsRoutes.assert_usable_configuration!
    JsRoutes.generate!(Rails.root.join('app/assets/javascripts/routes.js'))
  end
end

您将希望始终重新加载路由,否则生成文件将始终表示Rails路由文件的倒数第二个状态.我从未想过为什么……

在我的application.js中,然后我删除了所有// =指令但jQuery指令(保持全局jQuery可用),并对所有其他模块使用require方法,以便browserify选择我想要包含的文件.

所以这有点hacky,但确实有效.

我有兴趣看看对Sprockets管道有更好了解的人是否可以提供更好的解决方案?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高