本笔记根据 LearnKu 教程边学边记而成。该教程以搭建出一个类似微博的Web 应用为最终成果,在过程中学习 Laravel 的相关知识。

准备开发环境

原教程使用官方推荐的 Homestead 开发环境。由于最近 Docker 开始流行,并且也有相应的 Laravel 对应的容器。所以本文以 Laradock 作为开发环境。

安装 Laradock

  1. 克隆 Laradock 仓库到本地。

    git clone https://github.com/laradock/laradock.git

    最终文件夹结构应该像这样:

    + laradock
    + project-z
  2. 配置 Laradock

    复制配置文件

    cd laradock
    cp env-example .env #复制配置文件

    进入 Workspace

    #运行 Laradock
    docker-compose up -d nginx
    #进入 Laradock Workspace

docker-compose exec --user=laradock workspace bash

#For Git Bash

winpty docker-compose exec --user=laradock workspace bash

```

**配置国内加速镜像**

```bash
# Workspace
composer config -gl #查看composer设置
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ #设置国内加速镜像
```

构建页面

创建应用

# Workspace
composer create-project laravel/laravel weibo --prefer-dist "5.8.*"

配置 Nginx 域名

cp nginx/sites/laravel.conf.example nginx/sites/weibo.conf

修改新复制出的配置文件里的路径为将要创建的项目路径。

修改 Host

编辑 C:/Windows/System32/Drivers/etc/hosts

增加一条 127.0.0.1 weibo.test

.env 文件

.env 文件包含了项目的一些设置,我们进行一些修改。

APP_NAME=Weibo
APP_ENV=local
APP_KEY=base64:nsvnM5l0N5cOzT/dFqfUoYlkYffhDPnKPuYU4AWMdPc=
APP_DEBUG=true
APP_URL=http://weibo.test

为了方便,我们在本地使用 sqlite 数据库。

注释掉原有 DB 相关设置,添加下面内容

DB_CONNECTION=sqlite
DB_DATABASE=/database/database.sqlite

并且创建相应数据库文件

touch database/database.sqlite

使用 Git 管理代码

cd weibo
git init
git add -A
git commit -m "Initial commit"

上传到 Gitee

git remote add origin git@gitee.com:codingbit/weibo.git
git push -u origin master

使用 Heroku 部署应用

需要先安装 heroku-cli 工具。

  1. 创建 Heroku App

    heroku create
  2. 配置 Procfile 文件:

    echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
    git add -A
    git commit -m "Procfile for Heroku"
    git push
    heroku buildpacks:set heroku/php
  3. 生成 App Key

    #Workspace
    $ php artisan key:generate --show
    base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
    #Host
    heroku config:set APP_KEY=base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
  4. 推送到 Heroku 上

    git push heroku master

上传成功,访问地址 https://cbit-weibo.herokuapp.com/ 即可看到效果。

统一代码风格

通过编辑器的 EditorConfig 插件,统一代码风格。

.editorconfig

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true [*.md]
trim_trailing_whitespace = false [*.yml]
indent_size = 2 [*.{js,html,blade.php,css,scss}]
indent_style = space
indent_size = 2

静态页面

架子搭好了,开始学习创建基础静态页面。

新建分支

git checkout master
git checkout -b static-pages

移除无用视图

默认的 welcome.blade.php 视图文件,没有用,删掉。

rm resources/views/welcome.blade.php

配置路由

routes/web.php

<?php

Route::get('/', 'StaticPagesController@home');
Route::get('/help', 'StaticPagesController@help');
Route::get('/about', 'StaticPagesController@about');

get 方法有两个参数:1. 访问的URL;2. 操作的控制器及对应的方法

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

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

其中,PATCH 和 DELETE 是不被浏览器所支持的,我们可以通过在提交表单中做一些手脚,让服务器以为这两个动作是从浏览器中发出的一样。

生成静态页面控制器

生成静态页面控制器:

php artisan make:controller StaticPagesController

添加三个方法

class StaticPagesController extends Controller
{
public function home()
{
return '主页';
} public function help()
{
return '帮助页';
} public function about()
{
return '关于页';
}
}

添加静态页面视图

控制器中渲染视图,需要用到 view 方法,view 方法接收两个参数,第一个参数是视图的路径名称,第二个参数是与视图绑定的数据,第二个参数为可选参数。

app/Http/Controllers/StaticPagesController.php

class StaticPagesController extends Controller
{
public function home()
{
return view('static_pages/home');
} public function help()
{
return view('static_pages/help');
} public function about()
{
return view('static_pages/about');
}
}

默认情况下,所有的视图文件都存放在 resources/views 文件夹下。

下面创建三个视图。

resources/views/static_pages/home.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>主页</h1>
</body>
</html>

resources/views/static_pages/help.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>帮助页</h1>
</body>
</html>

resources/views/static_pages/about.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>关于页</h1>
</body>
</html>

使用通用视图

使用通用视图避免代码重复的问题。

resources/views/layouts/default.blade.php

<!DOCTYPE html>
<html>
<head>
<title>@yield('title', 'Weibo App') - Laravel 新手入门教程</title>
</head>
<body>
@yield('content')
</body>
</html>

Laravel 的 Blade 模板支持继承,这意味多个子视图可以共用父视图提供的视图模板。

修改视图模板。

resources/views/static_pages/home.blade.php

@extends('layouts.default')
@section('content')
<h1>主页</h1>
@stop

resources/views/static_pages/help.blade.php

@extends('layouts.default')
@section('title', '帮助') @section('content')
<h1>帮助页</h1>
@stop

resources/views/static_pages/about.blade.php

@extends('layouts.default')
@section('title', '关于') @section('content')
<h1>关于页</h1>
@stop

Git 代码版本控制

接着让我们将本次更改纳入版本控制中:

git add -A
git commit -m "基础页面"

提交代码

将 Git 切换到 master 分支,并合并 static-pages 分支上的修改:

git checkout master
git merge static-pages

最后将代码推送到 GitHub 和 Heroku 上:

git push                     # 推送到 Gitee
git push heroku master # 上线到 Heorku

学习 Laravel - Web 开发实战入门笔记(1)的更多相关文章

  1. Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接

      Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接: 推荐给你高品质的实战课程 https://laravel-china.org/courses?rf=158 ...

  2. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  3. 《Java web 开发实战经典》读书笔记

    去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...

  4. 《Java Web开发实战》——Java工程师必备干货教材

    一年一度毕业季,又到了简历.offer漫天飞,失望与希望并存的时节.在IT行业,高校毕业生求职时,面临的第一道门槛就是技能与经验的考验,但学校往往更注重学生的理论知识,忽略了对学生实践能力的培养,因而 ...

  5. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

  6. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  7. 「Android 开发」入门笔记

    「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...

  8. HTML5移动Web开发实战 PDF扫描版​

    <HTML5移动Web开发实战>提供了应对这一挑战的解决方案.通过阅读本书,你将了解如何有效地利用最新的HTML5的那些针对移动网站的功能,横跨多个移动平台.全书共分10章,从移动Web. ...

  9. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

随机推荐

  1. shell基础之一

    Shell脚本自动化管理系统的必备基础: vim编辑器的熟练使用,SSH终端及“.vimrc”的设置等等需要熟悉. 命令基础:Linux的150个常用命令的熟练使用 Linux的正则表达式以及三剑客( ...

  2. Codeforces 1106E. Lunar New Year and Red Envelopes(DP)

    E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再 ...

  3. 使用 python 编写一个授权登录验证的模块

    使用 python 编写一个授权登录验证的模块 我们编写的思路: 1.登录的逻辑:如果用户名和密码正确,就返回 token . 2.生成 token 的逻辑,根据用户名,随机数,当前时间 + 2 小时 ...

  4. django 快速实现文件上传(四)

    继博客(三)实现的, 建两个字段,username 用户存放用户名,headImg 用户存放上传文件的路径. 重新同步数据库: 提示: 这个可能是之前已创建了表中的一条记录,之后模型中增加了一个非空的 ...

  5. docker安装Elasticsearch Kibana和Cerebro

    环境:win10家庭版,基于Docker Toolbox 首先先做好以下两步准备工作: ①.打开Oracle VM VirtualBox,设置虚拟机内存大小,默认不够安装,建议如下设置: ②.启动虚拟 ...

  6. java不用中间变量交换两个值

    public void changeVal(){ int a = 2; int b = 3; System.out.println("交换前 a:"+a+",b:&quo ...

  7. curl 使用笔记

    一.使用案例 curl -H "cookie:userName=shangyy" www.baidu.com 二.使用 1.从Netscape的网页服务器上获得该网站的主页: cu ...

  8. Fast R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1504.08083.pdf 代码下载: https://github.com/rbgirshick/fast-rcnn Abstract Co ...

  9. 用第三方工具类,将JavaBean、List、Map<String,Object>转成JSON文本

    导入第三方jar包: >commons-beanutils-1.7.0.jar >commons-collections-3.1.jar >commons-lang-2.5.jar ...

  10. Scrapy教程——搭建环境、创建项目、爬取内容、保存文件

    1.创建项目 在开始爬取之前,您必须创建一个新的Scrapy项目.进入您打算存储代码的目录中,运行新建命令. 例如,我需要在D:\00Coding\Python\scrapy目录下存放该项目,打开命令 ...