草庐IT

javascript - JavaScript Minification 不会伤害开源吗?

coder 2024-07-28 原文

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




10年前关闭。




这些天来,网络上有很多关于缩小 JavaScript 的重要性。速度是最重要的。

但是缩小不是对开源的开放性不利吗?

JS(相对于 flash 和后端)的一大优点是源代码就在那里,可供其他开发人员查看,他们会认为“嘿,看起来不错,我想知道他们是如何做过某事”。 JS源码大家都可以看到,开发者可以借鉴、改编,在自己的项目中使用类似的JS。

缩小 JS 使其不可读。它阻止了外部开发人员阅读代码,因此取消了横向共享和学习。

显然会有一些人希望缩小他们的 JS 以试图保留他们的知识产权。人们破坏开源社区的创造力总是一种耻辱,但这在某种程度上是可以理解的,而且肯定不会停止。

但是对于我们其他开发人员——我们生活中每天都在使用开源的人——JS 缩小阻碍了我们的发展。它使我们无法利用网络的开放性。它关闭了创意共享的可能性。

我只关注一些被缩小的东西——库、插件等(也许在将 JS 提供给移动设备时)。但是对于使您的个人网站个性化的定制代码,缩小您的代码确实没有必要。它可能会节省几毫秒的下载时间,但保持打开状态不会有太大变化。 Web 上的大多数网站可能只有不到 20KB 的自定义 JS 代码,而缩小它的好处确实很小。几毫秒真的与保持 JS 代码开放、可读和可供他人使用的好处相比吗?

对于有更多 JS 的网站,也许我们可以开始开发一个基于开源的标准,以便开发人员可以输入稍微不同的 URL 来提供未压缩的代码。如果缩小的代码位于 domain.com/script.min.js,让我们让未缩小的代码始终在 domain.com/script.js 或/script.full.js 可用。还是有其他建议?

我真的在网上找不到任何关于这个问题的东西。一切都在另一边——插入缩小。这让我很震惊。这让我觉得,作为开发人员,我们已经让自己陷入了一种毫无疑问的速度意识形态,而不考虑其他因素。也许,由于意识形态的性质,你们中的一些人读到这篇文章会立即想驳回它并反对它。但是再想一想——微小的速度优势真的值得失去开源创造力吗?我不相信它是。

所以我想我的问题是,关于开源 JavaScript 的争论在哪里?

最佳答案

我很确定大多数(如果不是全部的话)提供缩小版本的开源 JavaScript 库也为开发人员提供了原始源代码。就像分发编译后的二进制文件以供一般使用的开源程序如何将其原始源代码分发给公众一样。

如果您指的是基于每个项目专门为某个项目制作的自定义脚本,那么这些脚本默认情况下不是开源的,除非作者特别引用/包含 FOSS 许可通知。为此,我没有义务提供我的自定义代码的未缩小版本,除非我打算自由分发并许可它。

关于javascript - JavaScript Minification 不会伤害开源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139679/

有关javascript - JavaScript Minification 不会伤害开源吗?的更多相关文章

  1. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  4. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  5. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  6. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

  7. ruby-on-rails - 我将 Rails3 与 tinymce 一起使用。如何呈现用户关闭浏览器javascript然后输入xss? - 2

    我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如

  8. ruby-on-rails - 使用 ApplicationController.renderer.render 从 Controller 外部渲染的 Rails 5 不会在自身上设置变量 - 2

    我正在使用Rails5ApplicationController.renderer.render方法从模型中进行渲染。我需要将一些变量传递给我的布局,这是我使用locals选项完成的;如果直接访问此变量,则该变量在布局中可用,但不能通过self访问。这是我设置渲染的方式html_string=ApplicationController.renderer.render(file:"/#{template_path}/base/show",:formats=>[:pdf,:html],locals:{:@routing_form=>self,:controller_name=>contro

  9. ruby - 使用 Selenium WebDriver 启用/禁用 javascript - 2

    出于某种原因,我必须为Firefox禁用javascript(手动,我们按照提到的步骤执行http://support.mozilla.org/en-US/kb/javascript-settings-for-interactive-web-pages#w_enabling-and-disabling-javascript)。使用Ruby的SeleniumWebDriver如何实现这一点? 最佳答案 是的,这是可能的。而是另一种方式。您首先需要查看链接Selenium::WebDriver::Firefox::Profile#[]=

  10. python - 开源 Twitter 克隆(在 Ruby/Python 中) - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有任何用Ruby或Python编写的生产就绪的开源Twitter克隆?我对功能丰富的实现更感兴趣,而不仅仅是简单的Twitter消息(例如:API、FBconnect、通知等)谢谢!

随机推荐