Maison  >  Article  >  développement back-end  >  Connectez React à d’autres langages Web largement utilisés

Connectez React à d’autres langages Web largement utilisés

王林
王林original
2023-09-03 13:57:08789parcourir

将 React 与其他广泛使用的 Web 语言连接起来

React est une bibliothèque de vues écrite en JavaScript, elle est donc indépendante de toute configuration de pile et peut apparaître dans presque toutes les applications Web utilisant HTML et JavaScript comme couche de présentation.

Puisque React est comme le « V » dans « MVC », nous pouvons créer notre propre pile d'applications selon nos préférences. Jusqu'à présent, dans ce guide, nous avons vu React associé à Express, un framework basé sur Node ES6/JavaScript. D'autres correspondances basées sur des nœuds populaires pour React sont le framework Meteor et le Relay de Facebook.

Si vous souhaitez profiter de l'excellent système JSX basé sur des composants de React, du DOM virtuel, et de ses temps de rendu ultra-rapides dans vos projets existants, vous pouvez le faire en implémentant l'une des nombreuses solutions open source. p>

PHP

Puisque PHP est un langage de script côté serveur, l'intégration avec React peut prendre plusieurs formes :

  • Utilisez React-php-v8js
  • Gestion du routage des requêtes/réponses côté serveur (à l'aide d'un routeur, tel qu'Alto)
  • Sortie JSON via json_encode()
  • Modèles d'emballage, tels que des branches

Rendu côté serveur

Pour restituer les composants React sur le serveur, une bibliothèque est disponible sur GitHub.

Par exemple, nous pouvons utiliser ce package pour effectuer les opérations suivantes dans PHP :

<?php // the library
$react_source = file_get_contents('/path/to/build/react.js');
// all custom code concatenated
$app_source = file_get_contents('/path/to/custom/components.js');

$rjs = new ReactJS($react_source, $app_source);
$rjs->setComponent('MyComponent', array(
  'any'   =>  1,
  'props' =>  2
  )
);

// print rendered markup
echo '' . $rjs->getMarkup() . '';

// load JavaScript somehow - concatenated, from CDN, etc
// including react.js and custom/components.js

// init client
echo '' . $rjs->getJS("#here") . ''; 

// repeat setComponent(), getMarkup(), getJS() as necessary
// to render more components

La puissance de la combinaison de React avec n'importe quel langage de script côté serveur réside dans la capacité de fournir des données à React et d'appliquer une logique métier à la fois sur le serveur et sur le client. Transformer d'anciennes applications en applications réactives n'a jamais été aussi simple !

Utiliser PHP + Alto Router

Pour un exemple d'application, consultez ce référentiel sur GitHub.

Configurez votre AltoRouter comme suit :

<?php // Router setup
require_once 'include/AltoRouter/AltoRouter.php';
$router = new AltoRouter();
$viewPath = 'views/';

// Router matches
//---
// Manual
$router->map('GET', '/', $viewPath . 'reactjs.html', 'reactjs');

$result = $viewPath . '404.php';

$match = $router->match();
if($match) {
	$result = $match['target'];
}

// Return route match 
include $result;

?>

En AltoRouter 设置为指定的路由提供应用程序页面服务,您只需将 React configurant le service des pages d'application selon un itinéraire spécifié, vous pouvez simplement inclure le code React dans une balise HTML pour commencer à utiliser votre composant. p>

JavaScript :

"use strict";

var Comment = React.createClass({
  displayName: "Comment",

  render: function render() {
    var rawMarkup = marked(this.props.children.toString(), { sanitize: true });
    return React.createElement(
      "div",
      { className: "comment" },
      React.createElement(
        "h2",
        { className: "commentAuthor" },
        this.props.author
      ),
      React.createElement("span", { dangerouslySetInnerHTML: { __html: rawMarkup } })
    );
  }
});

Assurez-vous d'inclure la bibliothèque React et de mettre le code HTML dans la balise body qui sera servie par l'application PHP AltoRouter, par exemple :



  
    React Example
    
    
    
    
  
  
    
    
  

Utilisateur Laravel

Pour le framework PHP très populaire Laravel, il existe react-laravel bibliothèque qui active React.js dans les vues Blade.

Par exemple :

@react_component('Message', [ 'title' => 'Hello, World' ], [ 'prerender' => true ])
L'indicateur

prerender indique à Laravel de restituer le composant côté serveur, puis de le monter côté client.

Exemple d'application Laravel 5.2 + React

Consultez cet excellent référentiel de démarrage pour des exemples de Spharian exécutant Laravel + React.

Pour afficher le code React dans Laravel, définissez le code source du fichier React dans la balise index.blade.php body, par exemple, ajoutez ce qui suit :


.NET

Grâce au framework ReactJS.NET, vous pouvez facilement introduire React dans vos applications .NET.

Installez le package ReactJS.NET dans l'IDE Visual Studio via le gestionnaire de packages NuGET pour .NET.

Recherchez les packages disponibles pour "ReactJS.NET (MVC 4 et 5)" et installez-le. Vous pouvez désormais utiliser n'importe quel code d'extension .jsx dans votre application ASP.NET.

Ajoutez un nouveau contrôleur à votre projet pour démarrer avec React + .NET et sélectionnez "Contrôleur MVC vide" pour votre modèle. Une fois créé, faites un clic droit sur return View() et ajoutez une nouvelle vue avec les détails suivants :

  • Afficher le nom : Index
  • Moteur de visualisation : Razor (CSHTML)
  • Créer une vue fortement typée : décochée
  • Créer en vue partielle : décoché
  • Utiliser la mise en page ou la page maître : décochée

Vous pouvez maintenant remplacer le code par défaut par le suivant :

@{
    Layout = null;
}


    Hello React


    
    
    
    


Maintenant, nous devons créer le Example.jsx,因此在您的项目中创建该文件并添加您的 JSX référencé ci-dessus comme suit :

var CommentBox = React.createClass({
  render: function() {
    return (
      
        Hello, world! I am a CommentBox.
      
    );
  }
});
ReactDOM.render(
  ,
  document.getElementById('content')
);

Maintenant, si vous cliquez sur Play dans l'IDE Visual Studio, vous devriez voir l'exemple de boîte de commentaire Hello World.

Il s'agit d'un didacticiel détaillé sur l'écriture de composants pour ASP.NET.

Piste

Vous pouvez facilement ajouter React à n'importe quelle application Rails (3.2+) en utilisant react-rails. Tout d'abord, ajoutez simplement la gemme :

gem 'react-rails', '~> 1.7.0'

Et installez :

bundle install

Vous pouvez maintenant exécuter le script d'installation :

rails g react:install

Cela mènera à deux choses :

  • components.js 清单文件位于 app/assets/javascripts/components/ C'est ici que vous mettez tout le code de votre composant.
  • Ajoutez ce qui suit à votre application.js :
//= require react
//= require react_ujs
//= require components

Maintenant .jsx le code sera rendu et vous pourrez ajouter un morceau de React au modèle, par exemple :




Ruby JSX

Babel 是 react-rails gem 的 Ruby 实现的核心,可以这样配置:

config.react.jsx_transform_options = {
  blacklist: ['spec.functionName', 'validation.react', 'strict'], # default options
  optional: ["transformerName"],  # pass extra babel options
  whitelist: ["useStrict"] # even more options
}

react-rails 安装到您的项目中后,重新启动服务器,任何 .js.jsx 文件都将在您的资产管道中进行转换。

有关 react-rails 的更多信息,请前往官方文档。

Python

要安装 python-react,请像这样使用 pip:

pip install react

现在,您可以通过提供 .jsx 组件的路径并使用渲染服务器为应用程序提供服务,使用 Python 应用程序渲染 React 代码。通常这是一个单独的 Node.js 进程。

要运行渲染服务器,请遵循这个简单的简短指南。

现在您可以像这样启动服务器:

node render_server.js

启动你的Python应用程序:

python app.py

并在浏览器中加载 http://127.0.0.1:5000 以查看 React 代码渲染。

姜戈

react 添加到您的 INSTALLED_APPS 并提供一些配置,如下所示:

INSTALLED_APPS = (
    # ...
    'react',
)

REACT = {
    'RENDER': not DEBUG,
    'RENDER_URL': 'http://127.0.0.1:8001/render',
}

流星

要将 React 添加到您的 Meteor 项目中,请通过以下方式执行此操作:

meteor npm install --save react react-dom

然后在 client/main.jsx 添加以下示例:

import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
 
import App from '../imports/ui/App.jsx';
 
Meteor.startup(() => {
  render(, document.getElementById('render-target'));
});

这是实例化一个 App React 组件,您将在 imports/ui/App.jsx 中定义该组件,例如:

import React, { Component } from 'react';

import Headline from './Headline.jsx';

// The App component - represents the whole app
export default class App extends Component {
  getHeadlines() {
    return [
      { _id: 1, text: 'Legalisation of medical marijuana goes worldwide!' },
      { _id: 2, text: 'Matt Brown goes inside the cult of scientology' },
      { _id: 3, text: 'The deep web: A criminals dream or fascinating freedom?' },
    ];
  }
 
  renderHeadlines() {
    return this.getHeadlines().map((headline) => (
      
    ));
  }
 
  render() {
    return (
      
        
          The latest headlines
        
 
        
          {this.renderHeadlines()}
        
      
    );
  }
}

Headline.jsx 内,使用以下代码:

import React, { Component, PropTypes } from 'react';
 
// Headline component - this will display a single news headline item from a iterated array
export default class Headline extends Component {
  render() {
    return (
      
<li>{this.props.headline.text}</li>
    );
  }
}
 
Headline.propTypes = {
  // This component gets the headline to display through a React prop.
  // We can use propTypes to indicate it is required
  headline: PropTypes.object.isRequired,
};

Meteor 已为 React 做好准备,并拥有官方文档。

不再有{{车把}}

需要注意的重要一点:当在 React 中使用 Meteor 时,默认的 {{handlebars}} 模板系统不再使用,因为由于项目中存在 React,它已失效。 p>

所以不要使用 {{>; TemplateName}}Template.templateName 用于 JS 中的帮助程序和事件,您将在视图组件中定义所有内容,这些组件都是 React.component 的子类。 p>

结论

React 几乎可以用于任何使用 HTML 表示层的语言。许多潜在的软件产品都可以充分利用 React 的优势。

React 使 UI View 层变得基于组件。与任何堆栈逻辑地合作意味着我们拥有一种通用的界面语言,Web 开发各个方面的设计人员都可以使用它。

React 统一了我们项目的界面、品牌和所有部署中的一般应急措施,无论设备或平台有何限制。此外,在自由职业、基于客户的工作或大型组织内部,React 确保您的项目可重用代码。

您可以创建自己的定制组件库,并立即在新项目中开始工作或翻新旧项目,快速轻松地创建完全反应式等距应用程序界面。

React 是 Web 开发领域的一个重要里程碑,它有潜力成为任何开发人员的必备工具。不要落后。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn