草庐IT

javascript - 为什么 Bootstrap 需要 jQuery?

coder 2024-05-06 原文

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.


4年前关闭。


社区在 6 个月前审查了是否重新打开此问题并将其关闭:

原始关闭原因未解决






Improve this question




我用谷歌搜索了这个问题无数次,但从未找到满意的答案。大多数答案似乎只是说“yes, Bootstrap plugins do require jQuery”或“yes, you can use BS without jQuery if you don't use the plugins”。 Bootstrap 对 jQuery 的依赖(如他们的 quick start 中所述)让我觉得这是一个糟糕的设计决策,至少有以下原因:

  • jQuery 是一个庞大而臃肿的框架,现在任何使用 BS 插件的网站都必须下载它。诚然,BS 用户可以使用精简/缩小的构建 (unless they want to use jQuery AJAX),但即使是那些为除了 Bootstrap 之外的任何东西都可能不使用的库增加了不小的加载时间。
  • 随着 Angular 和 React 等框架变得越来越流行(参见 StackOverflow trends),jQuery 总体上似乎最近失宠了。我知道旧的!= 不好,而且 jQuery 在网络上仍然几乎无处不在,但为什么 BS 开发人员选择依赖一个已有十多年历史的框架呢?
  • 只需要求 jQuery 为 <script>在 BS 之前 ed 不允许使用 Webpack 和 SystemJS 等现代捆绑器进行非常清晰的依赖关系解析。同样,他们为什么不使用某种基于模块的依赖项?
  • 但最重要的是,在我看来:为什么 BS 开发人员完全选择依赖 JS 框架?在这个标准兼容浏览器的美好时代,jQuery 的大部分功能现在都可以实现了with vanilla HTML/CSS/JS .我们都知道,在创建任何类型的软件包/库时,我们应该在可行的情况下尝试删除额外的依赖项,因为用户想要的是那个软件包,而不是一堆其他额外的绒毛。

  • 那么,尽管有上述所有情况,BS 开发人员选择依赖 jQuery 有什么原因吗?我可能可以直接向 BS 开发人员询问他们的 GitHub 页面上的问题,但我希望 future 的谷歌用户可以更容易地解决这些问题。
    2019 年 1 月更新:根据 Bootstrap docs , v5 正在删除 jQuery 依赖项,所以希望它很快就会到来。
    2021 年 5 月更新:Bootstrap v5 已发布!正如所 promise 的,这个版本已经放弃了 jQuery,如 release blog post 中所述。 .

    最佳答案

    事后看来,这很容易判断(因为您的做法相当短视),但早在 2011 年,jQuery 并没有被认为是臃肿或过时的,它是提供简单 DOM 访问的主要经过验证的库。因此,在这种情况下,使用 jQuery 是非常有意义的。

    事实上,6 年后可能仍然没有另一个库具有与 jQuery 相同的健壮性和功能集。

    关于javascript - 为什么 Bootstrap 需要 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675234/

    有关javascript - 为什么 Bootstrap 需要 jQuery?的更多相关文章

    1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

      类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

    2. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

      当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

    3. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

      我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

    4. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

      我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

    5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

      我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

    6. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

      为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

    7. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

      我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

    8. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

      我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

    9. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

      它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

    10. ruby - Infinity 和 NaN 的类型是什么? - 2

      我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

    随机推荐