关于vue 框架与后台框架的混合使用的尝试

这几天我在研究前台框架和后台框架融合的问题,进行了一些尝试;

我前台选择的是 vue,当然也可以选择 react 等其他 mvvm 框架,不过 vue 对于我来说是最熟悉的;

后台话,我选择的是 php 的 lumen 框架,他是laravel 的简化版,因为比较轻量,所以这也是我的选择;

先说下我这边的环境:

系统:Mac os 10.12;

服务器:apache 2.2;

php:7.0;

lumen:5.4;

vue:2.0以上;

这是 lumen 的官网 https://lumen.laravel-china.org/docs/5.3

lumen 的下载和配置,官网里已经有了,我简单说下,首先要下载 composer, 可以用命令下载最新的版本,也可以直接取 github 上下载其他版本,不过这种方法下载完后要使用命令:

composer update //下载依赖

composer update 

直接用命令下载的话不需要;

记得 apache 开启重写 
我这边的虚拟目录指向:

<virtualhost *:83>DocumentRoot "/Users/apple/Sites/lumen/blog/public"ServerName 127.0.0.1:80<directory "/Users/apple/Sites/lumen/blog/public">Options Indexes FollowSymLinks ExecCGIOrder allow,denyAllow from allAllowOverride All</directory>
</virtualhost>

 

配置好 lumen 之后;

cd 到 public文件夹;

下载 vue;

这边创建 vue 项目的时候有2种选择:

1.vue init webpack-simple projectName

这是没有 router的简化版; 在在路由文件或者控制器或视图中指向对映的html 资源;

 

2.vue init webpack projectName

 这是完整的;

在资源指向的时候通过路由来调到对应的页面

 

我选择的是第二种

再就是三连发

cd projectName
npm install 
npm run dev

可以看到浏览器跳出了一个页面正是 vue 成功的页面;

现在东西都已经下载好了

再就是配置;

那么在 apache 中该怎么访问 vue 的项目呢;

我在网络上找了很多方案,最终还是选择了生成静态文件来进行访问,也就是:

npm run build

不过问题又来了, build 之后的修改并没有热加载;

那么在 apache 上能实现么?

我搜索了大半天,并没有发现什么能够实现的(也许是我还没发现);

现在解决的方案我想了一下 webpack 是 node 的,也只能在 npm 上热加载了(也许有其他的轮子能实现);

这里放下我的解决方案:

lumen 目录下的 /routes/web.php:

$app->get('index/{id}', 'UserController@show');

这里我添加了一个路由指向user 控制器下的 show 方法;

lumen 目录下的 /app/http/controllers/

新建的 UserController.php:

<?phpnamespace App\Http\Controllers;use App\User;use Illuminate\Http\Response;class UserController extends Controller
{public function show($id){$content = view('hello',['message'=>'Hello LaravelAcademy']);$status = 200;$value = 'text/html;charset=utf-8';return (new Response($content, $status))->header('Content-Type', $value);}
}

lumen目录下的/resources/views/

新建文件hello.blade.php:

<!DOCTYPE html>
<html>
<head><title>demo</title>
</head>
<body>
<div>视图</div>
{{$message}}{{include('Grewer/dist/index.html')}}</body>
</html>

开启 apache;

在浏览器上输入 http://127.0.0.1:83/index/1

但是你会发现vue 的首页静态资源加载成功了

,其他文件加载缺失败了 

这个时候需要对 vue 的 /config/index.js文件进行配置:

我这边是这样修改的

 assetsPublicPath: '/Grewer/dist/'

第一个路径为你的项目名称;

修改完后需要重新生成资源:

使用:

npm run build

  

这样打开http://127.0.0.1:83/index/1

 

 

发现已经成功了;

 

在就是热加载的问题;

开发的话只能在 npm run dev 上的服务器进行(也许其他的也可以,请告诉我);

使用 npm run dev 启动页面:

在该页面上进行调试;

关于跨域的问题:

在 npm 上进行的ajax 调用的借口都是apache 服务器的所以在 vue 的 index.html 上先定义好路径,比如说:

var app = {root:'http://127.0.0.1:83/' 
}

在 vue 页面调用接口的时候前缀就是 app.root+"index/1";

在 lumen 目录下的 /routes/web.php添加:

header("Access-Control-Allow-Origin:*");

我认为这是最简单的跨域解决跨域的方法;

现在的借口都能进行调用获得数据了,然后页面的话通过 vue 的router;

