会议目前在matrix.org平台上举行。
会议分钟可以在会议上找到。jquery.org。
最新版本的jQuery可在https://jquery.com/download/上找到。
| 版本 | 分支 | 地位 |
|---|---|---|
| 4.x | 主要的 | beta |
| 3.x | 3.x稳定 | 积极的 |
| 2.x | 2.x稳定 | 不活动 |
| 1.x | 1.x稳定 | 不活动 |
一旦发布4.0.0最终,3.x分支将继续在有限的时间内接收更新。不再支持2.x和1.x分支。
Herodevs可以提供对非活动版本的商业支持。
了解有关我们版本支持的更多信息。
本着开源软件开发的精神,jQuery总是鼓励社区法规贡献。为了帮助您入门,在进入编写代码之前,请务必详细阅读这些重要的贡献指南:
GitHub问题/PR通常通过gh-NUMBER引用,其中NUMBER是问题/PR的数值ID。您可以在https://github.com/jquery/jquery/issues/NUMBER下找到此类问题/PR。
Jquery过去使用了其他基于TRAC的错误跟踪器,在Bugs.jquery.com下可用。它仅在读取模式下保存,以便可以参考过去的讨论。当jQuery源引用其中一个问题时,它使用模式trac-NUMBER ,其中NUMBER是问题的数值ID。您可以根据https://bugs.jquery.com/ticket/NUMBER找到这样的问题。
要构建jQuery,您需要拥有最新的node.js/npm和git 1.7或更高版本。较早的版本可能会起作用,但不受支持。
对于Windows,您必须下载并安装git and node.js。
MacOS用户应安装自制。安装了自制酿造后,运行brew install git以安装Git,然后brew install node安装Node.js。
Linux/BSD用户应使用其适当的软件包经理安装git和node.js,或者如果您这样摆动,则从源构建。轻松。
首先,克隆jQuery Git Repo。
然后,输入jQuery目录,安装依赖项并运行构建脚本:
cd jquery
npm install
npm run build jQuery的构建版本将放置在dist/ DIRECTORY,以及缩小的副本和关联的地图文件。
要构建JQuery的所有变体,请运行以下命令:
npm run build:all这将创建JQUERY在版本中包含的所有变体,包括jquery.js , jquery.slim.js , jquery.module.js和jquery.slim.module.js沿其相关的缩小文件和源说。
jquery.module.js and jquery.slim.module.js是eCMAScript模块,将导出jQuery和$作为命名出口的eCmascript模块放置在dist-module/ Directory,而不是dist/ Directory中。
构建脚本可用于创建jQuery的自定义版本,该版本仅包括您需要的模块。
除core外,任何模块都可以排除在外。当排除selector时,未将其删除,而是用本机querySelectorAll周围的小包装替换(有关更多信息,请参见下文)。
要查看构建脚本可用选项的完整列表,请运行以下内容:
npm run build -- --help要排除模块,请将其相对于src文件夹(没有.js扩展名)的路径传递到--exclude选项。当使用--include选项时,默认包含将被删除,并且仅使用这些模块创建构建。
一些可以排除或包括的示例模块是:
AJAX :所有AJAX功能: $.ajax() , $.get() , $.post() , $.ajaxSetup() ,. .load() ,transports和ajax event shorthands,例如.ajaxStart() 。
AJAX/XHR :仅XMLHTTPREQUEST AJAX运输。
ajax/脚本: <script> Ajax仅运输;用于检索脚本。
AJAX/JSONP :仅JSONP AJAX运输;取决于Ajax/脚本传输。
CSS : .css()方法。还取决于CSS(包括效果,维度和偏移)。
CSS/showHide :non-Animated .show() ,. .hide()和.toggle() ;如果您使用类或explicit .css()调用来设置display属性,则可以排除。还删除了效果模块。
弃用:记录为弃用但尚未删除的方法。
尺寸: .width()和.height()方法,包括inner-和outer-变化。
效果: .animate()方法及其速记,例如.slideUp()或.hide("slow") 。
事件: .on()和.off()方法和所有事件功能。
事件/触发器: .trigger()和.triggerHandler()方法。
偏移: .offset() ,. .position() ,. .offsetParent() ,. .scrollLeft()和.scrollTop()方法。
wrap : .wrap() ,. .wrapAll() ,. .wrapInner()和.unwrap()方法。
核心/准备就绪:如果将脚本放置在身体末端,则排除现成的模块。与jQuery()绑定的任何现成回调都将立即被调用。但是, jQuery(document).ready()将不是一个函数,并且不会触发类似的.on("ready", ...) 。
延期:排除jQuery.deferred。这也排除了所有依赖于延期的模块,包括AJAX ,效果和队列,但用Core/Ready-No-No deferred代替Core/Ready 。
出口/全局:排除窗口的全局jQuery变量($和jQuery)的附件。
出口/AMD :排除AMD定义。
选择器:完整的jQuery选择器引擎。当排除此模块时,它将用基于浏览器的querySelectorAll方法替换为基本的选择器引擎,该方法不支持JQuery Selector扩展或增强的语义。有关详细信息,请参见Selector-native.js文件。
注意:不包括完整的selector模块还将排除所有jQuery Selector扩展名(例如effects/animatedSelector和css/hiddenVisibleSelectors )。
您可以为jQuery的AMD定义设置模块名称。默认情况下,它设置为“ jQuery”,它可以在插件和第三方库中效果很好,但是您可能想更改此插件。将其传递到--amd参数:
npm run build -- --amd= " custom-name "或者,要匿名定义,请将名称留为空白。
npm run build -- --amd构建jQuery文件的默认名称是jquery.js ;它位于dist/目录下。可以使用--filename和使用--dir目录更改文件名。 --dir相对于项目根。
npm run build -- --slim --filename= " jquery.slim.js " --dir= " /tmp "这将创建一个苗条的jQuery版本,并将其放在tmp/jquery.slim.js下。
默认情况下,jQuery生成常规脚本JavaScript文件。您还可以使用--esm参数生成eCmascript模块将jQuery导出为默认导出:
npm run build -- --filename=jquery.module.js --esm默认情况下,jQuery取决于全局window 。对于没有一个环境,您可以生成一个工厂构建,该工厂构建可以将功能接受window作为一个可以在外部提供的参数(请参阅已发布的软件包的README以供使用说明)。您可以使用--factory参数生成这样的工厂:
npm run build -- --filename=jquery.factory.js --factory可以将此选项与其他其他人(例如--esm或--slim混合在一起:
npm run build -- --filename=jquery.factory.slim.module.js --factory --esm --slim --dir= " /dist-module " 使用npm run build创建自定义构建,列出要排除的模块。不包括顶级模块还不包括其相应的模块目录。
排除所有AJAX功能:
npm run build -- --exclude=ajax不包括CSS取决于CSS:效果,偏移,尺寸。
npm run build -- --exclude=css排除一堆模块( -e是--exclude的别名):
npm run build -- -e ajax/jsonp -e css -e deprecated -e dimensions -e effects -e offset -e wrap有一个特殊的别名来生成与官方jQuery Slim构建相同配置的构建:
npm run build -- --filename=jquery.slim.js --slim或者,将Slim构建作为ESM模块创建:
npm run build -- --filename=jquery.slim.module.js --slim --esm非官方自定义构建未定期测试。使用它们自身的风险。
确保您有必要的依赖性:
npm install在您工作时开始npm start自动构建jQuery:
npm start使用支持PHP的本地服务器运行单元测试。确保您从根目录运行站点,而不是“测试”目录。无需数据库。预先配置的PHP本地服务器可用于Windows和Mac。以下是一些选择:
由于源代码是由GIT版本控制系统处理的,因此了解使用的某些功能很有用。
如果您想将工作目录清除回上游状态,则可以使用以下命令(请记住,您所工作的所有内容都在这些之后消失了):
git reset --hard upstream/main
git clean -fdx对于功能/主题分支,您应始终使用--rebase标志来git pull ,或者如果您通常要处理许多临时性“要在github pull request”分支“请运行以下以自动化以下操作:
git config branch.autosetuprebase local (有关更多信息,请参见man git-config )
如果您在合并时会得到合并冲突,而不是手动编辑冲突文件,则可以使用功能git mergetool 。即使默认工具xxdiff看起来很糟糕/旧,但它也很有用。
以下是可以在那里使用的一些命令:
Ctrl + Alt + M尽可能多b跳到下一个合并冲突s更改冲突线的顺序u撤消合并left mouse button - 标记一个块成为获胜者middle mouse button - 标记一行成为获胜者Ctrl + S保存Ctrl + Q退出 expect ( numAssertions ) ;
stop ( ) ;
start ( ) ;注意:在此测试套件中,Qunit最终添加了停止/开始的参数,因此可以将启动和停止作为回调传递而不必担心其参数。
ok ( value , [ message ] ) ;
equal ( actual , expected , [ message ] ) ;
notEqual ( actual , expected , [ message ] ) ;
deepEqual ( actual , expected , [ message ] ) ;
notDeepEqual ( actual , expected , [ message ] ) ;
strictEqual ( actual , expected , [ message ] ) ;
notStrictEqual ( actual , expected , [ message ] ) ;
throws ( block , [ expected ] , [ message ] ) ; 请参阅测试/数据/testinit.js。
q ( ... ) ;例子:
q ( "main" , "foo" , "bar" ) ;
=> [ div # main , span # foo , input # bar ] t ( testName , selector , [ "array" , "of" , "ids" ] ) ;例子:
t ( "Check for something" , "//[a]" , [ "foo" , "bar" ] ) ; fireNative ( node , eventType ) ;例子:
fireNative ( jQuery ( "#elem" ) [ 0 ] , "click" ) ; url ( "some/url" ) ;例子:
url ( "index.html" ) ;
=> "data/index.html?10538358428943"
url ( "mock.php?foo=bar" ) ;
=> "data/mock.php?foo=bar&10538358345554"有些测试可能需要标准测试固定装置以外的文档,并且可以在单独的iFrame中运行。实际的测试代码和断言保留在JQuery的主要测试文件中;仅应将最小测试固定标记和设置代码放置在iFrame文件中。
testIframe ( testName , fileName ,
function testCallback (
assert , jQuery , window , document ,
[ additional args ] ) {
...
} ) ;这加载了一个页面,使用文件名构建URL "./data/" + fileName 。 iframed页面通过在startIframeTest( [ additional args ] )的情况下包括“/test/data/iframetest.js”脚本来确定测试中回调何时发生在测试中。通常,这将是在文档准备就绪或window.onload之后进行的。
testCallback接收由testIframe为此测试创建的QUNIT assert对象,然后从iframe中进行全局jQuery , window和document 。如果iframe代码将任何参数传递到startIframeTest ,则遵循document参数。
如果您有任何疑问,请随时在开发的JQuery Core论坛或Libera上的#JQuery中询问。