Alpaca-Laravel 框架(一) --- 概述,先後分離的後臺管理系統

Alpaca-Spa-Laravel 是 先後端分離 開發的一個後臺管理系統的DEMO。Laravel用來實現後端功能,Alpaca-Spa用來實現前端功能,先後端之間經過Json交換數據。php

示例中主要功能有:css

登陸、註銷
 用戶管理
 權限管理
 我的信息管理
 定時任務管理

在實際開發中能夠根據具體的需求添加新的功能。html

圖片名稱

演示地址

主頁 (Alpaca-Spa): http://www.tkc8.com前端

後臺(Alpaca-Spa-Laravel) : http://full.tkc8.comlinux

手機端sui(Alpaca-Spa-Sui) : http://full.tkc8.com/app git

代碼 (oschina ): http://git.oschina.net/cc-sponge/Alpaca-Spa-Laravelgithub

代碼 (github ): https://github.com/big-sponge/Alpaca-Spa-Laravelweb

後臺管理端登陸帳號是一個測試賬號,權限只有瀏覽功能,沒有編輯等修改功能。sql

安裝方式 (必定要注意storage、bootstrap目錄及其子目錄、文件的權限)

保證開發環境知足如下要求:

    PHP版本 >= 5.6.4
    PHP擴展:OpenSSL
    PHP擴展:PDO
    PHP擴展:Mbstring
    PHP擴展:Tokenizer
    PHP擴展:XML

    (詳細參考:Laravel 5.4)

    下載好源碼以後,你須要配置你的 Web 服務器的根目錄爲 public 目錄。
    這個目錄的  index.php 文件做爲全部 HTTP 請求進入應用的前端處理器。

    你須要配置一些權限。
    storage 和 bootstrap 目錄應該容許你的 Web 服務器寫入,不然 Laravel 將沒法寫入。

    關於配置文件:

    下載好源碼以後,請在在/config目錄下建立 .env文件,固然你也能夠複製.env.development重命名爲.env。
    不建議將.env加入git版本控制,由於配置文件中可能保存着你我的的數據庫訪問帳戶。
    配置文件詳情請參考文檔中 「配置文件」一章節

    數據庫腳本:
    /storage/sql/db_full.sql


    若是你只想在你本地查看前端功能,請將/public/admin/index.html中 g_url 的值設置爲 "http://full.tkc8.com/"。

    <script>
            var g_baseUrl = "/";  //前端資源根路徑(js,css等,在視圖模版中使用)
            var g_url = "/";      //後端接口根路徑
            $(document).ready(function () {
                g_baseUrl             = "http://" + window.location.host + "/admin/";
                // g_url                 = "http://" + window.location.host;
                g_url                 = "http://full.tkc8.com";
                Alpaca.Config.baseUrl = "/admin/"; //alpaca-spa根路徑
                Alpaca.run("#/main/index/index");
            });
    </script>

    這樣你就能夠使用本地的前端,訪問服務端(full.tkc8.com)提供的接口。

    假設你本地配置的域名爲: 127.0.0.1
    訪問: 127.0.0.1/admin

目錄結構

|--app
|  --Common                  -- 用來放置一些公共的類、函數等
|  --Models                  -- 用來放置與數據庫對應的實體類文件
|  --Modules                 -- 存放模塊相關信息,裏面包含控制器,業務邏輯等,
|     |--Manage               -- 後臺管理模塊兒後端(服務端)代碼,先後分離開發,這裏只返回Json格式的接口
|     |--Server               -- 用戶前臺模塊兒後端(服務端)代碼,同上,只返回Json格式的接口
|  ExceptionHandler.php      -- 異常處理配置
|  RouteProvider.php         -- 路由配置
|--bootstrap                  -- 是Laravel框架自己自帶的一個目錄,主要功能是提供應用初始化的一些相關功能,須要讀寫權限(含子目錄)
|  --Console                 -- Laravel Cli
|   --builder                 -- 代碼自動生成工具
|   --crontab                 -- 定時任務工具(非linux shell)
|--config                     -- 配置文件目錄
|   .env                      -- 將原來Laravel在外層的.env也挪到了config目錄下面
|--public                     -- 入口目錄,配置服務器時,應該將網站根目錄設置爲public
|  --admin                   -- 後臺管理模塊兒的前端(客戶端)部分(這裏是先後分離開發,這裏不含有任何php代碼,也能夠獨立部署)
|   --app                     -- 用戶前臺模塊兒的前端(客戶端)部分(這裏是先後分離開發,同上)
|   index.php                 -- php入口文件
|--storage                    -- 存放程序運行時的log、cache、session等文件,須要讀寫權限(含子目錄)
|--vendor                     -- composer相關目錄
|composer.json
|composer.lock

路由功能

推薦每個模塊擁有本身的一個路由配置文件shell

1 app/RouteProvider.php中能夠配置整個系統的路由組織結構
2 app/Modules/Manage/router.php配置Manage模塊的相關路由
3 app/Modules/Server/router.php配置Server模塊的相關路由
4 bootstrap/builder/router.php配置代碼生成工具的路由
5 bootstrap/crontab/router.php配置定時任務工具的路由