比如我在vue 项目中的/src/router/index.js 文件中新添加了一个路径

{path: '/test',name: 'Hello',component: Hello},

与根目录指向同一个文件;

需要跳转的时候就跳转到这里:http://127.0.0.1:83/index/1#/test

在需要上线的时候就把 vue 目录下的 app.root 修改一下,再把路由中的允许跨域关掉;

再就是 npm run build;

lumen 框架的根目录可以直接指向 vue 的 index.html;

好了,这就是前台框架和后台的混合了;

写得不好或者粗浅还请见谅;

如果你有更好的方案或者轮子,可以告诉我;

我看到了 laravel 有 mix 可以使用 webpack,下次可以尝试一下

end;

10.21更新,关于跨域的方案已经有了更好的办法,就是  webpack 的代理proxyTable,能解决大部分问题;

 

后续说明:

本框架里使用的页面是 php 文件,若能直接引用 html 文件,那就可以直接引用项目 build 之后的 index.html 就可以部署项目了

转载于:https://www.cnblogs.com/Grewer/p/7441733.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub上整理的一些工具

GitHub上整理的一些工具 GitHub 2015-11-19 10:10:47 发布您的评价: 0.0 收藏 5收藏技术站点 Hacker News&#xff1a;非常棒的针对编程的链接聚合网站Programming reddit&#xff1a;同上MSDN&#xff1a;微软相关的官方技术集中地&#xff0c;主要是文档类infoq&#x…

服务器 raid 1t硬盘吗,用了4块1T的硬盘,做了raid5,显示有2.7T,但是分区做完系统后,有700多G不能动...

满意答案ouourpt892013.11.14采纳率&#xff1a;46% 等级&#xff1a;12已帮助&#xff1a;13583人出现这种情况是由于创建的硬盘使用的是基本磁盘(MBR)格式&#xff0c;因受MBR磁盘格式技术的限制&#xff0c;MBR磁盘只支持2TB的磁盘容量&#xff0c;所以出现了你所说的情况…

如何编写更好的POJO服务

在Java中&#xff0c;您可以轻松地在Plain Old Java Object&#xff08;POJO&#xff09;类中实现一些业务逻辑&#xff0c;并且可以在高级服务器或框架中轻松运行它们。 有许多服务器/框架&#xff0c;例如JBossAS&#xff0c;Spring或Camel等&#xff0c;它们使您可以部署POJ…

mongo 唯一约束索引_快速掌握mongoDB(三)——mongoDB的索引详解

1 mongoDB索引的管理本节介绍mongoDB中的索引&#xff0c;熟悉mysql/sqlserver等关系型数据库的小伙伴应该都知道索引对优化数据查询的重要性。我们先简单了解一下索引&#xff1a;索引的本质就是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据(数据…

HBase MapReduce

1. HBase to HBase Mapper 继承 TableMapper&#xff0c;输入为Rowkey和Result. public abstract class TableMapper<KEYOUT, VALUEOUT> extends Mapper<ImmutableBytesWritable, Result, KEYOUT, VALUEOUT> { public TableMapper() { }} package com.scb.ja…

第六期的知识点

1.volatile详解 在应用程序中&#xff0c;volatile主要是被设计用来修饰被不同线程访问和修改的变量 .volatile的本意是“易变的” 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化&#xff0c;但有可能会读脏数据。当要求使用volatile声明变量值…

在DelayQueue中更改延迟,从而更改顺序

因此&#xff0c;我正在研究构建一个简单的对象缓存&#xff0c;该缓存在给定时间后会使对象过期。 显而易见的机制是使用Java并发包中的DelayedQueue类。 但我想知道是否有可能在将对象添加到队列后更新延迟。 看一下Delayed接口&#xff0c;似乎没有充分的理由不在文档中&…

vi编辑器服务器维护,vi编辑器有哪几种工作模式及如何转换_网站服务器运行维护,vi编辑器,工作模式...

整理分享一些 Linux思维导图(值得收藏)_网站服务器运行维护本篇文章整理分享了一些 Linux思维导图(值得收藏)。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。vi编辑器有三种基本的工作模式&#xff0c;分别是&#xff1a;指令行模式、…

(八)cmockery中的calculator和run_tests函数的注释代码

