前端vue与后端Thinkphp在服务器的部署
vue在服务端部署时,我们都知道通过npm run build 指令打包好的dist文件,通过http指定是可以直接浏览的,Thinkphp通过域名指向indexphp文件才可以浏览。要使前端正常调用后端数据,有两种方法:1、前端跨域调用后端数据,2、前端打包文件部署在后端的服务器文件夹下(同域)。
web服务器: apache
一、跨域
在服务器配置站点:
在路径/home/www/ 下创建test项目文件夹,用来放项目文件。
找到httpd-vhostsconf文件配置站点
前端站点:
ServerName testtestcom
DocumentRoot "/home/www/test/dist"
DirectoryIndex indexhtml
后端站点:
ServerName testtestphpcom
DocumentRoot "/home/www/test/php"
DirectoryIndex indexphp
将前端打包好的dist文件放在/home/www/test/ 文件夹下,运行http://testtestcom可浏览,当路径改变时,刷新会出现404错误。此时dist文件下创建一个htaccess文件,当路径不存在时,路径指向http://testtestcom/indexhtml能解决此问题。
RewriteEngine On
RewriteBase /
RewriteRule ^index\html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /indexhtml [L]
在/home/www/test文件夹下创建项目根目录php文件夹,将thinkphp文件放在php下。TP5的入口文件在public文件下,在这将public下的入口文件indexphp挪到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;
}
}
前端调用登录接口: thisaxiospost('http://testtestphpcom/indexphp/base/login', {user: '', password: ''})。
(可在webpackbaseconfjs文件下可定义接口:http://testtestphpcom/indexphp/)
二、同域
后端配置同上,公共配置器中的header配置注释。将前端的dist文件下的所有文件(包含htaccess),放在php文件夹下。将后端index控制器的index方法的路径重定向php下的indexhtml文件:
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index() {
$this->redirect('/indexhtml');
}
}
前端调用登录接口: thisaxiospost('/indexphp/base/login', {user: '', password: ''})
转自:https://blogcsdnnet/qq_35465132/article/details/78986675
前言:
关于vue和elementui安装导入使用不做介绍
1template中首先展示upload多张上传
2当upload组件发生改变时处罚addFile
3提交到服务器,拿到服务器的数据地址
3显示 将拿到的数据放进一个数组中显示到file-list中去就好了
至此,完结。
有不对的地方欢迎指导哦。
既然是布署,哪默认就应该是生产环境下的布署,vue开发的应用本质上就是静态文件,无论你用何种web服务器,放上去就应该能通过http访问
接下来我来帮大家来捋一捋
首先VUE 是一个javascript的前端框架,注定了它是运行在浏览器里的,对服务器本地没有任何要求,只要一个静态文件服务器能通过http访问到其资源文件就足矣!无论你是用apache ,ngnix 就算你要用node 自己实现一个静态文件服务器,也用不了多少行代码。
npm run dev 是用来在本地开发的时候做调试用的,vue开发的是前端的东西,不是nodejs 服务端程序,按道理讲,生产环境里就不该存在npm,甚至nodejs也不需要(用nodejs来做web静态服务的除外),楼主通过ssh进入到服务器里,再运行npm run dev 来启动哪是开发机上做的事情。正确的做法很简单,通过npm run build 把生成的dist文件夹(不要上传文件夹)里的内容上传到http服务器上就可以通过 http来访问了,开发机上正常,上传以后 程序出现错误不能运行的原因9999%的可能性是你引用资源的路径有问题。
一般如果vue框架的程序上传到网站服务器的根目录下是不 会有问题的,也不存在资源文件引用错误的情况,但如果你不是根目录,就会有问题,通过vue-cli 生成的开发目录,build以后默认引用资源文件的路径是
有更多疑问 ”可以咨询 ”小鸟云,它是的一家服务器厂商,我一直在用他们产品!
在dist目录下的static静态资源,通过路由访问时,会多出一个路由在静态资源前面,如:
ip:8080/Test/static/onejs
Test路由的存在导致 onejs报404问题;
项目在构建dist时,路由配置的问题,找到Vue项目下
/src/router/indexjs文件,
更改为如图方式:
重新 npm run build,将dist替换到服务器上,重新构建docker镜像及启动容器即可
创建文件选择按钮。
1、在Vue组件中创建一个用于选择文件的按钮。
2、使用Vue的事件绑定,监听文件选择按钮的change事件。
3、利用Vue的HTTP库(如axios)或其他文件上传插件,将选择的文件上传至服务器。
vue项目导入本地json文件的2种方法
一、通过网络请求导入
步骤:
1找到vue项目目录下的build/webpackdevconfjs文件
2
3
4在页面钩子函数触发时,调用
created() {
this$httpget('/api/customs_cut_mode')then((response) => {
response = responsebody;
if (responseerrno == ERR_OK||responseerrno ==0) {
thiscustoms_cut_mode= responsedata;
}
});
}
二、通过ES6导入本地json
1将json数据放入指定目录。
2在页面引入
import customs_cut_mode from '//common/Alljson/customs_cut_modejson'
3页面使用
mounted() {
thiscustoms_cut_mode= customs_cut_mode
// consolelog( thiscustoms_cut_mode)
},
一、将vue项目进行打包编译后,根目录生成dist的文件
当出现如上图显示时,说明打包编译完成,已经生成dist文件
二、打开iis服务器
打开iis服务器后选中网站后右击选添加网站,就可对网站进行配置,物理路径选择编译后的dist文件夹后选确定就行。
三、右击选择启动后出现如下报错信息:
除非Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站
解决:
打开命令提示符中输入servicesmsc ,打开服务。
找到windows install及word wide web发布服务选项,分别右击启动,并右键属性改为启动类型就可以。
这是重新启动下,就可以访问。
0条评论