2016-05-16 3 views
0

[UPDATE]:npmバージョンD3は動作しません。CDNバージョンに変更されていますが、何も問題はありません。 「)なぜd3がNW.jsで動作しないのですか


すべて:

私は、現在、私はそれにD3を使用しようとしていますが、それでも基本的なd3.selectが動作しないことができる、任意のアイデアNW.jsにかなり新しいですか?選択して唯一の仕事は、あなたがnodejsコンテキストでD3を読み込む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

です。ブラウザのコンテキストでそれをロードしよう:

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

DOMを使用するためにrequire( "d3")のような方法を使用することはできません。 – Kuan

+0

DOMはブラウザコンテキストの一部であり、ノードコンテキストではありません。ノードコンテキストでは、DOMと他のすべてのブラウザAPI(ノードであるため)はありません。しかし、ノードコンテキストでDOM要素を転送することで、ノードコンテキストからDOMを操作することができます。とにかく、あなたがブラウザのlibを使いたいのであれば、ブラウザのコンテキストでそれを読み込みます。ノードlib - ノードコンテキストでロードします。いくつかのライブラリはノードやブラウザのwell-moment.jsなどで動作します。 – VoidVolker

+0

ありがとう、私が把握していないことの1つは、順序を考えずにそれらを含めるだけで、依存関係をどのように管理できますか? – Kuan

2

私はnpmを使用してd3をインストールし、それが仕事を得るためにこれを書かなければならなかった:

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

今私はd3_root.select()の代わりd3.selectを使用することができます。

nwjsコンテキストのため、あなたはスクリプトの「サーバー」側で作業しているので、最初にドキュメントを選択する必要があります。 htmlファイルd3.select()に直接コードを書く場合はOKです。

+0

ありがとう、あなたはその理由を知っていますか? – Kuan

+1

再度。 NWJSには、ノードコンテキストとブラウザコンテキストの2つのコンテキストがあります。ブラウザコンテキストは、HTMLページのすべての

  • 11. サービスワーカーでCookieが動作しないのはなぜですか?
  • 12. JSONDecodableでテンプレートが動作しないのはなぜですか?
  • 13. ラッパーがHTMLで動作しないのはなぜですか?
  • 14. オルトでアルファブレンディングが動作しないのはなぜですか?
  • 15. なぜevent.keyCodeがng-keyupで動作しないのですか?
  • 16. なぜappendChildがノードタイプで動作しないのですか?
  • 17. なぜインクルードがここで動作しないのですか?
  • 18. なぜlive()がjQueryで動作しないのですか?
  • 19. ルータリンクタグがブートストラップフレームワークで動作しないのはなぜですか?
  • 20. なぜLimitキーワードがMysqlで動作しないのですか?
  • 21. XPathがIEで動作しないのはなぜですか?
  • 22. entityframeworkがクラスライブラリで動作しないのはなぜですか?
  • 23. メディアクエリがFlexboxで動作しないのはなぜですか?
  • 24. なぜ$ .postメソッドがIEで動作しないのですか?
  • 25. なぜアンドロイドエミュレータでdafaultカメラが動作しないのですか?
  • 26. マルチスレッドプログラムでprintfが動作しないのはなぜですか?
  • 27. なぜvuetifyでalign-endが動作しないのですか
  • 28. JPanelでDockableFrameが動作しないのはなぜですか?
  • 29. sizeThatFitsがUILabelで動作しないのはなぜですか?
  • 30. なぜINSERT INTOがPythonで動作しないのですか