vuethink學習筆記

1.官網(wǎng)下載源碼http://www.vuethink.com/挨厚。

下載完成后尸诽,這款后臺是前后端分離鬼雀,基于PHP開發(fā),以及Vuejs然遏。解壓后會有frotEnd 和 php 兩個安裝包贫途。
frontEnd 是前端吧彪,php是后端代碼待侵。

2.安裝前端依賴庫

首先需要有nodejs的環(huán)境,以前前端依賴庫管理工具npm姨裸。npm有時候慢秧倾,可以用淘寶的cnpm。
進入frontEnd 執(zhí)行 npm install 完成前端依賴庫安裝傀缩。(安裝完成后會出現(xiàn)一些警告那先,可以不做處理)

3.配置后臺數(shù)據(jù)庫

1)php 文件夾下面有 install.sql,先新建數(shù)據(jù)庫 tpvue, 導(dǎo)入 install.sql 語句 赡艰。
2)php 文件夾下 config文件夾 database.php 修改數(shù)據(jù)庫名售淡,用戶名,密碼慷垮,端口揖闸。

4.運行后端檢測是否成功

http://127.0.0.1/vuethink/php (也可以自行配置虛擬主機),后出現(xiàn) “vuethink接口”料身。
代表成功了汤纸,實現(xiàn)上這個路由缺失(miss)的情況下出現(xiàn)的,對應(yīng) application/admin/controller/Base.php 里面 miss() 方法

5.運行前端第一關(guān)

進入 frontEnd 芹血,執(zhí)行 npm run dev贮泞,會出現(xiàn)請求超時。造成這個問題幔烛,基于前后端分離的情況會出現(xiàn)跨域的問題啃擦。前端把frontEnd 當成了根目錄,
但是請求的接口就不是在我們的根目錄下面饿悬,而是在 php/index.php.
猜測令蛉,“cannot load http://localhost/admin/base/getConfigs”.
vuethink 的數(shù)據(jù)交互是用到 Axios,我們找到 main.js梅猿,看到“axios.defaults.baseURL=HOST",其中HOST是為 http://localhost:80(webpack.base.conf.js)
我們真正訪問的接口應(yīng)該是在 http://localhost/index.php/,因些我們需要改為 "axios.defaults.baseURL=http://localhost/index.php/".
"windows.HOST =http://localhost/index.php/"

6.進入后臺

localhost:8080 輸入用戶臺 admin ,密碼123456

7.選擇禁用eslint 報錯

