草庐IT

javascript - 捆绑我的 JS/TS 项目是反模式吗?

coder 2024-07-25 原文

我正在使用 TypeScript 在 Angular 2 中开发一个项目,并试图确定我的工作流程。

昨天,我看到了this video来自 Guy Bedford 关于包管理的内容。在其中,他提到了他认为捆绑是反模式的事实。

我看到过类似的关于不再在 angular-university guide 上进行捆绑的提及。 .

从观看视频后我读到的内容来看,在我看来,捆绑是反模式的原因是 HTTP2 allows multiple responses per request , 并行发送。这似乎非常有用,因为对服务器的单个请求可以在单个文件中返回整个 Angular 应用程序。

HTTP2 支持现在是否普遍到足以过渡到非捆绑应用程序?有什么优点和缺点?

编辑 #2:试图使问题更加集中

最佳答案

反模式是一个很强的术语。它也有点模糊:我们都对它的含义有这种直觉,但很容易迷失在争论有问题的实践 x 是否实际上是反模式的杂草中。

因此,我不想在图书馆作者的演讲中过多地阅读副手的评论,而是想提出反对捆绑的理由。这些观点应该没有争议(如果有人不同意,请在评论中告诉我,我会进行编辑)。

开始前的重要警告:我捆绑。 一般来说,我是捆绑的粉丝,这对我所做的工作来说非常有意义,而且它通常是向前迈出的一步。它有很多积极的方面,我最喜欢的是更好的闭包编译器/汇总压缩。但是对于这个答案的其余部分,我只关注潜在的缺陷。

  1. 捆绑可能导致微不足道的缓存未命中。对应用的任何部分进行的任何更改都会使浏览器缓存失效。

  2. 捆绑会使利用公共(public)库的缓存变得更加困难。如果您使用与其他人相同的来自同一 cdn 的相同版本的 jquery,那么您的用户很可能永远不必为此访问您的服务器。

  3. 捆绑意味着您通常会同时加载所有 JavaScript。有一些异常(exception)情况,例如 webpack 代码拆分,但这会使您的构建管道与分类文件相比变得复杂。

  4. 捆绑意味着失去 HTTP/2 并行处理多个 Assets 请求的能力。这可能与您的用例相关,也可能不相关。如果您在 FooCorp 构建内部 Assets ,其中每个人仍然被 IT 锁定在 IE 8 上,因为这个论点没有说服力。出于同样的原因,你的大部分客户群都是中国人。对于世界上的大多数,HTTP/2 现在是 widely supported ( Chrome 、火狐、边缘、iO​​S Safari )。这意味着您正在为您的大多数用户提供可能低于标准的体验。

关于javascript - 捆绑我的 JS/TS 项目是反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38631803/

有关javascript - 捆绑我的 JS/TS 项目是反模式吗?的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  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 - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  5. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  8. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  9. ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure' - 2

    我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a

  10. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

随机推荐