【问题标题】:Why d3 does not work in NW.js为什么 d3 在 NW.js 中不起作用
【发布时间】:2016-05-16 21:43:48
【问题描述】:

[UPDATE]:原来npm版本D3不行,我换成CDN版本,一切正常,但我还是想知道require("d3")有什么问题


全部:

我对 NW.js 很陌生,目前我正在尝试在其中使用 D3,但即使是基本的 d3.select 也无法工作,知道吗?唯一可以使用 select 的是 d3.select("body")

<div id="app"></div>

<script>
var d3 = require("d3");
function barChart(){

    var width, height;

    function render(root){


        root.append("svg")
            .attr({
                width:width,
                height:height
            })
            .append("rect")
            .attr({
                width: 0.5*width,
                height: 0.5*height
            })
            .style({
                fill:"red"
            })



    }

    render.width = function(value){
        if(value != undefined){
            width = value;
            return render;
        }
        return width;
    }
    render.height = function(value){
        if(value != undefined){
            height = value;
            return render;
        }
        return height;
    }



    return render;
}


// this does not work
var root = d3.select("#app");
var chart = barChart();
chart.width(400).height(400)
chart(root);

</script>

谢谢

【问题讨论】:

    标签: d3.js nw.js


    【解决方案1】:

    我使用npm 安装了d3,并且必须写这个才能让它工作:

    win.on('loaded', function() {
        d3_root = d3.select(document);
    });
    

    现在我可以使用d3_root.select() 代替d3.select

    据我了解,这是因为 nwjs 上下文,您正在脚本中的“服务器”端工作,因此您必须先选择文档。如果直接写代码到html文件d3.select()应该没问题。

    【讨论】:

    • 谢谢,你知道为什么吗?
    • 再次。 NWJS 有 2 个上下文:节点上下文和浏览器上下文。浏览器上下文是 html 页面上的所有
    【解决方案2】:

    您在 nodejs 上下文中加载 d3。尝试在浏览器上下文中加载它:

    <script src="js/dependencies/d3.min.js"></script>
    

    【讨论】:

    • 谢谢,所以你的意思是我不能使用 require("d3") 这样的方式来处理 DOM?
    • DOM 是浏览器上下文的一部分,而不是节点上下文。在节点上下文中,您没有 DOM 和所有其他浏览器 API(因为它是节点)。但是,您可以通过在节点上下文中传输 DOM 元素来从节点上下文中使用 DOM。无论如何,如果你想使用浏览器库 - 在浏览器上下文中加载它。如果节点 lib - 在节点上下文中加载它。一些库可以在节点和浏览器中很好地工作 - 例如 moment.js。
    • 谢谢,我还没有弄清楚的一件事是,如果我不考虑顺序而只包含它们,我该如何管理依赖关系?
    • Emm...任何你喜欢的方式。您可以手动设置顺序或为此使用任何脚本。
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多