学习larave笔记-L01

学习资料是summer大佬团队写的6本教程

1.环境搭建

环境采用 https://learnku.com/laravel 社区推荐的homestead,按照文档在 vagrant up 的时候

Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

出现这个是因为主机没有开启cpu虚拟化,进入BIOS,然后将virtualization(CPU虚拟化)设置为enable就好了

2.输出hello world

在homestead用composer安装好laravel之后访问报500,是因为我在homestead.yaml的配置文件里to指向的目录是 ~/code/public 但是我的项目是在 ~/code/Laravel 里面,所以将指向的web目录改为 ~/code/Laravel/public 就好了 Linux严格区分大小写

~在windows中指向的目录是 c:/users/your_user/ 在homestead指向的是 /home/vagrant/

在这里插入图片描述
再次访问homestead.test发现页面显示 No input file specified. 出现这个是因为没有配置app:key~~~好吧,,

$ cp .env.example .env
$ php artisan key:generate
复制一个.env文件,再利用laravel提供的artisan命令工具生成app:key

再访问homestead.test终于出来了laravel欢迎界面,ok,找到resources/views/welcome.blade.php,这是laravel路由指向的默认欢迎模板,改成hello world,好啦,第一个hello world

3.git版本控制

因为集成的homestead环境,已经默认安装了git所以直接开始搭建
首先设置全局用户名和邮箱

$ git config --global user.name "Your name"
$ git config --global user.email "Your email"

设置git推送时分支相关配置

$ git config --global push.default simple

意思是在push时默认模板为 simple(简单的);当执行 git push 没有指定分支时,自动使用当前分支,而不是报错

$ git init //初始化git
$ git status //检查git状态 会输出所有存放在暂存区的文件 ps:所有更改都会被记录到暂存区
$ git add . //归纳暂存区被修改与新建文件 或者使用 git add -A //归纳暂存区所有变化(比前者多归纳了已删除文件)
$ git commit -m "remarks" //提交所有被归纳的文件到git, -m 选项后面表示本次提交的备注
$ git log //查看历史提交记录  按q退出本次查看
$ git checkout -f //将在暂存区的所有文件进行强制撤销 比如误删文件时执行此command

将项目推送到GitHub
首先为github账号设置ssh key
如果主机没有配置ssh的话参考here

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa

回到主机查看密钥,并复制下来

> cat ~/.ssh/id_rsa.pub

在这里插入图片描述
ok 添加之后新建一个仓库
在这里插入图片描述
回到homestead项目目录下

$ git remote add origin git@github.com:your_github_username/project_name.git //将本地仓库关联到远程库
$ git push -u origin master //推送到远程库

4.部署上线(heroku)

4.1 注册篇

要使用heroku部署项目,先得注册一个账号 ps:注册这个账号废了我一上午时间晕死
在这里插入图片描述

我注册的时候一直提示我,无法验证我是否是机器人,我寻思我该填的都填了咋就机器人了,疯狂点create还是不行,好吧~!!
将提示信息放到百度的input框里得知其实有一个验证程序(就是提交上面的空白部分),但是因为国内墙的原因没有加载出来!!!好吧,只能出墙了。
找了好久终于找到能用的代理了,戳这里,新注册用户可以白嫖。。
ok,按照提示跑起软件,再进来验证程序加载出来了~~你以为到这里就能注册了吗,还没有!!!

在这里插入图片描述
你妈的为什么还不行啊啊啊啊!!!再次百度说国内的邮箱不行,ok去注册谷歌邮箱。
在这里插入图片描述
不能验证呵呵,心态爆炸,呼呼呼,最后在手机上下载qq邮箱,在qq邮箱里面注册gmail可以发送验证码,终于邮箱注册成功了。。
回到heroku将邮箱换成刚刚注册的谷歌邮箱,ok注册成功!!!

4.2 回到正轨

因为homestead已经默认安装好了heroku的命令行工具集,所以直接登录

$ heroku login  //不知道为什么用不了  heroku login -i  加上-i就好了
$ heroku keys:add //添加ssh到heroku

