Laravel5.4 之前的版本用
gulp
的laravel-elixir
管理全段资源,Laravel5.4 版本开始使用webpack
的Laravel Mix
来管理。
一、简介
Laravel Mix
提供了一套流式 API,使用一些通用的 CSS 和 JavaScript 预处理器为 Laravel 应用定义 Webpack 构建步骤。通过简单的方法链,你可以流式定义资源管道。例如:
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
如果你对如何开始使用 Webpack
和前端资源编译感到困惑,那么你会爱上 Laravel Mix
。不过,并不是强制要求在开发期间使用它。你可以自由选择使用任何前端资源管道工具,或者压根不使用。
二、webpack用法
Mix
是位于 Webpack
顶层的配置层,所以要运行 Mix
任务你只需要在运行包含在默认 package.json
文件中的其中某个 NPM 脚本即可:
// 1.安装package.json 包
npm install
// 2.运行所有 Mix 任务...
npm run dev
// 运行所有 Mix 任务并减少输出...
// npm run production
// 3.监控前端资源改变
npm run watch
监控前端资源改变
npm run watch
命令将会持续在终端运行并监听所有相关文件的修改,Webpack将会在发现修改后自动重新编译资源文件:
npm run watch
webpack.mix.js
添加版本
const { mix } = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.version();
前端app.blade.php
引入资源方法修改:
三、Laravel-elixir
旧版本用的是laravel-elixir
处理的,只需执行gulp
命令即可整合前端的资源
gulpfile.js
为入口文件
var elixir = require('laravel-elixir');
/*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Sass
| file for our application, as well as publishing vendor resources.
|
*/
elixir(function(mix) {
mix.sass('app.scss')
.browserify('app.js');
mix.version(['js/app.js', 'css/app.css'])
});
如果运行该命令后,全端资源有缓存影响,我们可以在上边的配置文件中,对输出的资源加版本:
mix.version(['app.js', 'app.css'])
在前端 HTML 页面引入打包后的 css 或 js 资源时,可以用全局的方法 elixir
这样写:
//
//
然后再执行gulp
命令:
gulp
实例应用
在 laravel5.4
中应用 select2
插件:
将 select2.min.css
和 select2.min.js
文件经过 gulp
编译后生成app.css
和 app.js
打包后的文件,然后在总视图布局文件/layouts/app.blade.php
中应用,
{{ config('app.name', 'Laravel') }}
@include('shared.messages')
@yield('content')
@yield('js')
在底部引用app.js
代码,并添加区块布局 yield('js')
,在继承该总布局页面时,有关应用js代码的需要放在 @section('js') 如select2 @endsection
中,如下面的这个子页面 create.blade.php
。
@extends('layouts.app')
@section('content')
@include('vendor.ueditor.assets')
发布问题
@include("shared.errors")
@section('js')
@endsection
@endsection