我开始使用 requirejs 并且我看到的所有教程都使用 requirejs 来加载 jquery 和主干以及其他 javascript 文件需要的所有 js 模块。
我猜一个使用requirejs的项目必须转换他们所有的javascript文件以满足requirejs所需的格式。
(使用require
和define
)
有时,我觉得使用简单的<script>
标签来包含 js 文件更容易。
有没有简单的方法来混合这两种方法?
我开始使用 requirejs 并且我看到的所有教程都使用 requirejs 来加载 jquery 和主干以及其他 javascript 文件需要的所有 js 模块。
我猜一个使用requirejs的项目必须转换他们所有的javascript文件以满足requirejs所需的格式。
(使用require
和define
)
有时,我觉得使用简单的<script>
标签来包含 js 文件更容易。
有没有简单的方法来混合这两种方法?
混合这些方法通常是“可以的”(但有一些警告1),尽管整体效果将取决于几个因素。无论如何,这正是 RequireJS “匀场”所允许的。您还可以创建一个 RequireJS 模块来填充通过标签加载的外部 JS 文件,而不是使用配置。
在我的项目中,我通常会通过元素加载所有“通常嫌疑犯”或任何必须同步运行的内联页面代码(例如 jQuery),<script>
并酌情添加垫片。(最新的 jQuery 版本已经与 RequireJS/AMD 一起工作,所以这本身不是必需的。)
然后我将 RequireJS 模块用于其他代码。如下所示,由于 jQuery 被填充(并通过 加载<script>
),因此它可以作为依赖项包含在任何相关模块中。
1 RequireJS/AMD 和元素之间的最大区别在于 RequireJS <script>
/AMD 是异步的,而<script>
元素(通常)是同步的。以下是基本规则:
<script>
包含可以使用其他<script>
包含,只要它们在之后执行。<script>
的包含。<script>
使用RequireJS 模型,除非它使用 RequireJS。另请注意,转换为 RequireJS 模块的脚本仍然可以通过<script>
元素包含(但需要注意的是,该函数不能保证同步运行),这有助于转换。当然,这应该是一个过渡步骤,因为整个项目都被转移到遵循 RequireJS/AMD 方法。
无论您包含哪些库,Vanilla JavaScript 都应该始终有效。
例如,您可以在您的<head>
部分中使用所有这些:
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://requirejs.org/docs/release/2.1.9/minified/require.js"></script>
请务必阅读名为RequireJS 和 jQuery的部分以正确集成。