由淺入深laravel教程第4課:徹底從零開始新建項目(實戰開始)

第2節課中咱們安裝了官方的一個簡易blog項目,該項目中已搭建了一個基本應用的結構,但在實際開發中,每每項目的結構並非這樣,今天這堂課咱們從0開始新建一個項目,一切都是空白,真正從0開始php

一: 安裝laravel框架

1. 新建項目文件夾tutorial

2. 虛擬主機配置

  • 建入口文件夾public和文件 index.phpcss

  • 修改homestead.yaml和host文件,工做環境爲home,域名tutorial.app前端

3. putty登陸虛擬機生成並配置composer.json 和 package.json文件

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"
    }
}

4. 安裝laravel和laravel-mix

後臺(安裝在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

二:建數據庫tutorial

字符集utf8mb4 -- UTF-8 Unicode,排序規則 utf8mb4_general_ci
grant all privileges on tutorial.* to daqi@localhost identified by "daqi168" WITH GRANT OPTION;
這裏的用戶名daqi和密碼daqi168等會在下面的配置文件.env.home中會用到

三:新建項目tutorial

打開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

lesson04項目下文件結構

//將第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

四: 部分重要文件

1.指定環境配置文件.env.home

放在D:\03www2018\study\tutorial\vendor\advance100\laravel-tutorials\src\lesson04下面

2. console入口文件 artisan

此入口文件能夠爲任意名字,我改成a,少寫幾個字母

3. web入口文件 index.php

4. 生成項目的key

參考源代碼IlluminateFoundationConsoleKeyGenerateCommand::handle裏面講了如何生成這個key的
,它會用到配置文件中的cipher配置加密算法爲AES-256-CBC
vagrant@homestead:~/abcde/study/tutorial$ php a key:generate自動會修改.env.home中的APP_KEY配置

五:數據遷移

六:數據填充

相關文章
相關標籤/搜索