Laravel之路 —— L01学习笔记

Laravel之路

记录Laravel学习之旅。 ——2021年7月3日

个人背景

计算机软件工程专业毕业生,用 PHP、MySQL 开发过网站,历时半年,没有运用任何框架,但因为无法忍受自己的开发文档杂乱无章,决定开始学习这个被大多数人称之为“优雅”的框架——Laravel。

教程选择

对比过的教程:

  • Youtube 因为之前PHP也是跟着一位博主学习的,所以也跟着学习了Laravel系列
  • Laracasts 这是Laravel的官方视频教程
  • 还有就是B站了,也有很多优秀的博主
  • 本社区的教程是唯一一个我接触过的纯文档文本教程,因为个人更偏向于看视频教程,所以没有第一时间选择这个教程,但静下心来对比一下本教程主要有以下几点好处(随时补充):
    Git工作流
    项目经历(跟随本教程学习完成后会有Git的开源项目经历)
    多课程多角度

学习笔记方式

个人认为学习的最好方式就是问答,这也是为什么我自己会有很多的问题。
本笔记也会以简述、提问和回答的方式进行。(欢迎各位大佬对问题进行回答或者改进。)
问题的回答并不会在当天,而是随着学习的深入再去回答之前的问题。

笔记结构:

  1. 简述
    对文件重要知识点的归总和理解

  2. 命令行报错
    进行项目开发时 Terminal 终端命令行报错的情况以及解决方法

  3. 问答
    自己的问题,如果经过搜索找到答案的就会附带答案,如果没有找到或还是不理解的就会只有问题,欢迎各位大佬帮忙解答。

  4. 结果
    学习成果展示

学习环境

Windows10家庭版
Laravel 8.x

笔记

第一、二章

简述

第一、二章——2021/7/3:环境搭建,部署网站。

  1. 配置完成后每次运行项目都需要执行以下命令进入虚拟机:
    cd ~/Homestead
    vagrant up
    vagrant ssh
  2. 项目创建成功!👏
    Laravel之路
    Laravel之路
  3. 项目托管成功!👏
    Laravel之路
  4. Git使用:
    1. 保存到暂存区:
      $ git add -A
    2. 输入描述信息并提交到本地的 Git:
      $ git commit -m "Say something"
    3. 将代码推送到 GitHub:
      $ git push

命令行报错

首先强烈建议使用百度云中的所有软件,因为其中有定制或者版本匹配问题。

  1. 下载和导入 Homestead Box时报错
    执行 vagrant box add metadata.json 后报错,截图如下:
    Laravel之路
    直接使用了 vagrant box add laravel/homestead 命令
    Laravel之路
    但是随着教程的进行发现还是需要用到定制版的环境,所有又重新装了一遍,发现问题在于没有使用百度网盘里的软件版本,所以之后的学习所有软件全部使用百度网盘里的版本。
  2. 检查主机上是否生成过SSH key报错
    Laravel之路

问答

  1. 为什么一定要用Homestead环境
    博客:为什么必须使用 Homestead 来开发 Laravel 应用?

成果

Laravel之路 —— L01学习笔记

blooming-brook-28840.herokuapp.com...
————————————End for today——————————–

第三、四章

简述

第三、四章——2021/7/4,构建页面,优化页面。

  1. 项目功能思维导图:
    Laravel之路

  2. 在为新项目“Weibo”配置.env文件时,APP_KEY 和 MAIL_HOST=mailhog 和教程的配置不一样,前者或许不需要改,后者暂时没改用的我的默认配置,如果后期有关于 Mail 的需求再改。

  3. 在获取 .env 文件值时要注意是在虚拟机环境下的 weibo 目录中执行。
    Laravel之路

  4. Git 项目创建后可以直接复制页面上的命令将项目托管。
    注意最后一行命令与教程不同 教程用的分支是 master 。
    Laravel之路

  5. 在执行命令的时候,一定要查看命令是否执行成功,如果未成功要重新执行,就像下面这个截图,我因为拼写错误并未将分支成功创建,所以要再执行一遍命令。
    Laravel之路

  6. 分支的意义:
    Laravel之路

  7. 优化页面的知识点

  • Bootstrap 是一个 Web 前端框架。
  • Bootstrap 是以 NPM 扩展包的形式集成到 Laravel 项目中的,NPM 是 Node.js(一个基于 Google V8 引擎的 JavaScript 运行环境)的包管理和分发工具。
  • 我们可以使用 NPM 对这些扩展包进行安装,但由于 NPM 的安装速度,安全性和稳定性等都饱受开发者的诟病。因此在教程中改用 Facebook 在 2016 年的 10 月份开源的 Yarn 来作为 NPM 的替代品。

命令行报错

在使用 Yarn 对扩展包进行安装时,会执行以下命令

SASS_BINARY_SITE=http://npm.taobao.org/mirrors/node-sass yarn

在执行这个命令的时候, 我们会遇到ERROR。
这是因为这个操作需要管理员权限,所以无法完成操作。
解决办法:
@wyjlovec 感谢大佬提供的解决方法,以下解决方法引自 @wyjlovec
解决 mix: not found,

  1. 先清除之前的修改:

    $ git checkout master
    $ git branch -d filling-layout-style
    $ git checkout -b filling-layout-style
  2. 关闭 homestead

    > vagrant halt
  3. 关闭 Windows Terminal

  4. 以管理员权限启动 Terminal

  5. 在有管理员权限的终端启动 homestead:

    vagrant up
    vagrant ssh
  6. 按教程步骤重头开始执行操作就可以了 记得切换分支。
    Laravel之路

