2016-05-16 34 views
0

[更新]:事实证明,npm版本D3不起作用,我更改为CDN版本,一切正常,但我仍然想知道什么是错的require(“d3 “)为什么D3不工作在NW.js


所有:

我非常新的NW.js,目前我想在它使用D3,但连基本的d3.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> 

感谢

回答

1

在上下文中的NodeJS你负荷D3。尝试加载它在浏览器上下文:

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

谢谢,所以你的意思是我不能像require(“d3”)一样使用DOM的方式? – Kuan

+0

DOM是浏览器上下文的一部分,而不是节点上下文。在节点上下文中,您没有DOM和所有其他浏览器API(因为它是节点)。但是,通过在节点上下文中传递DOM元素,您可以使用节点上下文中的DOM。无论如何,如果你想使用浏览器库 - 在浏览器上下文中加载它。如果节点lib - 在节点上下文中加载它。例如,一些图书馆可以在节点和浏览器中工作 - 例如,moment.js。 – VoidVolker

+0

谢谢,我还没有想到的一件事是,如果我只是在不考虑顺序的情况下包含它们,我如何管理依赖关系? – Kuan

2

我使用npm安装d3,不得不写这得到它的工作:

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

现在我可以用d3_root.select()而不是d3.select

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

+0

谢谢,你知道为什么吗? – Kuan

+1

再次。 NWJS有2个上下文:节点上下文和浏览器上下文。浏览器上下文全部为HTML页面上的

  • 11. 为什么:不工作?
  • 12. 为什么PathFileExists()不工作?
  • 13. mozRequestFullScreen();不工作。为什么?
  • 14. 为什么PNP4Nagios不工作
  • 15. 为什么element.Text =不工作
  • 16. textFieldBeginEditing不工作 - 为什么?
  • 17. 为什么socket.sendall()不工作?
  • 18. 为什么不工作
  • 19. 为什么不工作
  • 20. 为什么AlarmMAnager不工作?
  • 21. 为什么不工作?
  • 22. 为什么AuthorizationExecuteWithPrivileges不工作
  • 23. JQuery不工作,为什么?
  • 24. 为什么不工作
  • 25. 为什么ToolboxBitmapAttribute不工作?
  • 26. countDownTimer不工作,为什么?
  • 27. 为什么不工作
  • 28. 为什么'源'不工作?
  • 29. 为什么GetProcAddress()不工作?
  • 30. 为什么不“chrome.bookmarks.getTree”工作?