我们需要为我们的项目构建一个基础的页面布局,布局文件统一存放在 resources/views/layouts 文件夹中,布局涉及的文件如下:

  • app.blade.php —— 主要布局文件,项目的所有页面都将继承于此页面;
  • _header.blade.php —— 布局的头部区域文件,负责顶部导航栏区块;
  • _footer.blade.php —— 布局的尾部区域文件,负责底部导航区

我们先创建主要布局文件:resources/views/layouts/app.blade.php

$ mkdir -p resources/views/layouts/
$ touch resources/views/layouts/app.blade.php

resources/views/layouts/app.blade.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>@yield('title', 'Laravel Shop') - Laravel 电商教程</title>
<!-- 样式 -->
<link href="{{ mix('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app" class="{{ route_class() }}-page">
@include('layouts._header')
<div class="container">
@yield('content')
</div>
@include('layouts._footer')
</div>
<!-- JS 脚本 -->
<script src="{{ mix('js/app.js') }}"></script>
</body>
</html>

route_class() 是我们自定义的辅助方法,我们还需要在 helpers.php 文件中添加此方法:

bootstrap/helpers.php

function route_class()
{
return str_replace('.', '-', Route::currentRouteName());
}

此方法会将当前请求的路由名称转换为 CSS 类名称,作用是允许我们针对某个页面做页面样式定制。在后面的章节中会用到。

 

顶部导航

下面创建顶部导航模板:

$ touch resources/views/layouts/_header.blade.php

resources/views/layouts/_header.blade.php

<nav class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ url('/') }}">
Laravel Shop
</a>
</div>
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<ul class="nav navbar-nav">
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">登录</a></li>
<li><a href="#">注册</a></li>
</ul>
</div>
</div>
</nav>

注册登录链接我们将在后面章节中修改。

 

底部导航

创建文件:

$ touch resources/views/layouts/_footer.blade.php

resources/views/layouts/_footer.blade.php

<footer class="footer">
<div class="container">
<p class="pull-left">
由 <a href="http://weibo.com/u/1837553744?is_hot=1" target="_blank">Leo</a> 设计和编码 <span style="color: #e27575;font-size: 14px;">❤</span>
</p> <p class="pull-right"><a href="mailto:root@leo108.com">联系我们</a></p>
</div>
</footer>
 

首页展示

 

1. 创建控制器

我们将使用控制器 PagesController 来处理所有自定义页面的逻辑,并使用 root() 方法来处理首页的展示。

执行以下命令新建控制器:

$ php artisan make:controller PagesController

将会生成 app/Http/Controllers/PagesController.php 这个文件,我们里面新增 root() 方法:

app/Http/Controllers/PagesController.php

.
.
.
public function root()
{
return view('pages.root');
}
 

2. 视图

控制器 root() 方法中加载了视图 pages.root,目前我们还没有此视图文件,前往创建:

$ mkdir -p resources/views/pages/
$ touch resources/views/pages/root.blade.php

resources/views/pages/root.blade.php

@extends('layouts.app')
@section('title', '首页') @section('content')
<h1>这里是首页</h1>
@stop

Laravel 自带了一个主页视图 welcome.blade.php,既然我们已经自定义了主页视图,即可将废弃的主页视图删除:

$ rm resources/views/welcome.blade.php

3. 绑定路由

接下来绑定下路由,将 web.php 里的内容替换掉:

routes/web.php

<?php

Route::get('/', 'PagesController@root')->name('root');

4. 运行 Laravel Mix

Laravel Mix 一款前端任务自动化管理工具,使用了工作流的模式对制定好的任务依次执行。Mix 提供了简洁流畅的 API,让你能够为你的 Laravel 应用定义 Webpack 编译任务。Mix 支持许多常见的 CSS 与 JavaScript 预处理器,通过简单的调用,你可以轻松地管理前端资源。

使用 Mix 很简单,首先你需要使用以下命令安装 npm 依赖即可。我们将使用 Yarn 来安装依赖,在这之前,因为国内的网络原因,我们还需为 Yarn 配置安装加速:

$ yarn config set registry https://registry.npm.taobao.org

使用 Yarn 安装依赖:

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

在 yarn 命令前添加 SASS_BINARY_SITE=http://npm.taobao.org/mirrors/node-sass 的目的是告诉 yarn 到淘宝的镜像去下载 node-sass 二进制文件。

然后我们还需要修改一下 Mix 的配置文件:

webpack.mix.js

.
.
.
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version();

在末尾加了一个 version(),使 Mix 每次生成的静态文件后面加上一个类似版本号的参数,避免浏览器缓存。

然后,运行以下命令即可:

$ npm run watch-poll

watch-poll 会在你的终端里持续运行,监控 resources 文件夹下的资源文件是否有发生改变。在 watch-poll 命令运行的情况下,一旦资源文件发生变化,Webpack 会自动重新编译。

注意:在后面的课程中,我们需要保证 npm run watch-poll 一直处在执行状态中。
Windows 用户如果遇到报错请参考 https://learnku.com/laravel/t/13277/in-learning-lessons-there-are-always-craters-recording-solutions

优化页首与页脚

