Laravel整合Bootstrap 4的完整方案(推荐)


Posted in Javascript onJanuary 25, 2018

如果你是想在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-sass package.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组件还依赖 jquery 和 Popper.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')

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

总结

以上所述是小编给大家介绍的Laravel整合Bootstrap 4的完整方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
jquery与prototype框架的详细对比
Nov 21 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
Oct 28 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
js编写贪吃蛇的小游戏
Aug 24 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 Javascript
JQuery中解决重复动画的方法
Oct 17 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
Javascript数组中push方法用法分析
Oct 31 Javascript
Js类的构建与继承案例详解
Sep 15 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 #jQuery
用jquery获取select标签中选中的option值及文本的示例
Jan 25 #jQuery
利用js给datalist或select动态添加option选项的方法
Jan 25 #Javascript
基于vue.js无缝滚动效果
Jan 25 #Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 #Javascript
vue通过路由实现页面刷新的方法
Jan 25 #Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 #jQuery
You might like
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
商务主管岗位职责
2013/12/08 职场文书
劳资人员岗位职责
2013/12/19 职场文书
寒假实习自荐信
2014/01/26 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
爱情保证书
2015/01/17 职场文书
孔繁森观后感
2015/06/10 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js