由于 vuethink 采用了 eslint 嚴格的機制所以你的代碼一旦不按照這個機制寫格式膜眠,例如你寫雙引號,空格不按照對齊凉袱。
這個時候就會報錯傲宜,報錯运杭。這肯定是受不了。
不需要 eslint 驗證機制函卒,webpack.base.conf.js

  loaders: [
  eslint: {
      // configFile: './.eslintrc.json'
    },

    module: {
      preLoaders: [
        // {
        //   test: /\.js$/,
        //   exclude: /node_modules/,
        //   loader: 'eslint'
        // },
        // {
        //   test: /\.vue$/,
        //   exclude: /node_modules/,
        //   loader: 'eslint'
        // }
      ],
8.后端路由設(shè)置

后端路由是在php\config\route_admin.php 文件里面辆憔。
<?php
// +----------------------------------------------------------------------
// | Description: 基礎(chǔ)框架路由配置文件
// +----------------------------------------------------------------------
// | Author: linchuangbin linchuangbin@honghaiweb.com
// +----------------------------------------------------------------------

return [
      // 定義資源路由
      '__rest__'=>[
          'admin/rules'          =>'admin/rules',
          'admin/groups'         =>'admin/groups',
          'admin/users'          =>'admin/users',
          'admin/menus'          =>'admin/menus',
          'admin/structures'     =>'admin/structures',
          'admin/posts'          =>'admin/posts',
      ],

      // 【基礎(chǔ)】登錄
      'admin/base/login' => ['admin/base/login', ['method' => 'POST']],
      // 【基礎(chǔ)】記住登錄
      'admin/base/relogin'    => ['admin/base/relogin', ['method' => 'POST']],
      // 【基礎(chǔ)】修改密碼
      'admin/base/setInfo' => ['admin/base/setInfo', ['method' => 'POST']],
      // 【基礎(chǔ)】退出登錄
      'admin/base/logout' => ['admin/base/logout', ['method' => 'POST']],
      // 【基礎(chǔ)】獲取配置
      'admin/base/getConfigs' => ['admin/base/getConfigs', ['method' => 'POST']],
      // 【基礎(chǔ)】獲取驗證碼
      'admin/base/getVerify' => ['admin/base/getVerify', ['method' => 'GET']],
      // 【基礎(chǔ)】上傳圖片
      'admin/upload' => ['admin/upload/index', ['method' => 'POST']],
      // 保存系統(tǒng)配置
      'admin/systemConfigs' => ['admin/systemConfigs/save', ['method' => 'POST']],
      // 【規(guī)則】批量刪除
      'admin/rules/deletes' => ['admin/rules/deletes', ['method' => 'POST']],
      // 【規(guī)則】批量啟用/禁用
      'admin/rules/enables' => ['admin/rules/enables', ['method' => 'POST']],
      // 【用戶組】批量刪除
      'admin/groups/deletes' => ['admin/groups/deletes', ['method' => 'POST']],
      // 【用戶組】批量啟用/禁用
      'admin/groups/enables' => ['admin/groups/enables', ['method' => 'POST']],
      // 【用戶】批量刪除
      'admin/users/deletes' => ['admin/users/deletes', ['method' => 'POST']],
      // 【用戶】批量啟用/禁用
      'admin/users/enables' => ['admin/users/enables', ['method' => 'POST']],
      // 【菜單】批量刪除
      'admin/menus/deletes' => ['admin/menus/deletes', ['method' => 'POST']],
      // 【菜單】批量啟用/禁用
      'admin/menus/enables' => ['admin/menus/enables', ['method' => 'POST']],
      // 【組織架構(gòu)】批量刪除
      'admin/structures/deletes' => ['admin/structures/deletes', ['method' => 'POST']],
      // 【組織架構(gòu)】批量啟用/禁用
      'admin/structures/enables' => ['admin/structures/enables', ['method' => 'POST']],
      // 【部門】批量刪除
      'admin/posts/deletes' => ['admin/posts/deletes', ['method' => 'POST']],
      // 【部門】批量啟用/禁用
      'admin/posts/enables' => ['admin/posts/enables', ['method' => 'POST']],

      // MISS路由
      '__miss__'  => 'admin/base/miss',
  ];

我們要新建一個路由,admin/hello/index
'admin/hello/index' => ['admin/hello/index',['method' => 'GET']],
然后在php/application/admin/controller 新建一個Hello類
Hello.php
<?php
namespace app\admin\controller;

use app\common\controller\Common;

class Hello extends Common
{
public function index()
{

      echo "Hello Vuethink";
  }

}
Common類只是繼承了Controller類是不需要驗證的,大部分的類都繼承了ApiCommon 是需要驗證的虱咧。
這里需要注意一點熊榛,Common類的初始化方法中已經(jīng)禁止跨域,所以我們需要把接受任何請求放開才能訪問上面的路由腕巡。
// header('Access-Control-Allow-Origin:*'); // 可跨域 (這里注釋去掉玄坦,可以接受所有的訪問)。

之后我們訪問新寫的路由绘沉。127.0.0.1/vuethink/php/index.php/admin/hello/index 就可以顯示
Hello Vuethink

9.vuethink 項目部署

項目要在vue下面跑起來煎楣,一般會用npm run dev,但是不可能每次都要打開cmd跑項目车伞,我們用 npm run build,會在frontEnd文件夾下
出現(xiàn)一個dist文件夾择懂。

這里還會遇到一個問題,由于Vue的特性另玖,導(dǎo)致運行的dist文件困曙,必須是根目錄下,必須要提前配置好谦去,如果是以端口號加文件目錄的方式慷丽,則無法訪問。
需要新建虛擬站點哪轿。

部署的時候, php文件夾和dist文件夾一起部署盈魁,改虛擬目錄的路徑為dist文件路徑,即
D:/wamp/www/vuethink/frontEnd/dist/ 虛擬站點為 http://tpvue.my.com
同時需要將 main.js axios的默認地址改為axios.defaults.baseURL = 'http://127.0.0.1/vuethink/php/index.php/'
還有 window.HOST = 'http://127.0.0.1/vuethink/php/index.php'

這樣配置登錄后窃诉,點進去刷新的時候杨耙,即304重定向的時候,會出現(xiàn)404 Not Found.
因為創(chuàng)建好的dist文件后飘痛,并沒有實際存在的home文件夾或者menu方法珊膜,list方法或者html頁面都不存在,是js動態(tài)生成的宣脉,所以實際的地址會報錯车柠。
因為vue用的是單頁面應(yīng)用,用的虛擬路由塑猖。
添加中間的一段代碼
<IfModule mod_rewrite.c>
RewriteEngine On 開啟重寫
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
RewriteCond和緊追的RewriteRule是配合使用的竹祷。 RewriteCond是匹配字符串用的,第一個參數(shù)是測試的字符串羊苟,第二個參數(shù)是匹配規(guī)則塑陵,通過一個正則。
RewriteCond第一個參數(shù)基本都是用來匹配$_SERVER里的那堆參數(shù)蜡励,HTTP_HOST,REQUEST_FILENAME之類的令花。就是對應(yīng)瀏覽器地址欄里輸入的那串url進行匹配阻桅,
如果url符合這條規(guī)則,那么就走下面的這條路由兼都。RewriteCond和RewriteRuel配合使用嫂沉,路由就是一個轉(zhuǎn)的過程,原來寫的是A扮碧,經(jīng)過這個路由之后趟章,就轉(zhuǎn)給B去了。
[L]表示如果匹配的話芬萍,這個就是最后一個重寫規(guī)則尤揣。
這里的意思就是如果匹配得到index.html 那么就是最后的重寫規(guī)則搔啊。
如果請求的文件不是文件也不是目錄柬祠,就重定向到index.html

這樣做可避免出現(xiàn)上面的錯誤 ,但是又有一個缺點负芋,失去了404報錯的頁面漫蛔,需要自己額外做一個404頁面來跳轉(zhuǎn)。

Apache 配置如下:
<VirtualHost *:80>
ServerAdmin admin@localhost.com
DocumentRoot "D:/wamp/www/vuethink/frontEnd/dist/"
ServerName localhost
ServerAlias tpvue.my.com
<Directory "D:/wamp/www/vuethink/frontEnd/dist/">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
#Options FollowSymLinks
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
#Order deny,allow
#Require all granted
Require local
</Directory>
</VirtualHost>

10. webpack-hot-middleware 用 vue_cli 跑項目時旧蛾,不能熱加載莽龟。

用的webstrorm,phpstorm,將文件保存在臨時文件中锨天,所以不能熱加載毯盈。
解決方案: File => Settings => Appearance & Behavior => System Settings => Synchronization 最后一項去掉就可以了。
Use "safe write" (save changes to a temporary file first)


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末病袄,一起剝皮案震驚了整個濱河市搂赋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌益缠,老刑警劉巖脑奠,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幅慌,居然都是意外死亡宋欺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門胰伍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來齿诞,“玉大人,你說我怎么就攤上這事骂租〉昏荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵菩咨,是天一觀的道長吠式。 經(jīng)常有香客問我陡厘,道長,這世上最難降的妖魔是什么特占? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任糙置,我火速辦了婚禮,結(jié)果婚禮上是目,老公的妹妹穿的比我還像新娘谤饭。我一直安慰自己,他們只是感情好懊纳,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布揉抵。 她就那樣靜靜地躺著,像睡著了一般嗤疯。 火紅的嫁衣襯著肌膚如雪冤今。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天茂缚,我揣著相機與錄音戏罢,去河邊找鬼。 笑死脚囊,一個胖子當著我的面吹牛龟糕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悔耘,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼讲岁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衬以?” 一聲冷哼從身側(cè)響起缓艳,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泄鹏,沒想到半個月后郎任,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡备籽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年舶治,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车猬。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡霉猛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出珠闰,到底是詐尸還是另有隱情惜浅,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布伏嗜,位于F島的核電站坛悉,受9級特大地震影響伐厌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裸影,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一挣轨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轩猩,春花似錦卷扮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至彤委,卻和暖如春鞭铆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葫慎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工衔彻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偷办。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像澄港,于是被迫代替她去往敵國和親椒涯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理回梧,服務(wù)發(fā)現(xiàn)废岂,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • http://blog.csdn.net/hero82748274/article/details/7610093...
    流淚手心_521閱讀 1,164評論 0 0
  • 相關(guān)概念 混合開發(fā)和前后端分離 混合開發(fā)(服務(wù)器端渲染) 前后端分離后端提供接口狱意,前端開發(fā)界面效果(專注于用戶的交...
    他愛在黑暗中漫游閱讀 2,765評論 4 45
  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫閱讀 11,283評論 2 55
  • 孤星晚月掛半空湖苞, 花香晚風夜朦朧。 童戲聲聲玩興濃详囤, 糊里糊涂已半生财骨。
    趙國杰閱讀 176評論 1 3