第2節課中咱們安裝了官方的一個簡易blog項目,該項目中已搭建了一個基本應用的結構,但在實際開發中,每每項目的結構並非這樣,今天這堂課咱們從0開始新建一個項目,一切都是空白,真正從0開始php
建入口文件夾public和文件 index.phpcss
修改homestead.yaml和host文件,工做環境爲home,域名tutorial.app前端
composer.json, php包配置文件vue
{ "name": "advance100/tutorial", "description": "有聲有色出品laravel系列教程", "keywords": [ "framework", "laravel", "advance100", "tutorial", "laravel學習教程" ], "license": "MIT", "type": "project", "require": { "php": ">=7.0.0", "advance100/helper": "^2.0", "fideloper/proxy": "~3.3", "laravel/framework": "5.5.*" }, "require-dev": { }, "autoload": { "psr-4": { } }, "autoload-dev": { }, "extra": { "laravel": { "dont-discover": [] } }, "scripts": { }, "config": { "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true }, "repositories": { "hooks": { "type": "composer", "url": "https://larapack.io" } } }
package.json, node包配置文件node
{ "private": true, "scripts": { "dev": "npm run development", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch-poll": "npm run watch -- --watch-poll", "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "prod": "npm run production", "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" }, "devDependencies": { "axios": "^0.16.2", "bootstrap-sass": "^3.3.7", "cross-env": "^5.0.1", "jquery": "^3.1.1", "laravel-mix": "^1.0", "lodash": "^4.17.4", "vue": "^2.1.10" } }
後臺(安裝在vendor下)jquery
vagrant@homestead:~/abcde/study/tutorial$ composer config -g repo.packagist composer https://packagist.phpcomposer.com vagrant@homestead:~/abcde/study/tutorial$ composer install
安裝後的包有webpack
包名 | 說明 |
---|---|
advance100 | 調試會用到 |
doctrine | 數據庫中會用到 |
laravel | 重點 |
mtdowling | mtdowling/cron-expression,用這個來解析cron表達式 |
psr | - |
symfony | laravel請求,響應,Cookie等繼承自它 |
egulias | egulias/email-validator郵箱校驗封裝,Yii2也用的是它 |
nesbot | nesbot/carbon,PHP 日期、時間和時區處理 API 及組件,參考 |
ramsey | ramsey/uuid用來生成惟一識別碼,參考 |
tijsverkoyen | tijsverkoyen/css-to-inline-styles轉爲頁面內的style,在發郵件時特有用 |
composer | 自動加載管理 |
erusev | erusev/parsedown用來解析markdown文件,參考 |
monolog | 錯誤日誌處理 |
paragonie | paragonie包中的random_compat用來生成隨機數 |
swiftmailer | 電子郵件 |
vlucas | 環境變量處理,爲配置文件服務 |
autoload.php | 自動加載對外文件 |
前端(安裝在node_modules下)ios
vagrant@homestead:~/abcde/study/tutorial$ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org vagrant@homestead:~/abcde/study/tutorial$ sudo cnpm i
說明:在虛擬機使用npm安裝包時,若是是非administrator用戶執行vagrant up的話,此處會報Install fail! Error: EPROTO: protocol error, symlink '_axios@0.16.2@axios' -> '/home/vagrant/abcde/study/tutorial/node_modules/axios'
,有兩個辦法解決,一是直接在windows主機安裝,這個辦法最爲簡單,二是以管理員的身份執行 vagrant up,這也能夠,但有個小問題,會另開一個虛擬機,關閉虛擬機,退出,另再以另外身份登陸後啓動 vagrant up.
我是直接在win10的dos下安裝laravel
D:\03www2018\study\tutorial>npm install -g cnpm --registry=https://registry.npm.taobao.org D:\03www2018\study\tutorial>cnpm i
在D:\03www2018\study\tutorial\node_modules有1900個項目(windows安裝是1894個)git
字符集utf8mb4 -- UTF-8 Unicode,排序規則 utf8mb4_general_cigrant all privileges on tutorial.* to daqi@localhost identified by "daqi168" WITH GRANT OPTION;
這裏的用戶名daqi和密碼daqi168等會在下面的配置文件.env.home中會用到
打開PhpStorm, Create New Project From Existing Files,指定下面三個項
Project Root項目根目錄,指的是工程目錄
Resource Root資源根目錄 指的是資源目錄 好比圖片外部資源的存放目錄
Excluded 必定要將node_modules排除掉,不然太大了,建項目會卡
建立下面文件夾及文件
項目根目錄 │ composer.json │ composer.lock │ package.json │ artisan//console入口文件 ├───public │ └╌╌╌╌ index.php // web入口文件 ├───node_modules(下面略) ├───vendor │ ├╌╌ composer │ ├╌╌ doctrine │ ├╌╌ egulias │ ├╌╌ erusev │ ├╌╌ laravel │ ├╌╌ league │ ├╌╌ monolog │ ├╌╌ mtdowling │ ├╌╌ nesbot │ ├╌╌ paragonie │ ├╌╌ psr │ ├╌╌ ramsey │ ├╌╌ swiftmailer │ ├╌╌ symfony │ ├╌╌ tijsverkoyen │ ├╌╌ vlucas │ ├╌╌ autoload.php │ └╌╌ advance100 │ ├╌╌ helper │ ├╌╌ laravel-ext //此處放laravel框架擴展,不建議項目直接繼承laravel框架 │ └╌╌ laravel-tutorials │ └╌╌src │ ├╌╌lesson01 │ ├╌╌lesson02 │ ├╌╌lesson03 │ ├╌╌lesson04 //本節課文件夾,每一課是一個獨立的項目 │ └╌╌lesson05
//將第2課中相應的文件夾拷貝過來就行 ┌───app ├───bootstrap ├───config ├───database ├───resources ├───routes ├───storage
composer.json中加上
"autoload": { "psr-4": { "App\\":"./vendor/advance100/laravel-tutorials/src/lesson04/app", "Advance100\\Laraext\\":"./vendor/advance100/laravel-ext", "Advance100\\Tutorial\\":"./vendor/advance100/laravel-tutorials/src/lesson04" } },
檢查是否有語法錯誤 vagrant@homestead:~/abcde/study/tutorial$ composer validate
更新自動加載文件 vagrant@homestead:~/abcde/study/tutorial$ composer dumpautoload
放在D:\03www2018\study\tutorial\vendor\advance100\laravel-tutorials\src\lesson04下面
此入口文件能夠爲任意名字,我改成a,少寫幾個字母
參考源代碼IlluminateFoundationConsoleKeyGenerateCommand::handle裏面講了如何生成這個key的
,它會用到配置文件中的cipher配置加密算法爲AES-256-CBCvagrant@homestead:~/abcde/study/tutorial$ php a key:generate
自動會修改.env.home中的APP_KEY配置