配置文件

1 配置文件存放在config目錄中,與原Laravel的規則同樣

2 處理與系統環境相關的配置。

  若是設置了環境變量MOD_ENV = DEVELOPMENT,系統會加載.env.development配置文件
  若是設置了環境變量MOD_ENV = PRODUCTION,系統會加載.env.production配置文件
  若是設置了環境變量MOD_ENV = TEST,系統會加載.env.test配置文件
  不然會默認加載.envt配置文件

權限控制

1 實現權限功能,須要在數據庫中存在5張表:

  用戶表、角色表、權限表、用戶角色關係表、角色權限關係表。

  這樣創建用戶-角色-權限的對應關係。

2 登陸權限控制

  1)若是當前控制器下的某一個動做不須要登陸權限:

      protected function noLogin()
      {
          // 如下Action不須要登陸權限
          return ['action1','action2'];
      }
      這樣 action1 與 action2 就不須要登陸也能夠訪問

  2)若是當前控制器下的全部動做都不須要登陸權限:

      protected function noLogin()
      {
          this->isNoLogin =true;
      }
     這樣當前控制器下的全部動做都不須要登陸權限就能夠直接訪問

3 角色權限控制

  1)若是當前控制器下的某一個動做不須要角色權限控制:

      protected function withoutAuthActions()
      {
          // 如下Action不須要登陸權限
          return ['action1','action2'];
      }
     這樣 action1 與 action2 不須要角色權限也能夠訪問

  2)若是當前控制器下的全部動做都不須要登陸權限:

      protected function noAuth()
      {
          this->isNoAuth =true;
      }
     這樣當前控制器下的全部動做都不須要登陸權限就能夠直接訪問

  3)重寫當前控制器下某一個動做的角色權限

      protected function noAuth()
      {
          return [
                'actionName'=>function($result){
                     if($_GET['id'] == 1){
                        return true;
                     }
                 },
          ];
      }

     能夠經過爲action指定一個函數來自定義動做的角色權限控制功能,

     函數有一個參數$result,

     若是$result爲true表示系統默認的角色權限控制判斷當前動做有權限訪問,false爲沒有權限訪問,

定時任務功能

示例中提供了PHP實現定時任務(非linux-shell方式,與操做系統無關)功能。

    適用於定時精確時間不低於1秒。web服務重啓、或者php重啓。該定時任務不會自動重啓。
    能夠用來處理大部分定時任務的結局方案,商城定時自動收貨,關閉評論,訂單回滾;定時發送郵件,數據備份等

    實現原理及更詳細的內容請參考下面這篇文章:
    https://my.oschina.net/u/3381391/blog/1510260

圖片名稱

前端功能

public\admin中存放前端代碼,
    public\admin\index.html是前端入口文件,
    public\admin\main\controller存放前端main模塊的控制器,
    public\admin\main\view存放前端main模塊的視圖頁面,

自動生成代碼

項目中提供了生成代碼的工具:Alpaca-Builder

目的用來快速的編寫代碼,減小一些重複的工做,主要功能是根據輸入的數據庫表名聲生成一下內容:

1 生成後端實體類
2 生成後端控制器
3 生成後端路由
4 生成前端JS控制器
5 生成前端編輯頁面
6 生成前端列表頁面
7 生成配置接口url
8 選擇是否複製到對應頁面

圖片名稱

訪問方式,瀏覽器中輸入地址:你的域名\builder

(注意: 只有當配置文件中APP_ENV=local時,才允許訪問)

開發流程

後端(服務端)部分:

    1 創建數據表
    2 編寫模型類,放在/app/Models
    3 編寫控制器類,放在模塊的Controllers目錄下面,例如: /app/Modules/Manage/Controllers/{name}Controller.php
    4 *(可選)若是有比較複雜的業務邏輯須要處理,能夠加一個Service層,放在模塊的Service目錄下面
    5 路由配置:路由通常放在當前模塊目錄下面,例如:/app/Modules/Manage/router.php

    前端(客戶端)部分:

    項目採用先後分離開發,所以前端代碼會更獨立,html文件中不含有任何php代碼
    1 編寫列表顯示頁面(兩個html)
       /public/admin/view/{name}/{name}ListView.html       頁面主體
       /public/admin/view/{name}/{name}ListDisplay.html    頁面table部分
    2 編寫編輯頁面(新增和修改用一個)
       /public/admin/view/{name}/{name}EditView.html
    3 編寫前端控制器,實現與後端數據交互, :
       路徑:/public/admin/controller/{name}.js
       通常有三個方法:
       {name}ListView方法,        顯示列表頁面,調用後臺數據接口查找列表數據
       {name}ListDisplay方法,     渲染顯示數據
       {name}EditView方法          顯示編輯頁面,調用後臺接口
    4 配置菜單:
        路徑:/public/admin/view/layout/part/pageSidebar.html
    5 配置後端接口,建議是把後端地址寫在配置文件裏面:
        路徑:/public/admin/main/main.js 中的API變量

交流方式

聯繫咱們

QQ羣: 298420174

圖片名稱

做者: Sponge 郵箱: 1796512918@qq.com

相關文章
相關標籤/搜索