2017-03-07 9 views
6

मैं टाइपप्रति साथ घटकों प्रतिक्रिया लिख ​​रहा हूँ, आधिकारिक टाइपप्रति डॉक्स में निर्देशों का पालन में लिखा प्रतिक्रिया रेंडर:पीएचपी V8Js टाइपप्रति

https://www.typescriptlang.org/docs/handbook/react-&-webpack.html

मैं V8Js उपयोग कर रहा हूँ php विस्तार सर्वर साइड पर प्रतिक्रिया प्रस्तुत करने के लिए, लेकिन ऐसा लगता है कि मुझे समझ में कमी है कि V8Js का उपयोग करने का सही तरीका क्या है।

यह मेरी प्रतिक्रिया अनुप्रयोग है: (क्लाइंट-साइड गाया)

http://codepen.io/MasterScripter/pen/xqRZQO

मैं पक्ष सर्वर पर प्रस्तुत करना करने की कोशिश की:

<?php 

$v8 = new V8Js(); 

$react = []; 

// stubs, react 
$react[] = "var console = {warn: function(){}, error: print}"; 
$react[] = "var global = {}"; 
$react[] = file_get_contents('./dist/react.js'); 
$react[] = "var React = global.React"; 

$react[] = file_get_contents('./dist/bundle.js'); 
$data = [ 
    'value' => 1, 
    'onClick' => 'function' 
]; 
$react[] = sprintf(
    "React.renderComponentToString(Square({data: %s}), print)", 
    json_encode($data)); 
$react = implode(";", $react); 

try { 
    $v8->executeString($react); 
} catch(V8JsException $e) { 
    echo " 
    File: {$e->getJsFileName()} \n 
    Line Number: {$e->getJsLineNumber()} \n 
    Source Line: {$e->getJsSourceLine()} \n 
    Trace: {$e->getJsTrace()} 
    "; 
} 

'react.js' कच्चे प्रतिक्रिया & शामिल प्रतिक्रिया-डोम कोड, 'bundle.js' में वेबपैक बंडल शामिल है, जैसा कि ऊपर दिए गए पेन से एक जैसा है।

मैं इस त्रुटि मिलती है:

File: V8Js::compileString() 

Line Number: 209 

Source Line: module.exports = ReactDOM; 

Trace: ReferenceError: ReactDOM is not defined 
at Object.setPrototypeOf.__proto__ (V8Js::compileString():209:18) 
at __webpack_require__ (V8Js::compileString():47:30) 
at Object.<anonymous> (V8Js::compileString():300:16) 
at __webpack_require__ (V8Js::compileString():47:30) 
at module.exports (V8Js::compileString():93:18) 
at V8Js::compileString():96:10 

किसी भी सुझाव/संकेत कैसे मैं इस को ठीक से कर सकता है?

उत्तर

4

आप की तरह

$react[] = "var React = global.React"; 

(मैं यह परीक्षण नहीं किया के बजाय

$react[] = "var React = global.React, ReactDOM = global.ReactDOM, ReactDOMServer = global.ReactDOMServer;"; 

जोड़ने की जरूरत है लगता है, बस पर this आधारित मैं या तो V8JS का अधिक अनुभव नहीं है।। मैं एक अच्छी परिचय के लिए this पढ़ने की सलाह देता हूं।)