第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配置