在这里插入图片描述
在这段描述可以看到需要利用git部署到heroku heroku官方文档

要将项目部署到 heroku 上,还需要在 Laravel 项目下新建一个 Procfile 文件,通过该配置文件来告诉 heroku 使用什么命令来启动web服务器。

$ echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
$ git add -A 
$ git commit -m "Procfile for Heroku"
$ heroku create  //创建一个heroku应用 创建完成后返回创建的应用名称 可以使用 heroku rename app-name 进行重命名但是要保证此名称未被占用

因为heroku支持多种语言,在部署时,heroku会自动检查代码是什么语言写的,然后执行针对该语言的一系列的操作准备运行环境;在laravel下默认包含package.json文件,heroku检查该文件时,它会认为此文件使用node.js编写,所以需要对应用的 buildpack(构建包) 进行声明,告诉heroku应用是用php写的

$ heroku buildpacks:set heroku/php //声明buildpack

laravel 使用 app key 完成对用户会话及其他信息的编码加密操作,所以也需要将 app key 一同加入到 heroku 配置中

$ cat .env //将APP_KEY复制下来
$ heroku config:set APP_KEY=your_app_key
$ git push heroku master //推送和部署到heroku上

推送完成后,可以运行 $ heroku domains 查看应用
我的应用

5.创建weibo应用

> cd C:/Windows/System32/Drivers/etc/ //进入hosts文件目录
> vim hosts //编辑hosts文件
> cd ~/homestead  //进入homestead安装目录
> vim homestead.yaml //编辑配置文件

更改系统的 C:/Windows/System32/Drivers/etc/hosts 文件中将域名指向该 IP 上。
将weibo.test映射到homestead目标目录
database 为新创建的项目指定数据库名

在这里插入图片描述
在这里插入图片描述
每次对homestead.yaml进行更改之后都需要进行重启才能生效

$ exit //退出homestead
> vagrant provision && vagrant reload  //重载homestead.yaml配置,并且重启虚拟机
> vagrant ssh //登入homestead
$ cd ~/code 
$ composer create-project laravel/laravel weibo --prefer-dist "5.8.*" //通过composer创建一个名为weibo的应用
$ cp .env.example .env //复制出一个.env应用文件
$ php artisan key:generate //生成密钥
$ vim .env //修改DB_DATABASE 

在这里插入图片描述在这里插入图片描述
加入git版本控制,部署heroku线上应用,参考上面

6.构建页面

$ git checkout master //切换到master分支上
$ git checkout -b static-pages //新建分支
$ rm resources/views/welcome.blade.php //删除默认视图

laravel一个完整的路由访问过程

  1. 打开浏览器在地址栏输入 URL 并访问;
  2. 路由将 URL 请求映射到指定控制器上;
  3. 控制器收到请求,开始进行处理。如果视图需要动态数据进行渲染,则控制器会开始从模型中读取数据;
  4. 数据读取完毕,将数据传送给视图进行渲染;
  5. 视图渲染完成,在浏览器上呈现出完整页面;

web端的路由定义在routes/web.php
在这里插入图片描述
驼峰命名法

当用户使用get方式访问weibo.test时映射到StaticPagesController控制器下面的home方法
完整路径为:app/Htpp/Controllers/StaticPagesController.php(laravel控制器采用大驼峰式命名法)
下面两条路由get访问,weibo.test/help映射到helo方法,weibo.test/about映射到about方法

在 Laravel 中较为常用的几个基本的 HTTP 操作分别为 GET、POST、PATCH、DELETE。

  • GET 常用于页面读取
  • POST 常用于数据提交
  • PATCH 常用于数据更新
  • DELETE 常用于数据删除

在这四个动作中,PATCH 和 DELETE 是不被浏览器所支持的,但可以通过在提交表单中做一些手脚,让服务器以为这两个动作是从浏览器中发出的一样(后面讲如何在表单中通过添加隐藏域的方式来欺骗服务器)–暂未习得

