2011-07-30 169 views

回答

1

選項包括:

  1. 把邏輯上的一個服務器,並使用Ajax從網頁訪問它。
  2. 用JavaScript重寫它並將其包含在您的頁面中。
  3. 將C++放到瀏覽器插件中,並從javascript訪問插件。

選項1)或2)根據具體情況可以正常工作。選項3)通常是一個壞主意,除非它是一個非常專業的應用程序,它以某種方式值得處理插件的分發,維護,測試和用戶頭痛問題。

+0

現在有asm.js和很快的web程序集。 – jldupont

+0

@jldupont - asm.js是Javascript的一個子集,它可以運行得更快,所以我的第二點肯定會覆蓋它。 OP要求他們可以「從HTML5/Javascript運行」,因此他們將不得不以某種方式將他們的代碼轉換爲Javascript,以便能夠做到這一點。 webAssembly是有趣的(也許允許從C++到WASM的交叉編譯,但是甚至不清楚這是OP所要求的。 – jfriend00

0

我的答案那些想在NodeJS中做的,因爲它很熟悉javascript

請使用一個很棒的nodejs-java和一個用Java編寫的奇蹟jFuzzylite庫。

節點-java的:https://www.npmjs.com/package/java

Fuzzylite:http://www.fuzzylite.com/。它提供jfuzzylite.jar

我已經創建了一個隸屬函數在Matlab membership_function_pn.fis,它有兩個輸入和一個輸出。在Matlab命令界面鍵入mfedit,它將出現一個FIS編輯器,您可以輕鬆地使您的模糊功能。

以下是我做的工作代碼! (要了解代碼如何在Nodejs中工作,請先在Java中練習jfuzzylite.jar)。

var java = require("java"); 
var fs = require("fs"); 
java.classpath.push("commons-lang3-3.1.jar"); 
java.classpath.push("commons-io.jar"); 
java.classpath.push("jfuzzylite.jar"); 


var matlabString = fs.readFileSync("dataMatlab/membership_function_pn.fis", 'utf8'); 
var FisImporter = java.newInstanceSync("com.fuzzylite.imex.FisImporter"); 
var engineMatlab = java.callMethodSync(FisImporter, "fromString", matlabString); 
var InputVariable = java.newInstanceSync('com.fuzzylite.imex.FisImporter'); 


var OutputVariable = java.callMethodSync(engineMatlab, "getOutputVariable", 0); 
var bandwidthInputVariable = java.callMethodSync(engineMatlab, "getInputVariable", 0); 
var timeInputVariable = java.callMethodSync(engineMatlab, "getInputVariable", 1); 
java.callMethodSync(bandwidthInputVariable, "setInputValue", -0.5); 
java.callMethodSync(timeInputVariable, "setInputValue", 0.5); 
java.callMethodSync(engineMatlab, "process"); 
var resultFuzzy = java.callMethodSync(OutputVariable, "getOutputValue"); 

console.log("안녕하세요" + resultFuzzy);