在查看中了解一些 jsfiddle 代码 - 需要一些解释
Understanding some jsfiddle code in looking at - need some explanation
我正在查看 JSFiddle 中有关 Firebase 身份验证的一些代码
http://jsfiddle.net/firebase/a221m6pb/
但是有些东西我不太了解代码...
顶部声明的函数
(function (jQuery, Firebase, Path) {
这是将 services/libraries 注入 jsfiddle 的某种方式吗?之前没见过这样的例子……谁能告诉我这个方法签名中的路径是什么?……我明白它的用途在此示例中的路由中,但我不确定它是什么。它是某种路由框架吗?如果这些是显而易见的问题,我深表歉意,我对玩 jsfiddle + javascript[=12 比较陌生=]
这称为立即调用函数表达式 (IIFE),这些是参数(jQuery、Firebase、路径),它们在调用结束时发送:
}(window.jQuery, window.Firebase, window.Path))
有关立即调用函数的更多信息,请查看以下内容link
http://benalman.com/news/2010/11/immediately-invoked-function-expression/
在底部,您可以看到传递给这些参数的内容。
(window.jQuery, window.Firebase, window.Path)
这只是一种确保这些变量在所需范围内引用正确对象的方法。
是的,Path
用于路由。看看 ~300 行,你会看到。
有很多评论和注释,您应该继续阅读脚本。
旁注,这与 JSFiddle 没有特别的关系。 JSFiddle 只是一个代码编辑器平台,有很多很多类似的平台:JSBin, CodePen, WebDevOut, Plunker - 不胜枚举。
关于您的评论,扩展此答案。如果单击左侧的 External Resources 选项卡,您将获得已添加到环境中的所有脚本和资源的列表。大多数时候,脚本会在 global 对象上创建某种 namespace 对象——在浏览器中,全局对象是 window
- 所以你最终得到 window.jQuery
、window.Path
、window.Firebase
,等等。由于每个作用域都可以访问全局作用域,通常你只会看到 jQuery
(或 $
)在函数内部自由使用,因为它假设全局引用不会改变 - 但如果它改变了怎么办?如果另一个库或工具在您的程序中间覆盖了该命名空间怎么办?那会破坏你所有的引用!
将 window.jQuery
传递给名为 jQuery
的参数的函数的全部意义在于简单地确保在该函数的范围内 jQuery
始终表示您的想法它应该,因为全局引用 (window.jQuery
) 可能会在不知不觉中被其他一些库覆盖。您不关心命名空间现在已经或可能被重写,因为您已经建立了对该原始对象的引用。
Path
对象由此库提供:pathjs
进一步阅读:
这是一个立即调用的匿名函数。参数在函数的末尾设置。这是一个非常简单的例子:
(function(a, b, c) {
// a = 1, b = 2, c = 3
})(1, 2, 3);
这用于避免填充全局命名空间/避免暴露 functions/parameters。
在该 jsfiddle 页面上,如果您转到边栏并单击 "External Resources",那么您将看到参数的来源。
我正在查看 JSFiddle 中有关 Firebase 身份验证的一些代码
http://jsfiddle.net/firebase/a221m6pb/
但是有些东西我不太了解代码... 顶部声明的函数
(function (jQuery, Firebase, Path) {
这是将 services/libraries 注入 jsfiddle 的某种方式吗?之前没见过这样的例子……谁能告诉我这个方法签名中的路径是什么?……我明白它的用途在此示例中的路由中,但我不确定它是什么。它是某种路由框架吗?如果这些是显而易见的问题,我深表歉意,我对玩 jsfiddle + javascript[=12 比较陌生=]
这称为立即调用函数表达式 (IIFE),这些是参数(jQuery、Firebase、路径),它们在调用结束时发送:
}(window.jQuery, window.Firebase, window.Path))
有关立即调用函数的更多信息,请查看以下内容link
http://benalman.com/news/2010/11/immediately-invoked-function-expression/
在底部,您可以看到传递给这些参数的内容。
(window.jQuery, window.Firebase, window.Path)
这只是一种确保这些变量在所需范围内引用正确对象的方法。
是的,Path
用于路由。看看 ~300 行,你会看到。
有很多评论和注释,您应该继续阅读脚本。
旁注,这与 JSFiddle 没有特别的关系。 JSFiddle 只是一个代码编辑器平台,有很多很多类似的平台:JSBin, CodePen, WebDevOut, Plunker - 不胜枚举。
关于您的评论,扩展此答案。如果单击左侧的 External Resources 选项卡,您将获得已添加到环境中的所有脚本和资源的列表。大多数时候,脚本会在 global 对象上创建某种 namespace 对象——在浏览器中,全局对象是 window
- 所以你最终得到 window.jQuery
、window.Path
、window.Firebase
,等等。由于每个作用域都可以访问全局作用域,通常你只会看到 jQuery
(或 $
)在函数内部自由使用,因为它假设全局引用不会改变 - 但如果它改变了怎么办?如果另一个库或工具在您的程序中间覆盖了该命名空间怎么办?那会破坏你所有的引用!
将 window.jQuery
传递给名为 jQuery
的参数的函数的全部意义在于简单地确保在该函数的范围内 jQuery
始终表示您的想法它应该,因为全局引用 (window.jQuery
) 可能会在不知不觉中被其他一些库覆盖。您不关心命名空间现在已经或可能被重写,因为您已经建立了对该原始对象的引用。
Path
对象由此库提供:pathjs
进一步阅读:
这是一个立即调用的匿名函数。参数在函数的末尾设置。这是一个非常简单的例子:
(function(a, b, c) {
// a = 1, b = 2, c = 3
})(1, 2, 3);
这用于避免填充全局命名空间/避免暴露 functions/parameters。
在该 jsfiddle 页面上,如果您转到边栏并单击 "External Resources",那么您将看到参数的来源。