關于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.pswp.cn/news/371400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371400.shtml
英文地址,請注明出處:http://en.pswp.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…