使用Bower+Gulp集成前端资源


本节我们将讨论如何将前端资源集成到项目中,包括前端资源的发布和引入。本项目将使用 Bower 和 Gulp 下载和集成 jQuery、Bootstrap、Font Awesome 以及 DataTables。

1、“偷”别人的代码

开发 web 应用最快的方式就是借鉴别人的项目。换句话说,“偷”他们的代码。

当然,不是真偷。

举个例子吧,Twitter Bootstrap 的许可证声明允许任何人可以免费使用 Bootstrap 框架。

现在的 web 站点包含很多东西:框架、库、前端资源,等等。如果每个组件都必须从头到尾自己写,不管是从时间、效率、质量上来说,都是不明智的。

所以,不要重复造轮子。

下面我们将会使用 Bower 来获取和安装前端资源包。

2、安装 Bower

由于 Bower 基于 Node.js,所以需要使用 npm 全局安装 Bower(这一步我们在之前设置本地开发环境里已经执行过):

接下来在博客项目根目录下创建 .bowerrc 文件,这是可选的,这样做的目的是为了告诉 Bower 所有下载的文件都会存放到 vendor 目录下,如果跳过这一步,Bower 将在项目根目录下创建一个 bower_dl 目录用于存放下载文件。这里我们编辑 .bowerrc 文件内容如下:

然后在博客项目中本地安装 Bower:

最后,在项目根目录下创建 bower.json 文件,用于声明 Bower 依赖的包。该文件跟 composer.json 作用类似,只不过是针对  Bower 的而已。编辑 bower.json 内容如下:

3、引入 Bootstrap

现在 bower.json 已经设置好了,接下来我们使用 Bower 引入博客后台所需的前端资源。

首先使用 Bower 来安装 Bootstrap:

执行上述安装命令时如果报错:

需要使用如下命令安装 git:

然后再次执行安装 Bootstrap 命令。

安装成功后再去查看 bower.json 你会注意到其中添加了两个依赖,一个是 jQuery,另一个是 Bootstrap:

接下来运行

这两个依赖包都会下载到 vendor/bower_dl 目录下。

4、创建 admin.less

我们将会使用 Gulp 来编译 Bootstrap 的 less 文件。

resources/assets/less 目录下创建一个 admin.less 文件,编辑该文件内容如下:

在该文件中,首先,我们导入 boostrap.less 文件(现在尚不存在,我们将使用 Gulp 将其拷贝到正确位置),然后我们导入使用的字体并对默认 CSS 略作调整。

5、编辑 gulpfile.js

现在,Bower 已经将最新版本的 jQuery 和 Bootstrap 安装到博客项目,我们可以使用 Gulp 将其合并并发布到项目中。

更新 gulpfile.js 文件内容如下:

6、运行 gulp

在项目根目录下依次运行如下命令:

该拷贝的拷贝、该合并的合并、该编译的编译:

在Laravel博客项目中执行gulp发布前端资源

执行成功后再去查看 public/assets 目录,你会看到新增了如下文件(夹):

  • public/assets/fonts
  • public/assets/css/admin.css
  • public/assets/js/admin.js

7、更新后台布局视图

现在我们已经将相应 CSS 和 JavaScript 都发布到 public/assets 目录,是时候修改后台布局视图文件  resources/views/admin/layout.blade.php 了:

在浏览器中访问 http://blog.app/admin,页面显示如下:

Laravel 博客后台首页

上一节显示的界面一样。

8、添加 Font Awesome 和 DataTables

现在 Bower 和 Gulp 都已经设置好了,前端资源也成功发布并引入视图文件了,最后我们还要添加另外两个高逼格的包:Font AwesomeDataTables,前者用于为 Bootstrap 设置图标字体,后者是一款 jQuery 表格插件,用于为 HTML 表格添加高级交互功能。

下面我们使用 Bower 来安装这些依赖包:

我们还添加了 datatables-plugins 以便使用 Bootstrap 风格的 DataTables。

接下来编辑 gulpfile.js 拷贝需要的前端资源到项目中:

然后编辑 resources/assets/less/admin.less 内容如下:

由于我们在 gulpfile.js 中使用了 Gulp 而不是 elixir 对文件进行重命名,因此需要按装 gulp-rename 模块:

最后运行 gulp 两次(一次用于拷贝文件,一次用于处理合并前端资源):

关于本节所安装的所有前端资源包的使用,我们将在下一节实现文章标签的时候见分晓。


<< 上一篇: 构建博客后台管理系统

>> 下一篇: 在后台实现文章标签增删改查功能