要在控制器中指定渲染某个视图,需要使用到 view 方法, view 方法接收两个参数,第一个参数是视图的路径名称,第二个参数是与视图绑定的数据,第二个参数为可选参数。
在这里插入图片描述

static_pages.home = static_pages/home //这两种写法一样的
static_pages.home 会渲染 resources/views/static_pages/home.blade.php 模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

blade模板

Blade 是Laravel 中提供的一套模板引擎,在 Blade 视图中我们可以使用 Laravel 为这套引擎定义的一些默认方法,并完全兼容 PHP 语法的书写。
在项目运行时,Laravel 会把所有的 Blade 视图进行编译缓存成普通的 PHP代码,因此你不必担心 Blade 会对应用产生负担。
现在所有视图已经创建完毕,访问对应的 URL 地址便能看到视图被成功渲染。

在上面创建的home,help,about三个模板包含了许多重复代码,违反了 DRY(Don’t repeat yourself)原则,所以需要使用通用模板

$ mkdir resources/views/layouts //创建layouts文件夹
$ vim resources/views/layouts/default.blade.php //创建通用模板

在这里插入图片描述

@yield(‘content’) 表示该占位区域将用于显示 content 区块的内容,而 content 区块的内容将由继承自 default 视图的子视图定义
Laravel 的 Blade 模板支持继承,这意味多个子视图可以共用父视图提供的视图模板。

在这里插入图片描述

使用@extends来继承父视图layouts/default.blade.php
使用 @section 和 @stop 代码来填充父视图的 content 区块

@ git checkout master //切换到主分支
@ git merge stati-pages //合并stati-pages到主分支
@ git push //推送到github上
@ git push heroku master //上线到heroku上

7.Artisan命令

Artisan 是 Laravel 提供的 CLI(命令行接口),它提供了非常多实用的命令来帮助我们开发 Laravel 应用。前面已使用过 Artisan 命令来生成应用的 App Key。 php artisan list 来查看所有可用的 Artisan 命令。

命令说明
php artisan key:generate生成App Key
php artisan make:controller生成控制器
php artisan make:model生成模型
php artisan make:policy生成授权策略
php artisan make:seeder生成 Seeder 文件
php artisan migrate执行迁移
php artisan migrate:rollback回滚迁移
php artisan migrate:refresh重置数据库
php artisan db:seed填充数据库
php artisan tinker进入 tinker 环境
php artisan route:list查看路由列表

8. 前端工作流

yarn

因为npm的安装速度,安全性和稳定性都饱受诟病,所以laravel推荐采用 yarn

yarn 在保留NPM原有工作流特性的基础上,使之变得更快、更安全、更可靠

$ yarn install  //或者 yarn 这种更加简洁的命令

当执行install的时候,yarn会先判断当前文件夹中是否存在yarn.lock,存在的话会按照文件中特定的包版本进行安装;否则读取 package.json 文件中的内容并发送到服务器上解析,解析成功后把结果写入 yarn.lock 文件中,最后安装扩展包。
Laravel 自带 yarn.lock 文件,此文件的作用与composer.lock 一致,是为了保证项目依赖代码版本号绝对一致而存在的。

据说在安装之后就能使用SCSS ps:如果你不清楚SCSS参考

$ vim resources/sass/app.scss

在这里插入图片描述
编辑成这样之后运行 npm run watch-poll

意思是每当检测到 .scss 文件发生改变时自动将其编译为 .css 文件

resources/sass/app.scss 编译的.css文件会到 public/css/app.css

Laravel Mix

原因是laravel为我们提供了mix,Laravel Mix 一款前端任务自动化管理工具,使用了工作流的模式对制定好的任务依次执行。

Mix 提供了简洁流畅的 API,让你能够为你的 Laravel 应用定义 Webpack 编译任务。Mix 支持许多常见的CSS 与JavaScript 预处理器,通过简单的调用,你可以轻松地管理前端资源。我们可以在 webpack.mix.js 文件中制定一些如资源文件的编译、压缩等任务。Laravel 已默认为我们生成了 webpack.mix.js 文件,并集成了laravel-mix 模块。

$ vim webpack.mix.js

在这里插入图片描述

