【问题标题】:What is exactly define(function(require){...}) in JavaScript什么是 JavaScript 中的 define(function(require){...})
【发布时间】:2014-12-01 11:30:40
【问题描述】:

我知道define是用来定义一个模块的,而function是一个匿名函数,但是函数中的参数'require'是什么意思呢?

如果我在define(function(require){...}) 中写任何东西,什么时候会调用它?如何调用他的匿名函数?

请帮忙,我是高级 JS 的新手。

【问题讨论】:

  • 您是否尝试在 RequireJS 文档中详细了解它是如何工作的?
  • 是的,我读过有关 RequireJS 的信息,但他们使用 require() 作为函数,而不是作为参数。我不明白,当它作为参数传递 function(require) 时,实际传递的是什么?

标签: javascript requirejs require requirejs-define


【解决方案1】:

这是 requireJs api 的一部分,它不是普通的 JS。

您可以在此处查看完整文档: http://requirejs.org/docs/api.html#define

上面示例中的“require”实际上是“require”代码,这种模式允许你要求一个JS,而不是仅在加载JS完成时加载另一个依赖项,但在以前需要的文件。

总体而言,这种模式允许您将应用拆分为多个小的 JS 文件,并以异步方式加载它们以加快网页的加载过程。

有些人会争辩说,当 SPDY 和 HTTP2 将被更广泛地使用时,这一切都将不再需要。无论如何,这肯定会促进代码设计中更好的模块化。

【讨论】:

  • define(function (require) { var angular = require('angular'); var html = require('text!./productPage.html'); var css = require('css!./productPage'); var productDesc = require('./../productDesc/productDesc'); }); 这是代码,这里是function(require),和require(some text)一样吗?什么时候会从 html 页面调用这个特定的函数?
  • 不一样。 require 是一个回调,所以只有在 require 的内部实现准备好调用它时才会调用它。如果你只是这样做,require(some text),这意味着该方法正在被立即调用,此时 requireJs 代码可能会也可能不会被调用。
  • 我尝试在 console.log 中打印 require,得到以下信息:function localRequire(deps, callback, errback) { var id, map, requireMod; if (options.enableBuildCallback && callback && isFunction(callback)) { callback.__requireJsBuild = true; } if (typeof deps === 'string') { if (isFunction(callback)) { //Invalid call return }
猜你喜欢
  • 2013-06-01
  • 1970-01-01
  • 2013-02-23
  • 2012-03-05
  • 1970-01-01
  • 2020-10-10
  • 2011-09-24
  • 1970-01-01
相关资源
最近更新 更多