2016-05-16 67 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」工作?