使用 CDN 时使用没有 'require' 的库

using library without 'require' when using CDN

我想用这个Chart JS reactJs wrapper library

我正在使用 library from a CDN,因为我没有为此项目设置任何模块捆绑过程。我知道我可以,但想知道如何在不使用 require 的情况下使用这个库。我认为对于那些仍然对一些较新的 js 实践感到有点不舒服的人来说,解释如何做到这一点的答案会很有用。

在 React 包装器 Chart JS 示例中,您将看到它显示:

var LineChart = require("react-chartjs").Line;

var MyComponent = React.createClass({
  render: function() {
    return <LineChart data={chartData} options={chartOptions} width="600" height="250"/>
  }
});

如果没有 require,在使用 CDN 时是否可以将相同的值分配给 LineChart

自己看CDN提供的文件就知道了

它有这种形式:

(function (root, factory) {
    // Do some stuff to detect the environment
    // When everything fails, just assign a global variable:

    root["react-chartjs"] = factory(root["React"], root["ReactDOM"], root["Chart"]);


})(this, function ( ... ) {
    ....
});

其中 root 是全局对象(在浏览器中是 window),factory 只是一个接受依赖项和 returns 库的函数。

得到LineChart:

window['react-chartjs'].Line

请记住 factory 需要 ReactReactDOMChart。并假设所有这些都在一个以相同方式命名的全局变量中。