2016-07-08 7 views
5

मेरी वेबसाइट PHP में लिखी गई है। सॉकेट.ओएस के लिए नोड.जेएस भी स्थापित है। मैं Reactjs के साथ सर्वर-साइड प्रतिपादन के बारे में सोच रहा हूं, इसलिए मैं विचारों का पुन: उपयोग कर सकता हूं। विचारों प्रस्तुत करना Node.js कोक्या phode टेम्पलेट प्रतिपादन सेवा के रूप में प्रतिक्रिया के साथ node.js एक अच्छा विचार है?

1.Use v8js विस्तार और प्रतिक्रिया-पीएचपी-V8Js php से

2.Send डेटा: v8js एक्सटेंशन का उपयोग करने की योजना बना, लेकिन फिर मैं के बारे में दो संभव समाधान में बात कर this article में आए , उदाहरण:

Node.js

require("babel/register"); 
var React = require('react'); 
var express = require('express'); 
var path = require('path'); 
var bodyParser = require('body-parser'); 

var app = express(); 
app.use(bodyParser.json()); 
app.use('/', function(req, res) { 
    try { 
     var view = path.resolve('./views/' + req.query.module); 
     var component = require(view); 
     var props = req.body || null; 
     res.status(200).send(
      React.renderToString(
       React.createElement(component, props) 
      ) 
     ); 
    } catch (err) { 
     res.status(500).send(err.message); 
    } 
}); 

php

use GuzzleHttp\Client; 

$app->get('/{name:.*?}', function($name) use ($app) { 
    $client = new Client(['base_url' => 'http://localhost:3000']); 
    $response = $client->post('/', [ 
     'json' => ['name' => ucfirst($name ?: 'World')], 
     'query' => ['module' => 'hello'], 
    ]); 
    $contents = $response->getBody()->getContents(); 

    return response($contents, 200); 
}); 

लेखक कहता है कि वह दूसरी विधि पसंद करेंगे क्योंकि पहले एक:

जब तक आप कर रहे हैं आराम से स्थापना (और अद्यतन) libv8 और अपने उत्पादन मशीनों पर V8Js PECL विस्तार, यह एक विकल्प है । व्यक्तिगत रूप से, मैं इस मार्ग पर नहीं जाऊंगा। निर्भरता स्थापित करना बोझिल है, निर्भरता प्रबंधन मुश्किल है, और रास्ते में आपको मार्गदर्शन करने के लिए कई संसाधन नहीं हैं। अतिरिक्त में, आपको इस तथ्य के लिए जिम्मेदार होना होगा कि आपके जावास्क्रिप्ट बिल्ड को प्रतिक्रिया के साथ बंडल नहीं किया जाना चाहिए यदि आप उन्हें का पुन: उपयोग करना चाहते हैं।

क्या आप मुझे बता सकते हैं कि "जावास्क्रिप्ट निर्माण के साथ बंडल करने में सक्षम नहीं है" का क्या मतलब है? मैं v8js + React-PHP-V8Js का उपयोग करने के बारे में सोच रहा हूं, इसलिए मैं इसके कुछ दोषों को समझना चाहता हूं। साथ ही, क्या आप दूसरी विधि (टेम्पलेट प्रतिपादन सेवा के रूप में node.js) पसंद करेंगे? मेरे पास node.js पहले से चल रहा है इसलिए यह एक अच्छा सुझाव प्रतीत होता है।

उत्तर

2

यह एक राय सवाल है, इसलिए आपको जो भी जवाब मिलेगा वह एक राय होगी।

मैं नहीं कहूंगा, यह एक अच्छा विचार नहीं है, और मेरी तर्क बताएं।

प्रत्येक सॉफ्टवेयर प्रोजेक्ट में एक जटिलता होती है जिसे लगभग इस्तेमाल किए गए buzzwords की संख्या से मापा जा सकता है। यही है, "एडब्ल्यूएस लैम्ब्डा सेवाओं द्वारा समर्थित उच्च उपलब्धता, बहुभाषी, प्रतिक्रिया वेबसाइट" स्वाभाविक रूप से बालों वाली लगती है। प्रत्येक buzzword पहले buzzwords के प्रयासों को गुणा करता है। आप "अंतर्निहित नोड V8JS प्रतिपादन के साथ सर्वर-साइड प्रतिपादन के लिए ReactJS का उपयोग कर PHP का उपयोग कर साइट का निर्माण करने का सुझाव दे रहे हैं ..." और आप समस्या डोमेन को हिट करने से पहले जटिलता से बाहर निकलते हैं।