但我们在执行 npm run watch-poll 时又会遇到错误。

Laravel之路
错误提示时 scripts 的问题。进入 package.json 文件保存一下,就可以正常运行了,而且是最新版本.

Laravel之路
这是一个一直运行着的程序,要把它放在后台,如果要进行新的命令行操作就打开一个新的 Terminal 即可。
Ctrl + C 可以中止程序。

问答

  1. 在新的 Homestead.yaml 文件中 keys:的值与第一个 Laravel 应用比较少了一行
    Laravel之路

  2. 为什么一定要使用命令行进行文件的操作如创建,删除等?我不可以直接去文件夹点击操作吗?
    这个可能是包括我在内的许多新手的最大疑惑,因为在实际生活中我们都习惯了进行页面化操作,当然这样操作也没有什么问题,但是随着项目的进行或者编程的精进你就会理解这句话–“命令行是程序员强大的工具”。
    举个栗子:chestnut:
    大家都知道 Laravel 的框架模式是MVC—— Model、View、Controller,模型、页面、和控制器。所以我们在创建一个网站页面的时候通常需要创建三个文件甚至还有数据库的迁移文件“ Migration ”。
    好的,现在试想一下你要创建一个新的页面或者模型,如果用页面化操作你要进入三个不同的文件夹中,分别创建三个不同名称,不同格式的文件。
    但如果运用命令行:
    php artisan make:model Name -mc
    只需要一行就可以同时创建文件在对应的文件夹
    少年,人生苦短,习惯使用命令行吧!

    $ php artisan help
  3. 路由到底是个什么东西?

成果

Laravel之路

Laravel之路

————————————End for today——————————–

第五、六章

简述

第五、六章——2021/7/5,用户模型,用户注册。

  1. 进入项目:

    1. 开启虚拟机和前端SCSS文件编译

      vagrant up
      vagrant ssh
      cd ~/Code/weibo
      npm run watch-poll
    2. 打开VScode
      打开新的 Terminal

      cd ~/Code/weibo
      code .
    3. 进入虚拟机命令行执行创建分支操作

      vagrant ssh
      cd ~/Code/weibo
      git checkout master
      git checkout -b modeling-users
  2. 5.4模型文件章节全是理论,不需要操作。

  3. 用 Artisan 命令查看目前应用的路由:

    $ php artisan route:list
  4. 路由的 resource 方法
    新增的 resource 方法将遵从 RESTful 架构为用户资源生成路由。该方法接收两个参数,第一个参数为资源名称,第二个参数为控制器名称。

    Route::resource('users', 'UsersController');Copy

    上面代码将等同于:

    Route::get('/users', 'UsersController@index')->name('users.index');
    Route::get('/users/create', 'UsersController@create')->name('users.create');
    Route::get('/users/{user}', 'UsersController@show')->name('users.show');
    Route::post('/users', 'UsersController@store')->name('users.store');
    Route::get('/users/{user}/edit', 'UsersController@edit')->name('users.edit');
    Route::patch('/users/{user}', 'UsersController@update')->name('users.update');
    Route::delete('/users/{user}', 'UsersController@destroy')->name('users.destroy');
  5. overtrue/laravel-lang 中文使用说明:
    如果你需要对属性或者验证消息改写,直接在 resources/lang/xx/validation.php 中编写你需要定制的部分即可,更多使用方式请参考 overtrue/laravel-lang 中文使用说明

问答

暂无

成果

Laravel之路

Laravel之路

————————————End for today——————————–

第七、八章

简述

第七、八章——2021/7/6,会话管理,用户CRUD。

  1. vscode-git中的U,M和D文件标记含义
    Laravel之路 —— L01学习笔记
  • M modified
    你已经在github中添加过该文件,然后你对这个文件进行了修改,就会文件后标记M
  • U untracked
    你在本地新建了这个文件,还未提交到github上,就会标记U
  • D delete
    你删除了这个文件,vscode-git会记录下这个状态

命令行报错

执行 php artisan migrate:refresh --seed 命令时报错
Laravel之路 —— L01学习笔记
这是因为漏掉了教程中迁移文件的编辑:
Laravel之路 —— L01学习笔记
我们要对这一步的文件进行编辑然后重新执行命令就可以成功了
Laravel之路 —— L01学习笔记

问答

这两章的知识点有些多,而且 coding 也多,暂时没有什么问题。

成果

Laravel之路 —— L01学习笔记

Laravel之路 —— L01学习笔记

————————————End for today——————————–

第九、十、十一章

简述

第九、十章——2021/7/12,邮件发送,微博CRUD,粉丝关系。

  1. 做完第一部分以后点击注册页面会显示以下报错
    Laravel之路 —— L01学习笔记
    查询过后是少了一行代码
    Laravel之路 —— L01学习笔记
    在报错页面添加下一行代码后可以正常运行
    return $next($request);

问答

  1. 迁移文件是什么东西
    数据库迁移《Laravel 8 中文文档》

成果

Laravel之路 —— L01学习笔记
Laravel之路 —— L01学习笔记
Laravel之路 —— L01学习笔记
Laravel之路 —— L01学习笔记

————————————End for today——————————–

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

不错,期待后续

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!