laravel 5.5 《电商实战 》基础布局
我们需要为我们的项目构建一个基础的页面布局,布局文件统一存放在 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 《电商实战 》基础布局的更多相关文章
- 微信小程序电商实战-首页(上)
嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图: 架构图. ...
- 01-Flutter移动电商实战-项目学习记录
一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常学着学着就不学了),故采用博客监督以记之. 1. ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计
笔记 4.微服务下电商项目基础模块设计 简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习 小而精的方式学习微服务 1.用户服务 ...
- L05 Laravel 教程 - 电商实战
https://laravel-china.org/courses/laravel-shop https://laravel-china.org/topics/13206/laravel-shop-c ...
- Java架构师系统培训高并发分布式电商实战activemq,netty,nginx,redis dubbo shiro jvm虚拟机视频教程下载
15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 ...
- 06-Flutter移动电商实战-dio基础_Get_Post请求和动态组件协作
上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...
- Flutter移动电商实战 --(6)dio基础_Get_Post请求和动态组件协作
上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...
- laravel 5.5 《电商实战 》安装应用
最近开始接触电商业务.公司打算采用lavarel做后端的开发,出于学习成本和时间的考虑.自己找到了一个不错的收费教程.这段时间会同步更新,分享自己的学习过程. 自己的开发环境,mac+nginx+my ...
- 微信小程序电商实战-商品列表流式布局
今天给大家分享一下微信小程序中商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~ 流式布局概念 流式布局也叫百分比布局 把元素的宽,高,margin,padding不再用固定数值,改用百分 ...
随机推荐
- 激活函数(relu,prelu,elu,+BN)对比on cifar10
激活函数(relu,prelu,elu,+BN)对比on cifar10 可参考上一篇: 激活函数 ReLU.LReLU.PReLU.CReLU.ELU.SELU 的定义和区别 一.理论基础 ...
- 网络基础 Windows telnet使用简介及相关问题解决方案
Windows telnet使用简介及相关问题解决方案 by:授客 QQ:1033553122 更改telnet的默认端口(23)(仅适用XP) 步骤: 进入cmd控制窗口 tlntadmn conf ...
- C#秒转换小时
#region 秒转换小时 SecondToHour /// <summary> /// 秒转换小时 /// </summary> /// <param name=&qu ...
- 【Java】数组使用
package aaa; public class aaa { public static void main(String args[]) { int a[]={1,2,3,4}; for(int ...
- session 之session混乱解决方法(转)
知道了session混乱产生的原因之后,也就知道了问题的根源.同时也引出了很多的问题: 1.如何记录住在线人员(这里只有帐号的系统用户,不包括访客): 2.如何限制同一个帐号在同一时间段内只能够登陆一 ...
- Django之modelform修改数据库
工程包目录:https://github.com/kongzhagen/python/tree/master/Django 目的: 客户信息表Customer在前端以表单形式展示 提交Customer ...
- 发布MVCIIS报错未能加载文件或程序
未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3 ...
- MySQL的前缀索引及Oracle的类似实现
MySQL有一个很有意思的索引类型,叫做前缀索引,它可以给某个文本字段的前面部分单独做索引,从而降低索引的大小. 其实,Oracle也有类似的实现,对于文本,它可以通过substr的函数索引,实现同样 ...
- Linux rpm命令详解
rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM ...
- [沫沫金]JavaWeb企业信息系统,增加操作记录、数据库记录
背景 系统出现数据莫名丢失,业务人员的反馈无法复现问题.纠结了很久,最终老板发话要记录操作,通过日志进行分析重现 环境 SSH框架 目标 1.记录访问了那个方法,使用的参数及返回的内容 2.记录新增. ...