Using RequireJS to load plotly and D3

前端 未结 3 1183
傲寒
傲寒 2021-01-21 07:22

I am trying to use RequireJS to load the plotly and d3 libraries in my js code. I have tried this:

require.config({
    paths: {
       d3: \'/static/scripts/plo         


        
3条回答
  •  爱一瞬间的悲伤
    2021-01-21 07:45

    You need a shim for Plotly since it depends on D3, and according to the Plotly docs, it looks like jQuery is also needed. Your config should look like:

    /*
    main.js file
    */
    require.config({
      paths: {
        d3: '/static/scripts/plotly/dependencies/d3.v3.min',
        jquery: '/path/to/jquery',
        plotly: '/static/scripts/plotly/plotly.min'
      },
    
      shim: {
        plotly: {
          deps: ['d3', 'jquery'],
          exports: 'plotly'
        }
      }
    });
    
    require(['d3', 'plotly'], function(d3, plotly) {
      console.log(plotly); // Object {Lib: Object, util: Object...}
      console.log(d3); // Object {version: "3.5.6", behavior: Object...}
    });
    

    In your index.html you should have only a single script tag:

    
    

    If you want to use D3 and Plotly in another JS file that uses require then you should be using the AMD style:

    /*
    foo-bar.js
    */
    define(['d3', 'plotly'], function(d3, plotly) {
        var foo = {};
    
        function bar() {
           // Some code here...
        }
    
        // This will allow other modules to use
        // the foo object and the bar function.
        return fooBar {
            foo: foo,
            bar: bar
        }
    });
    

    Now, you can use foo-bar.js in another module (assuming the two files are on the same directory level):

    define(['./foo-bar'], function(fooBar) {
        console.log(fooBar.foo) // Object
        console.log(fooBar.bar) // function() {}
    });
    

提交回复
热议问题