后端thinkphp和前端vue怎么协调hinkphp作为服务端 , 为客户端提供数据 。而Vue是客户端的一个JavaScript框架 。便于我们对页面进行处理 。
一般情况下,vue通过异步请求来获取数据 。由于实例化vue时已经将相关的变量、模板等定义好了 。
当获取到thinkphp回传的数据后,将会自动的把数据对应的呈现在网页上 。
前端vue与后端Thinkphp在服务器的部署vue在服务端部署时,我们都知道通过npm run build 指令打包好的dist文件 , 通过http指定是可以直接浏览的,Thinkphp通过域名指向index.php文件才可以浏览 。要使前端正常调用后端数据,有两种方法:1、前端跨域调用后端数据,2、前端打包文件部署在后端的服务器文件夹下(同域) 。
web服务器: apache
一、跨域
在服务器配置站点:
在路径/home/www/下创建test项目文件夹,用来放项目文件 。
找到httpd-vhosts.conf文件配置站点
前端站点:
ServerName test.test.com
DocumentRoot "/home/www/test/dist"
DirectoryIndex index.html
后端站点:
ServerName test.testphp.com
DocumentRoot "/home/www/test/php"
DirectoryIndex index.php
将前端打包好的dist文件放在/home/www/test/ 文件夹下,运行可浏览,当路径改变时 , 刷新会出现404错误 。此时dist文件下创建一个.htaccess文件 , 当路径不存在时,路径指向能解决此问题 。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
在/home/www/test文件夹下创建项目根目录php文件夹,将thinkphp文件放在php下 。TP5的入口文件在public文件下,在这将public下的入口文件index.php挪到php文件夹下(个人习惯将入口文件放在项目根目录), 后端绑定Index模块 。
前端调用后端接口,存在跨域,跨域解决方法有好几种,在这我将在后端php做配置 , 解决跨域问题 , 在公用控制器设置跨域配置:
class Common extends Controller
{
public $param;
// 设置跨域访问
public function _initialize()
{
parent::_initialize();
isset($_SERVER['HTTP_ORIGIN']) ? header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']) : '';
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");
$param =Request::instance()-param();
$this-param = $param;
}
}
前端调用登录接口: this.axios.post('', {user: '', password: ''}) 。
(可在webpack.base.conf.js文件下可定义接口:)
二、同域
后端配置同上 , 公共配置器中的header配置注释 。将前端的dist文件下的所有文件(包含.htaccess),放在php文件夹下 。将后端index控制器的index方法的路径重定向php下的index.html文件:
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index() {
$this-redirect('/index.html');
}
}
前端调用登录接口: this.axios.post('/index.php/base/login', {user: '', password: ''})
【vue与php对接数据 vue+php+mysql】 转自:
php文件如何接受vue前端axios传过来的参数实现登录验证?前端请求要么GET要么POST 。
你在php里面获取的话可以使用超全局变量: $_GET/$_POST 。
根据对应的请求方式可以直接获取到所有的请求数据 。
如何在vue里面访问php端口不同,就涉及到ajax的跨域问题 。ajax跨域可以用jsonp的方式来传递数据,也可以在被请求的页面上加入header:Access-Control-Allow-Origin:* , *代表任何请求来源,也可以改成指定的IP或域名进行限制,不过这种方法安全级别较低,不能用来获取安全要求较高的数据 。
推荐阅读
- ppt如何增加作品交互性,ppt如何增加作品交互性动画
- c语言数组保存到文件中,c语言怎么往数组里面存数据
- css编写客户注册网页,用css实现登录注册页面切换
- 罗永浩在哪直播带货,罗永浩在哪儿直播带货
- 怎么看mysql激活 mysql数据库激活
- 微信视频号助手怎么弄的,微信视频号小助手
- oracle客户端导入导出,oracle 数据导出导入
- 古风经营店铺游戏,古风经营游戏大全
- php修改数据表名 php修改mysql指定表数据