आप एक पूरी तरह से अलग प्रतिपादन मॉडल होने के साथ प्रतिक्रिया के साथ मुद्दों को मारा जाएगा। आप कैशिंग मुद्दों को हिट करेंगे। आप sysadmin मुद्दों को हिट करेंगे।

ऐसा मत करो।

1

मुझे लगता है कि दूसरा विकल्प "सेवा के रूप में चल रहे टेम्पलेट इंजन" एक बेहतर विकल्प है क्योंकि इसमें कम जटिलता और कम निर्भरताएं हैं।

मुझे लगता है कि सर्वर साइड प्रतिपादन एक दिलचस्प विचार है, और इसमें कई शानदार लाभ हैं।

  1. सर्वर का प्रदर्शन आपके उपयोगकर्ताओं की कई अलग-अलग डिवाइस कॉन्फ़िगरेशन से अधिक अनुमानित है। तो यहां एक छोटी सी सोच है कि आपके ऐप के लिए लक्षित दर्शक क्या हैं। (यदि क्रैपी मोबाइल वाले बहुत से उपयोगकर्ता सर्वर-साइड रेंडरिंग के लिए अतिरिक्त बिंदु)

  2. कथित प्रदर्शन में वृद्धि। उपयोगकर्ता रिक्त पृष्ठ से बच रहे हैं और स्पिनर लोड कर रहे हैं। (अनुमानित प्रदर्शन - क्योंकि उपयोगकर्ता को ईवेंट हैंडलर को अटैच करने के लिए अभी भी इंतजार करना होगा)

  3. आप अपना वेब क्रॉलर को उपलब्ध कराते हैं जो आमतौर पर कम जावास्क्रिप्ट-सक्षम होते हैं।

  4. मुझे लगता है कि सही ढंग से निष्पादित सर्वर साइड प्रतिपादन कम जटिलता और कम रखरखाव ओवरहेड प्रदान कर सकता है। लेकिन बड़ी टीमों के लिए यह अधिक लाभ है। एक डेवलपर के लिए काम करने के लिए एक डेवलपर संरचना और सारण करने के लिए क्लाइंट और सर्वर के लिए विचारों को अलग करने से कई गुना अधिक समय लगेगा।

तो, संक्षेप में, मैं इसे यह में अनुसंधान के टन डालने से पहले ऐसा नहीं करेंगे और मेरी सलाह "इसे आसान बनाने के" है। हर खुशी के लिए, भुगतान करने की कीमत है।

कुछ समस्याओं को दूर करने के लिए:

सही ढंग से टेम्पलेट्स रेंडर करने के लिए सर्वर साइड, और क्लाइंट साइड एक ही आवेदन राज्य का उपयोग करने की आवश्यकता होगी। (रेडक्स https://github.com/reactjs/redux देखें)

वास्तविक वेब ऐप्स को अक्सर सर्वर से बातचीत करने और उससे डेटा लोड करने की आवश्यकता होती है। तो आप वर्तमान सेटअप के साथ इसे कैसे संभालेंगे।

आपके विचारों में असीमित क्रियाएं हो सकती हैं और सर्वर-साइड प्रतिपादन तुल्यकालिक है।

अतिरिक्त सुरक्षा प्रभाव।

1

दूसरा विकल्प एक लंबी अवधि में मेरी राय में एक बेहतर विचार है, एक अधिक शॉर्ट टर्म प्रोजेक्ट में पहली बार की तुलना में चर की प्रक्रिया को संसाधित करने और जावास्क्रिप्ट को संभालने के लिए आवश्यक अधिक हैंडलिंग करने की आवश्यकता होती है। यदि आप दूसरे विकल्प का उपयोग करते हैं तो आपके पास बहुत कम रखरखाव और आसान समय सुलझाने वाली त्रुटियां होंगी जिन्हें आप चला सकते हैं। मेरी राय में एकीकृत करना भी आसान है अगर यह उन प्रतिक्रियाओं को संभालने के लिए जावास्क्रिप्ट की बजाय PHP पर PHP है।

संबंधित मुद्दे