接下来我们来调整一下样式,样式代码在 resources/assets/sass/app.scss,是用 SASS 编写的,最终会由 Mix 来编译成 CSS。

resources/assets/sass/app.scss

@import "variables";

// Bootstrap
@import "~bootstrap-sass/assets/stylesheets/bootstrap"; // 通用样式
body {
font-family: Hiragino Sans GB, "Hiragino Sans GB", Helvetica, "Microsoft YaHei", Arial,sans-serif;
} /* 顶部导航 */ .navbar-static-top {
border-color: #e7e7e7;
background-color: #fff;
box-shadow: 0px 1px 11px 2px rgba(42, 42, 42, 0.1);
border-top: 4px solid #00b5ad;
margin-bottom: 40px;
margin-top: 0px;
} /* 底部样式 */
html {
position: relative;
min-height: 100% ;
}
body {
margin-bottom: 60px;
} .footer {
position: absolute;
bottom: 0;
width: 100% ;
/* Set the fixed height of the footer here */
height: 60px;
background-color: #000; .container {
padding-right: 15px;
padding-left: 15px; p {
margin: 19px 0;
color: #c1c1c1; a {
color: inherit;
}
}
}
}

再到浏览器中刷新页面看看效果:

 

至此,我们完成了基础页面结构的构建。

 

Git 代码版本控制

在加入版本库之前我们先执行 git status 看看新增了哪些文件:

 

可以看到 Mix 还生成了 public/fonts 和 public/mix-manifest.json,这也是不需要加入版本库的,在 .gitignore 中添加这两项:

.gitignore

.
.
.
/public/fonts
/public/mix-manifest.json

再次执行 git status 看看我们的变更是否生效:

 

确认没有问题,现在让我们将这些文件加入到版本控制中:

$ git add -A
$ git commit -m "基础布局"

上面是一系列操作,主要就是将前端的页面框架布局出来。也没有什么特别难的,按着操作就好,不懂的先记下来,

laravel 5.5 《电商实战 》基础布局的更多相关文章

  1. 微信小程序电商实战-首页(上)

    嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图:   架构图. ...

  2. 01-Flutter移动电商实战-项目学习记录

    一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常学着学着就不学了),故采用博客监督以记之. 1. ...

  3. 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计

    笔记 4.微服务下电商项目基础模块设计     简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习             小而精的方式学习微服务 1.用户服务       ...

  4. L05 Laravel 教程 - 电商实战

    https://laravel-china.org/courses/laravel-shop https://laravel-china.org/topics/13206/laravel-shop-c ...

  5. Java架构师系统培训高并发分布式电商实战activemq,netty,nginx,redis dubbo shiro jvm虚拟机视频教程下载

    15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 ...

  6. 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作

    上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...

  7. Flutter移动电商实战 --(6)dio基础_Get_Post请求和动态组件协作

    上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...

  8. laravel 5.5 《电商实战 》安装应用

    最近开始接触电商业务.公司打算采用lavarel做后端的开发,出于学习成本和时间的考虑.自己找到了一个不错的收费教程.这段时间会同步更新,分享自己的学习过程. 自己的开发环境,mac+nginx+my ...

  9. 微信小程序电商实战-商品列表流式布局

    今天给大家分享一下微信小程序中商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~ 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分 ...

随机推荐

  1. 使用office打印到文件功能进行打印测试

     大家在日常的支持工作中常会遇到各种打印问题,所以进行一些打印测试也在所难免.但是每次跑来跑去浪费了宝贵的时间,打印又浪费了纸张资源.我们也会想到安装虚拟打印机,但因为没有合适的软件,结果是我们只 ...

  2. 2Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    public class TestException { public static void main(String[] args) { String str = "1"; fo ...

  3. java jvm概述及工作过程中的内存管理

    java jvm 有分层的思想.   java类..java文件,源文件,源代码,源程序   编译器不能把源代码直接编译成0101,除非是java语言写的操作系统.   windows认识的可执行文件 ...

  4. 【Java】多线程

    class RunnableDemo implements Runnable { private Thread t; private String threadName; RunnableDemo( ...

  5. Python 面向对象(一)

    面向过程编程 (Procedural Programming) Prodcedural programming uses a list of instructions to tell the comp ...

  6. 6.Spring MVC SSM整合问题总结

    1.Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter] for ...

  7. 设置 ExpressRoute 和站点到站点并存连接

    配置站点到站点 VPN 和 ExpressRoute 共存连接具有多项优势. 可以将站点到站点 VPN 配置为 ExressRoute 的安全故障转移路径,或者使用站点到站点 VPN 连接到不是通过 ...

  8. Entity Framework工具POCO Code First Generator的使用

    在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...

  9. 用tableView实现的一种加载数据的布局

    用tableView实现的一种加载数据的布局 此博文是应朋友之邀解决他的业务逻辑问题 效果: 素材: 源码: ImageCell.h 与 ImageCell.m // // ImageCell.h / ...

  10. Linux 系统的IP与域名解析文件[局域网的DNS]

    系统的IP与域名解析文件[局域网的DNS] 局域网的DNS: 域名和主机名对应的工具,服务器直接通过域名,方便迁移 # 修改配置 vim /etc/hosts 直接添加: 192.138.25.129 ...