我对 ES6+(称为现代 JavaScript)比较陌生,但似乎如果我想在浏览器中使用它,我需要 babel-minify或 terser . (开始我以为 Babili 是另一个播放器,但它只是 Babel-Minify 的 the old name)
关于浏览器的 polyfill,有生产就绪的解决方案,如 @babel/polyfill或 Polyfill.io有了它们,就可以向现代浏览器发送更小、更快的代码,因为它们不需要/很少需要 polyfill(快速测试浏览器,动态加载所需的 polyfill,然后启动我们应用程序的主脚本)。因此,使用这些现代技术似乎是绝对合理的。
关于选择 babel-minify 或 terser 我的两难选择。
Webpack 团队 decided to switch到即将推出的 Webpack 5 中的 terser。
Babel 团队制作了一个 comparison table显示 terser 的速度要快得多。
文档 says terser 是以前广泛使用的 uglify-es 的一个分支。
这些让我觉得我必须选择terser。
但另一方面,Babel 仍然需要进行改造(并且可以用于许多有用的事情)。他们很久以前就从事这项业务(虽然 Babili/babel-minify 在 2016 年 8 月 26 日是 first released,所以 uglify 更旧)。他们在 GitHub 上有一个很棒的开发者社区,错误可能会更快地发现和修复。基于这些,在生产安全输出方面,我对他们更加信任。但是我还没有找到任何文章显示 babel-minify 优于 terser 的优点。
问题:
我会选择 terser,因为它看起来很有前途,而且原因如上所述,但是:
babel-minify 而不是 terser?最佳答案
在大多数情况下,使用 terser 还是 babel-minify 并不重要。也就是说,使用 babel-minify 的好处是与 babel 生态系统的其余部分紧密集成。如果您在像 webpack 这样的 bundler 之外或在 CLI 上使用 babel,babel-minify 可以与其他 babel 转换同时运行,因此需要最少的额外配置。 Babel-minify 也可以使用与其余 babel 插件相同的缓存,如果你通过例如 babel-loader 启用了缓存。
最初,创建 babel-minify(然后是 babili)是因为没有与 ES6 或更新版本兼容的 uglify-js 版本,而 babel 已经有了支持新语法的解析器。从那以后,terser 成为了一个很好的选择,并且比 babel-minify 执行得更快,同时仍然支持 ES6(可能是因为它没有绑定(bind)到 babel 的转换管道)。由于这个以及您列出的原因,terser 可能是现在最好的选择。
一个可能的异常(exception)是,如果您使用尚未作为 ECMAScript 的一部分标准化但在 babel 的解析器中受支持的实验性语法(可能使用插件)。在这种情况下,babel-minify 可能被证明是有益的。
关于javascript - babel-minify vs terser(而不是 uglify-js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52661999/
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e
什么是测试格式验证的最佳方法让我们说一个用户名,使用字母数字的正则表达式,但不是纯数字?我一直在我的模型中使用以下验证validates:username,:format=>{:with=>/^[a-z0-9]+[-a-z0-9]*[a-z0-9]+$/i}数字用户名(例如“342”)通过了验证,这是我不想要的。 最佳答案 您想“向前看”一封信:/\A(?=.*[a-z])[a-z\d]+\Z/i 关于ruby-on-rails-Rails格式验证——字母数字,但不是纯数字,我们在Sta
我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.
我发现ruby加载路径是一个数组,很多项目都是这样使用的:$:.unshift(File.expand_path("../../lib",__FILE__))可以将本地文件添加到ruby路径数组的前面,方便我们require或者load。所以,我希望知道为什么我们不使用push将文件添加到数组的末尾? 最佳答案 假设您有一个“date.rb”文件(为什么不呢)并且您想要加载这个文件,而不是标准库日期。如果您使用追加,当您调用require'date'时您的文件将永远不会被加载,因为它位于数组的末尾并且标准日期会在之前找到。因此,如果
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我有一个这样的哈希{55=>{:value=>61,:rating=>-147},89=>{:value=>72,:rating=>-175},78=>{:value=>64,:rating=>-155},84=>{:value=>90,:rating=>-220},95=>{:value=>39,:rating=>-92},46=>{:value=>97,:rating=>-237},52=>{:value=>73,:rating=>-177},64=>{:value=>69,:rating=>-167},86=>{:value=>68,:rating=>-165},53=>{:va