gpt4 book ai didi

php - 如何将 Reactjs 前端与 apache 服务器上的 php codeigniter 应用程序集成?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:15 25 4
gpt4 key购买 nike

CodeIgniter 应用程序的开发时间要早得多,当时并没有集成 ReactJS 的计划。后来添加了一个要求,将另一个 ReactJS 项目与此后端集成并替换当前的前端( View )。

CodeIgniter 应用程序不是作为 RESTful API 完成的。 .php View 文件无法替换为 reactjs 应用程序的 .js 文件,因为服务器是 Apache。运行 nodejs 服务器不会呈现 CodeIgniter View 。

Bootstrap、jquery 和简单的 javascript 可以包含在 CodeIgniter 应用程序的 View 中。但是是否可以用 javascript 文件替换 CodeIgniter 中的 PHP View 文件?

最佳答案

PHP View 文件不需要替换成js文件。使用 <script> 可以轻松地将 JavaScript 添加到 PHP 文件中标签。下面是Add React in One Minute在 CodeIgniter 应用程序中进行演示。

要将 React 演示集成到 CodeIgniter 中,请从一个简单的 Controller 开始 - React.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class React extends CI_Controller
{
public function index()
{
$this->load->view('react_view');
}
}

“ View ”文件直接来自 React 演示,但它放在 .php 文件而不是 .html 中。

对演示代码所做的唯一更改是在页面底部的脚本标记中。我的assets文件夹与 CodeIgniter 的 /application 处于同一级别文件夹。 assets里面有子文件夹用于 css、js 和图像。

/public_html
/application
/system
/assets
/js
/css
/img

所以我改变了 src对于加载 like_button.js 的标签使用我的文件布局。

“ View ”文件 react_view.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Add React in One Minute</title>
</head>
<body>

<h2>Add React in One Minute</h2>
<p>This page demonstrates using React with no build tooling.</p>
<p>React is loaded as a script tag.</p>

<p>
This is the first comment.
<!-- We will put our React component inside this div. -->
<div class="like_button_container" data-commentid="1"></div>
</p>

<p>
This is the second comment.
<!-- We will put our React component inside this div. -->
<div class="like_button_container" data-commentid="2"></div>
</p>

<p>
This is the third comment.
<!-- We will put our React component inside this div. -->
<div class="like_button_container" data-commentid="3"></div>
</p>

<!-- Load React. -->
<!-- Note: when deploying, replace "development.js" with "production.min.js". -->
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>

<!-- Load our React component. -->
<script src="assets/js/like_button.js"></script>

</body>
</html>

/assets/js/like_button.js

'use strict';

const e = React.createElement;

class LikeButton extends React.Component {
constructor(props) {
super(props);
this.state = { liked: false };
}

render() {
if (this.state.liked) {
return 'You liked comment number ' + this.props.commentID;
}

return e(
'button',
{ onClick: () => this.setState({ liked: true }) },
'Like'
);
}
}

// Find all DOM containers, and render Like buttons into them.
document.querySelectorAll('.like_button_container')
.forEach(domContainer => {
// Read the comment ID from a data-* attribute.
const commentID = parseInt(domContainer.dataset.commentid, 10);
ReactDOM.render(
e(LikeButton, { commentID: commentID }),
domContainer
);
});

关于php - 如何将 Reactjs 前端与 apache 服务器上的 php codeigniter 应用程序集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com