webpack.mix.js 的解析引擎是 Node.js ,在 Node.js 中 require 关键词是对模块进行引用。
Mix 提供了一些函数来帮助你使用 JavaScript 文件,像是编译 ECMAScript 2015、模块编译、压缩、及简单的合并纯 JavaScript 文件。更棒的是,这些都不需要自定义的配置。
mix.functionName(‘被编译的文件’,‘编译之后文件的输出位置’); ps: .scss 文件会被编译成 .css 文件

浏览器缓存

因为浏览器缓存的问题,有时我们明明修改了样式,刷新却看不到任何变化;
在这里mix提供了解决方案,每一次文件修改做哈希处理,只需要在后面加上 .version() 就好了
只要文件修改,哈希值就会变,提醒客户端需要重新加载文件,很巧妙地解决问题。

能被自动编译的前提是你运行 npm run watch-poll 没有疯狂报错~~
反正我在找了一晚上的解决方案,还是没有解决,好吧!!那我不用了。。 ps:对小白也太不友好了吧,我去!!!如果有哪位兄弟跑起来了记得cue我
在本次学习过程中我并没有使用到这一套前端工作流,采用了曲线救国的方式
在这里插入图片描述
我是自己定义了一个myself.css文件~~其实如果能使用工作流的话上面两个link就能简写成这样:
在这里插入图片描述
而且使用SCSS的方式会少写很多css代码…
可能有人会奇怪为什么只要简写成这样,因为这样的话我所有的css只要写到 resources/sass/app.scss 它会自动编译成兼容前面所有样式的 .css文件
因为我疯狂报错所以我的不能被编译,所以只能自己再定义一个 .css 文件啦~

9.模板中使用route

{{ }} 是在 HTML 中内嵌 PHP 的 Blade 语法标识符,表示包含在该区块内的代码都将使用 PHP 来
编译运行。 route() 方法由 Laravel 提供,通过传递一个具体的路由名称来生成完整的 URL。

{{ route(‘help’) }} 想要使用这种链接方式的话,必须在路由中 web.php 给路由指定别名
在这里插入图片描述
举一个例子来说明使用这种方式的好处:假如我们的应用中有 10 个地方使用 route(‘help’) 方式书写这个 URL 地址,因为特殊原因,需要将 http://weibo.test/help 修改为 http://weibo.test/faq ,这时候,你只需要修改路由定义为以下即可:
在这里插入图片描述

9.数据库迁移

什么是数据库迁移?

在 Laravel 中,我们使用 数据库迁移 来管理数据库表结构,迁移就像是数据库中的版本控制,它让团队成
员之间能够轻松的修改跟共享应用程序的数据库结构,而不用担心并行更新数据结构而造成冲突等问题。
同时也让 Laravel 项目的部署变得很方便。不仅如此,Migration 建表要比直接手动创建表或者 .sql
文件具备额外的管理数据库的功能,如:回滚/重置/更新等。Migration 的建表方法大部分情况下能兼容
MySQL, PostgreSQL, SQLite 甚至是 Oracle 等主流数据库系统。

laravel会默认生成两个迁移文件
在这里插入图片描述

$ vim database/migrations/2014_10_12_000000_create_users_table.php

在这里插入图片描述

在该文件里定义了一个CteateUsersTable类,并继承自 Migration 基类。
CreateUsersTable 有两个方法 up 和 down

  • 当运行迁移时,up方法会调用
  • 当回滚迁移时,down方法会被调用
	//调用Schema类的create方法来创建一个users表,create方法接收两个参数,第一个表的名称,另一个接收 $table (Blueprint 实例)的闭包,$table 用来创建表中所需的数据库字段
	Schema::create('users', function (Blueprint $table) {
	 ...
	});

$table 创建字段的方法 官方文档

$ php artisan migrate //执行所有未被执行过的迁移文件
$ php artisan migrate:rollback //回滚最近一次执行的迁移

在执行迁移之后,会生成一个migrations表,迁移版本的记录
在这里插入图片描述

发现太费时间,后面只写遇到问题的部分~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值