所分析的calculator.c和calculator_test.c文件位于 工程中的 cmockery/src/example/ 目录下&#xff0c;是一个相对而言比较全面的样例程序&#xff0c;用到了cmockery项目中的大多数单元测试方法。基本上涵盖了之前所有的样例程序中的用法&#xff0c;还有两组测试是database操…

家用双wan口路由器推荐_请推荐双WAN口的有线千兆硬路由器?

利益相关&#xff1a;TP-LINK一线销售人员(来看看会不会有推荐我司产品的2333 )路由器&#xff1a;TL-ER3220G&#xff0c;带机量300终端&#xff0c;可管理50个AP&#xff0c;最大支持四条宽带接入POE交换机&#xff1a;TL-SF1005P(5口百兆) TL-SG1005P(5口千兆) TL-SF1009PH(…

第一章魔兽窗口

开始显示第一个窗体 用户直接点登陆的话就会提示用户名不能为空密码不能为空 没有账号的话只能先注册&#xff0c;点击蓝色摁钮进入下一个窗体 这里有判断是否为空&#xff0c;注册成功后利用窗体传值&#xff0c;并且打开第一个窗口 把注册的用户名和密码写上去就可以的登陆到…

Apache Digester示例–轻松配置

解决问题–硬编码&#xff0c;需要为您的应用程序创建自定义配置&#xff0c;例如struts配置文件&#xff0c;以仅通过更改文件来改变应用程序行为。 Apache Digester可以轻松为您完成此任务。 使用Apache Digester相当容易将XML文档转换为相应的Java bean对象层次结构。 请参阅…

腾讯云搭svn服务器,腾讯云使用笔记二: 安装svn服务器及web同步

A01&#xff1a;安装subversionsudo apt-get install subversionA02:创建仓库很多目录可以放subversion文件仓库&#xff0c;最常见的是/usr/local/svn和/home/svnsudo mkdir -p /home/svn/youshengyousesudo svnadmin create /home/svn/youshengyouse//说明&#xff1a;先创建…

python将图像转换为8位单通道_使用Python将图片转换为单通道黑白图片

本文介绍如何使用python将图片转换为纯黑白的单通道图片。文中用到的脚本支持彩色、灰度、带alpha通道的输入图片以及SVG矢量图&#xff0c;支持调整输出图片大小以及设置灰度阈值。最后介绍如何输出SSD1306 OLED显示屏可用的XBM文件&#xff0c;并利用输出的XBM数据在0.96寸的…

Java FlameGraph 火焰图

上周一个偶然的机会听同事提到了Java FlameGraph&#xff0c;刚实验了一下&#xff0c;效果非常好。 一、什么是FlameGraph 直接看图说话。FlameGraph 是 SVG格式&#xff0c;矢量图&#xff0c;可以随意扩大缩小&#xff0c;看不清的信息可以放大看。图中&#xff0c;各种红橙…

ADB 常用命令

获取Android设备号 adb shell getprop ro.serialno 获取系统版本 adb shell getprop ro.build.version.release>4.2.2 获取系统api版本 adb shell getprop ro.build.version.sdk>17 获取设备分辨率&#xff08;SDK4.3&#xff09; adb shell wm size获取设备屏幕密度&am…

哪个Java线程消耗了我的CPU?

当您的Java应用程序占用100&#xff05;的CPU时&#xff0c;您该怎么办&#xff1f; 事实证明&#xff0c;您可以使用内置的UNIX和JDK工具轻松找到有问题的线程。 不需要探查器或代理。 为了进行测试&#xff0c;我们将使用以下简单程序&#xff1a; public class Main {publi…

烟草局计算机笔试,2020年广西南宁烟草局什么时候笔试?

最近广西烟草局各地市社招通知频发&#xff0c;南宁烟草局报名截止至今都无任何消息&#xff0c;根据往年的考情&#xff0c;通知近期很大可能会发布&#xff0c;将于6月底完成笔面!你备考好了吗&#xff1f;今天广西中公国企小编来给大家说一下南宁烟草局社招的笔试内容及备考…

JAVA Swing 组件演示***

下面是Swing组件的演示&#xff1a; package a_swing;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.…

Spring 3.1缓存和@CacheEvict

我的上一个博客演示了Spring 3.1的Cacheable批注的应用&#xff0c; Cacheable批注用于标记返回值将存储在缓存中的方法。 但是&#xff0c; Cacheable只是Spring的Guy为缓存而设计的一对注释​​中的一个&#xff0c;另一个是CacheEvict 。 像Cacheable一样&#xff0c; Cache…