当前位置: 首页 > news >正文

Laravel整合Bootstrap 4的完整方案

原文链接:www.pilishen.com/posts/integ…

2018年1月23日更新: 如果你是想在laravel5.5上直接使用bootstrap 4,这应该是相对明智的,因为bootstrap 4最终版本已经发布了,那么这里有一个好消息,就是你不需要一步步执行下面的步骤了,你可以通过安装一个插件来快速使用上boostrap 4了,插件链接:laravelnews/laravel-twbs4,具体如何使用就不赘述了,按照插件文档进行就好了。 如果你是在laravel5.5之前的版本整合bootstrap 4,那么你还是需要走一遍下面的流程:

(一)安装bootstrap及相应依赖

npm install bootstrap@4.0.0-beta popper.js --save-dev
复制代码

bootstrap-sasspackage.json中删除,然后再执行npm install

(二)在你的app.scss文件中引入新的bootstrap的sass文件

//替换掉之前bootstrap-sass的引入
//如果你是laravel 5.5及以后的版本,这里的node_modules换成~符号
@import "node_modules/bootstrap/scss/bootstrap";
复制代码

(三)编译bootstrap的js文件

在这一步可能你会想直接复制一份你的bootstrap.min.js文件到public目录,然后引用,但实际上这样是不行的,因为bootstrap 4的js组件还依赖jqueryPopper.js,默认的bootstrap.min.js文件并没有编译进去。

方法一 使用bootstrap.min.js来编译

这个时候我们需要在webpack.mix.js添加这么几行:

mix.autoload({
    jquery: ['$', 'window.jQuery',"jQuery","window.$","jquery","window.jquery"],
    'popper.js/dist/umd/popper.js': ['Popper']
});
mix.js([
        'node_modules/bootstrap/dist/js/bootstrap.min.js'
        ],'public/js/bootstrap.min.js')
复制代码

可以看到,我们通过mix.autoload()方法自动加载jqueryPopper.js,这样在下面mix.js()方法编译bootstrap.min.js文件的时候就把相应的依赖编译进去了,最后我们将编译好的文件发送到了public/js/目录下,然后在需要的地方调用即可。

方法二 使用bootstrap.bundle.min.js来编译

如果你到bootstrap的node_modules/bootstrap/dist/js/目录下,会发现还有一个bootstrap.bundle.min.js文件,这个文件里其实已经预先编译了Popper.js进去,但是没有jquery,所以刚才的webpack.mix.js文件里,我们其实也可以这样来写:

mix.autoload({
    jquery: ['$', 'window.jQuery',"jQuery","window.$","jquery","window.jquery"]
});
mix.js([
        'node_modules/bootstrap/dist/js/bootstrap.bundle.min.js'
        ],'public/js/bootstrap.min.js')
复制代码

最终压缩出来的文件都是一样的,如果你是用npm run dev来编译,那么第二种方法压缩出来的文件要小一点,但如果是到了生产环境,也即npm run production,那么两者的大小都是一样的。

当然,第二种方法除了少写一行,还有一个好处,就是在最开始的时候,就不需要npm install popper.js了,无可厚非了,少下载个组件而已。

(四)加载bootstrap 4的分页视图(pagination blade)

至此,大家就可以按照bootstrap 4文档在blade视图中实际使用了,或者将已有的bootstrap 3的改成4的,因为这是bootstrap的一次相对颠覆性的升级,所以无法向下兼容,取决于你的项目大小,但一般而言将bootstrap 3的改成4是需要费一阵子功夫的。

具体的不多谈,这期间可能比较困惑的就是如何升级bootstrap 4的分页样式,方法也很多,这里提供一个最简单最快速的:

首先,找到你的resources/views/vendor/pagination目录,这是laravel默认的分页样式视图文件,如果没有执行一下php artisan vendor:publish就有了

default.blade.php
bootstrap-4.blade.php

simple-default.blade.php
simple-bootstrap-4.blade.php
复制代码

可以看到laravel其实默认就已经为我们准备好了bootstrap 4的分页模板文件,这个时候最简单的就是改一下文件名字即可,之前的default.blade就是原来的bootstrap 3的,所以我们可以将其改成bootstrap-3.blade.php,然后将bootstrap-4.blade改成默认的default.blade,这样laravel加载分页的时候用的就是4的样式了。

固然,你也可以像laravel文档上说的,在每一次渲染分页的时候指定具体的分页视图文件,比如:

$paginator->links('vendor.pagination.bootstrap-4') 
复制代码

但这样太麻烦,知道即可。

相关文章:

  • Android存储方式之SQLite的使用
  • Redis项目实战 .net StackExchange.Redis
  • [Json.net]快速入门
  • getRequestURI,getRequestURL的区别
  • 2018年测试状况调查
  • 一个CCIE的梦想(转)
  • 如何快速找到多个字典中的公共键(key)
  • form表单的onclick与submit提交顺序
  • Linux下的五种错误配置
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • 关于研发成本的一些思考
  • ElasticSearch学习(9)-Java接口查询操作
  • 转载:C/C++关于string.h头文件和string类
  • 开源USM之HIDS ossec
  • SVN的标准目录结构:trunk、branches、tags(转)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【剑指offer】让抽象问题具体化
  • ECMAScript入门(七)--Module语法
  • Git初体验
  • HTML-表单
  • js中的正则表达式入门
  • Linux CTF 逆向入门
  • Lsb图片隐写
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • node-glob通配符
  • Python打包系统简单入门
  • Python连接Oracle
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • ubuntu 下nginx安装 并支持https协议
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 工程优化暨babel升级小记
  • 工作手记之html2canvas使用概述
  • 基于游标的分页接口实现
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 原生Ajax
  • scrapy中间件源码分析及常用中间件大全
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • #define,static,const,三种常量的区别
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (a /b)*c的值
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (vue)页面文件上传获取:action地址
  • (zhuan) 一些RL的文献(及笔记)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (八十八)VFL语言初步 - 实现布局
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计大学生兼职系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (算法设计与分析)第一章算法概述-习题