我认为我需要在一个页面中支持多个require实例,并且遇到两个问题让它发生.我正在开发一种服务,为外部客户端页面提供可嵌入的交互式对象.顶级设计标准易于嵌入,尽可能少地假设客户端环境,并在客户端页面的js/css世界中很好地发挥作用.客户端向其页面添加脚本标记以加载加载器,然后他们使用内联脚本加载他们想要的内容:
<script src="http://server.net/loader"></script>
<script>
special_require(["loader"], function(loader) {
loader.load({
object: "objectname",
target: "#where-i-want-it"
// other config settings
})
})
</script>
Run Code Online (Sandbox Code Playgroud)
加载器在匿名函数中运行require.js源,对其进行配置,然后导出require和define作为命名空间的全局变量(让我们称之为special_require和special_define).然后几个模块是special_defined,最后用"loader"结束:
// Using strategy 2 from http://requirejs.org/docs/faq-advanced.html#rename to
// namespace require so it doesn't conflict with code on client sites.
;(function() {
// Here, we use Jinja to drop in require.js, which will define itself in
// this non-global namespace.
{% include 'loader/require.js' %}
require.config({
...
})
window.special_require = require
window.special_define = define
})()
special_define("loader", [...], function(...) { ... })
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这非常有效.我能够将我的要求与客户端页面中的任何要求完全分开,我轻轻地踩在客户端的js全局命名空间上.但: …