javascript - 在 RequireJS 中始终需要某些依赖项

标签 javascript requirejs

我正在开发一个 Backbone 项目,我正在加载 jQueryUnderscoreBackbone 需要 JS

我发现自己在所有模块中一遍又一遍地输入这个模式:

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { ...

有没有一种方法或解决方法可以让所有模块都可以使用这 3 个库,而无需明确要求它们,这样我就可以专注于要求额外的东西?

虽然我想在脚本标签中加载这个依赖项堆栈,并为我的模块和额外的依赖项使用 RequireJS,但我会失去 JamJS 编译功能,因为我必须自己连接 jquery、underscore 和 backbone。

编辑:

参见 Backbone Boilerplate :他们也在使用 JamJS,但他们不需要在每个文件上使用 backbone、underscore、jquery。不知何故,所有人都可以使用它。

他们需要使用 RequireJS 标记中的 config.js 文件。这会导出 require.config 内容,然后委托(delegate)给 main.js。在 main 中,他们可以神奇地访问 Backbone!

中间发生了什么?

最佳答案

我有一个评论中提到的沙箱。这是 CoffeeScript 中的示例:

define [
  "core"
  "jquery"
  "extensions/backbone"
  "underscore"
], (core, $, backbone, underscore) ->

  util: 
    underscore: underscore
  mvc:
    Model: backbone.Model
    Collection: backbone.Collection
    View: backbone.View
    Events: backbone.Events
    Router: backbone.Router

这让我可以做

define ["sandbox"], (sandbox) -> class View extends sandbox.mvc.View

这类似于 AuraJS project 中使用的沙箱和 facade pattern 的实现这样做的好处是……

It lets you expose the parts of a JavaScript library that are safe to use instead of exposing the entire API. This is particularly useful when working in teams.

另外,将来如果我想从 BaseView 类而不是直接从 Backbone.View 扩展所有 View ,我只需要更改沙箱中的引用即可。

关于javascript - 在 RequireJS 中始终需要某些依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15563348/

相关文章:

javascript - 使用 requirejs 创建完全独立的上下文堆栈

javascript - 包含将发布到 npm 的 js 包的 Typescript 类型的正确方法是什么?

javascript - Chrome Dev Tools - 通过页面重新加载记住选择的元素

javascript - localstorage key本身占用多少空间?

javascript - Magento 2 : moment is not defined

javascript - Express 不加载 javascript 到客户端

javascript - 具有 Backbone 样板的 PubSub?

javascript - 更新选项卡切换/更改上的 chrome 扩展图标

javascript - 如何使用浏览器滚动来实现内部 div 的 x 溢出?

backbone.js - 加载多个 requireJS 和 Backbone 实例