![](/img/trans.png)
[英]How can I use a d3 library (like c3.js) on the server side to generate charts in nodejs?
[英]How can I use a javascript library on the server side of a NodeJS app when it was designed to run on the client?
我正在深入研究NodeJS和Express(對我來說太復雜了)來構建一個實時的Web應用程序。 目前,我正在嘗試了解如何在服務器端使用現有的JavaScript庫。 問題是庫似乎被設計為在客戶端運行,因此,說明只顯示如何在客戶端使用它。 我正在談論的圖書館可以在這里找到......
https://github.com/replit/jsrepl
問題:
意思是,在服務器端,我可以執行以下代碼......
var jsrepl = new JSREPL({
input: inputCallback,
output: outputCallback,
result: resultCallback,
error: errorCallback,
progress: progressCallback,
timeout: {
time: 30000,
callback: timeoutCallback
}
});
提前感謝您的所有智慧! 我正在盡我所能去理解這一切。
所以這是可能的,但你需要一些嚴肅的hackery來使它工作。 由於這不是一個節點模塊,並且正如其他人所指出的那樣是從瀏覽器中編寫的,因此您需要在節點內使用DOM來執行它。 幸運的是,我們有一個精彩的jsdom項目,它允許我們做到這一點。 所以讓我們設置這個東西吧。
cd
進入你的節點項目(如果沒有一個,則創建一個) git clone git://github.com/replit/jsrepl.git
jsrepl
並初始化子模塊git submodule update --init --recursive
npm install coffee-script
和npm install uglify-js
,repo(ugh)中任何地方都沒有提到的依賴項。 cake bake
。 經過漫長的編譯java文件的過程后,命令將完成,jsrepl將被構建並准備就緒。 npm install jsdom
,然后我們就可以開始編寫一個示例文件了 這是一個最小的例子:
var jsdom = require('jsdom'),
fs = require('fs'),
jsrepl = fs.readFileSync('./jsrepl/repl.js', 'utf8');
jsdom.env({
html: "<script src='jsrepl.js' id='jsrepl-script'></script> ",
src: [jsrepl],
done: function(err, window){
if (err) return console.error(err);
run_jsrepl.call(window);
}
});
function run_jsrepl(){
console.log(this.JSREPL)
}
這是將JSREPL
引入其工作所需的最少代碼量。 我們在這里所做的只是需要jsdom並實例化它,直接從文件中讀取jsrepl源代碼。 如果你用node filename
運行這個文件,它將注銷你的JSREPL
對象,它可以像在瀏覽器中一樣使用JSREPL
您可以在Node中運行phantomjs ,這是一個無頭webkit瀏覽器。 然后在phantomjs中運行jsrepl。
jsrepl
,但假設它與平台無關,從節點模塊中require()
它應該沒問題。 但是,在相關腳本中似乎存在一些特定於DOM的內容(例如document.getElementById
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.