中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel elixir怎么使用

發布時間:2022-02-14 15:22:32 來源:億速云 閱讀:169 作者:iii 欄目:編程語言

這篇文章主要介紹“laravel elixir怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“laravel elixir怎么使用”文章能幫助大家解決問題。

Laravel Elixir是一個API,該API集成了Gulp,為編譯Laravel項目中的Less、Sass、CoffeeScript以及處理許多其他日常任務提供了一個簡單的解決方案,從而減少編寫上述繁瑣任務的時間,有效提高編程效率。

本教程操作環境:windows7系統、Laravel8.5版、Dell G3電腦。

Laravel的宗旨是讓PHP開發變得輕松愉悅,所以從Laravel 5開始,提供了一個新的被稱作LaravelElixir的API。該API集成了Gulp,為編譯Laravel項目中的Less、Sass、CoffeeScript以及處理許多其他日常任務提供了一個簡單的解決方案,從而減少編寫上述繁瑣任務的時間,有效提高編程效率。

Laravel Elixir 提供了簡潔流暢的 API,讓你能夠在你的 Laravel 應用程序中定義基本的 Gulp 任務。Elixir 支持許多常見的 CSS 與 JavaScrtip 預處理器,甚至包含了測試工具。使用鏈式調用,Elixir 讓你流暢地定義開發流程,例如:

elixir(function(mix) {
    mix.sass('app.scss')
       .coffee('app.coffee');
});

如果你曾經對于上手 Gulp 及編譯資源文件感到困惑,那么你將會愛上 Laravel Elixir,不過 Laravel 并不強迫你使用 Elixir,你可以自由的選用你喜歡的自動化開發流程工具。

安裝及配置#

安裝 Node

在開始使用 Elixir 之前,你必須先確定你的機器上有安裝 Node.js。

node -v

默認情況下,Laravel Homestead 會包含你所需的一切;但是,如果你沒有使用 Vagrant,那么你可以簡單的瀏覽 Node 的下載頁面(http://nodejs.org/download/) 進行安裝。【相關推薦:laravel視頻教程】

Gulp#

接著,你需要全局安裝 Gulp(http://gulpjs.com) 的 NPM 擴展包:

npm install --global gulp

Laravel Elixir#

最后的步驟就是安裝 Elixir!在每一份新安裝的 Laravel 代碼里,你會發現根目錄有個名為 package.json 的文件。想像它就如同你的 composer.json 文件,只不過它定義的是 Node 的依賴擴展包,而不是 PHP 的。你可以使用以下的命令安裝依賴擴展包:

npm install

如果你是在 Windows 系統上或在 Windows 主機系統上運行 VM 進行開發,你需要在運行 npm install 命令時將 --no-bin-links 開啟:

npm install --no-bin-links

運行 Elixir#

Elixir 是創建于 Gulp 之上,所以要運行你的 Elixir 任務,只需要在命令行運行 gulp 命令。在命令增加 --production 標示會告知 Elixir 壓縮你的 CSS 及 JavaScript 文件:

// 運行所有任務...
gulp

// 運行所有任務并壓縮所有 CSS 及 JavaScript...
gulp --production
監控資源文件修改

因為每次修改你的資源文件之后在命令行運行 gulp 命令會相當不便,因此你可以使用 gulp watch 命令。此命令會在你的命令行運行并監控資源文件的任何修改。當發生修改時,新文件將會自動被編譯:

gulp watch

使用樣式#

項目根目錄的 gulpfile.js 包含你所有的 Elixir 任務。Elixir 任務可以被鏈式調用起來,以定義你的資源文件該如何進行編譯。

Less#

要將 Less 編譯為 CSS,你可以使用 less 方法。less 方法會假設你的 Less 文件被保存在 resources/assets/less 文件夾中。默認情況下,此例子的任務會將編譯后的 CSS 放置于 public/css/app.css

elixir(function(mix) {
    mix.less('app.less');
});

你可能會想合并多個 Less 文件至單個 CSS 文件。同樣的,生成的 CSS 會被放置于 public/css/app.css

elixir(function(mix) {
    mix.less([
        'app.less',
        'controllers.less'
    ]);
});

如果你想自定義編譯后的 CSS 輸出位置,可以傳遞第二個參數至 less 方法:

elixir(function(mix) {
    mix.less('app.less', 'public/stylesheets');
});

// 指定輸出的文件名稱...
elixir(function(mix) {
    mix.less('app.less', 'public/stylesheets/style.css');
});

Sass

sass 方法讓你能編譯 Sass 至 CSS。Sass 文件的默認讀取路徑是 resources/assets/sass,你可以使用此方法:

elixir(function(mix) {
    mix.sass('app.scss');
});

同樣的,如同 less 方法,你可以編譯多個 Sass 文件至單個的 CSS 文件,甚至可以自定義生成的 CSS 的輸出目錄:

elixir(function(mix) {
    mix.sass([
        'app.scss',
        'controllers.scss'
    ], 'public/assets/css');
});

純 CSS

如果你只是想將一些純 CSS 樣式合并成單個的文件,你可以使用 styles 方法。此方法的默認路徑為 resources/assets/css 目錄,而生成的 CSS 會被放置于 public/css/all.css

elixir(function(mix) {
    mix.styles([
        'normalize.css',
        'main.css'
    ]);
});

當然,你也可以通過傳遞第二個參數至 styles 方法,將生成的文件輸出至指定的位置:

elixir(function(mix) {
    mix.styles([
        'normalize.css',
        'main.css'
    ], 'public/assets/css');
});

Source Maps

Source maps 在默認情況下是開啟的。因此,針對每個被編譯的文件,同目錄內都會伴隨著一個 *.css.map 文件。這個文件能夠讓你在瀏覽器調試時,可以追蹤編譯后的樣式選擇器至原始的 Sass 或 Less 位置。

如果你不想為你的 CSS 生成 source maps,你可以使用一個簡單的配置選項關閉它們:

elixir.config.sourcemaps = false;

elixir(function(mix) {
    mix.sass('app.scss');
});

使用腳本

Elixir 也提供了一些函數來幫助你使用 JavaScript 文件,像是編譯 ECMAScript 6、編譯 CoffeeScript、Browserify、壓縮、及簡單的串聯純 JavaScript 文件。

CoffeeScript

coffee 方法可以用于編譯 CoffeeScript 至純 JavaScript。coffee 函數接收一個相對于 resources/assets/coffee 目錄的 CoffeeScript 文件名字符串或數組,接著在 public/js 目錄生成單個的 app.js 文件:

elixir(function(mix) {
    mix.coffee(['app.coffee', 'controllers.coffee']);
});

Browserify

Elixir 還附帶了一個 browserify 方法,給予你在瀏覽器引入模塊及 ECMAScript 6 的有用的特性。

此任務假設你的腳本都保存在 resources/assets/js,并會將生成的文件放置于 public/js/main.js

elixir(function(mix) {
    mix.browserify('main.js');
});

雖然 Browserify 附帶了 Partialify 及 Babelify 轉換器,但是只要你愿意,你可以隨意安裝并增加更多的轉換器:

npm install aliasify --save-dev
elixir.config.js.browserify.transformers.push({
    name: 'aliasify',
    options: {}
});

elixir(function(mix) {
    mix.browserify('main.js');
});

Babel

babel 方法可被用于編譯 ECMAScript 6 與 7 至純 JavaScript。此函數接收一個相對于 resources/assets/js 目錄的文件數組,接著在 public/js 目錄生成單個的 all.js 文件:

elixir(function(mix) {
    mix.babel([
        'order.js',
        'product.js'
    ]);
});

若要選擇不同的輸出位置,只需簡單的指定你希望的路徑作為第二個參數。該方法除了 Babel 的編譯外,特色與功能同等于 mix.scripts()

Scripts

如果你想將多個 JavaScript 文件合并至單個文件,你可以使用 scripts 方法。

scripts 方法假設所有的路徑都相對于 resources/assets/js 目錄,且默認會將生成的 JavaScript 放置于 public/js/all.js

elixir(function(mix) {
    mix.scripts([
        'jquery.js',
        'app.js'
    ]);
});

如果你想多個腳本的集合合并成不同文件,你可以使用調用多個 scripts 方法。給予該方法的第二個參數會為每個串聯決定生成的文件名稱:

elixir(function(mix) {
    mix.scripts(['app.js', 'controllers.js'], 'public/js/app.js')
       .scripts(['forum.js', 'threads.js'], 'public/js/forum.js');
});

如果你想合并指定目錄中的所有腳本,你可以使用 scriptsIn 方法。生成的 JavaScript 會被放置在 public/js/all.js

elixir(function(mix) {
    mix.scriptsIn('public/js/some/directory');
});

復制文件與目錄

copy 方法可以復制文件與目錄至新位置。所有操作路徑都相對于項目的根目錄:

elixir(function(mix) {
    mix.copy('vendor/foo/bar.css', 'public/css/bar.css');
});

elixir(function(mix) {
    mix.copy('vendor/package/views', 'resources/views');
});

版本與緩存清除

許多的開發者會在它們編譯后的資源文件中加上時間戳或是唯一的 token,強迫瀏覽器加載全新的資源文件以取代提供的舊版本代碼副本。你可以使用 version 方法讓 Elixir 處理它們。

version 方法接收一個相對于 public 目錄的文件名稱,接著為你的文件名稱加上唯一的哈希值,以防止文件被緩存。舉例來說,生成出來的文件名稱可能像這樣:all-16d570a7.css

elixir(function(mix) {
    mix.version('css/all.css');
});

在為文件生成版本之后,你可以在你的 視圖 中使用 Laravel 的全局 elixir PHP 輔助函數來正確加載名稱被哈希后的文件。elixir 函數會自動判斷被哈希的文件名稱:

<link rel="stylesheet" href="{{ elixir('css/all.css') }}">
為多個文件生成版本

你可以傳遞一個數組至 version 方法來為多個文件生成版本:

elixir(function(mix) {
    mix.version(['css/all.css', 'js/app.js']);
});

一旦該文件被加上版本,你需要使用 elixir 輔助函數來生成哈希文件的正確鏈接。切記,你只需要傳遞未哈希文件的名稱至 elixir 輔助函數。此函數會自動使用未哈希的名稱來判斷該文件為目前的哈希版本:

<link rel="stylesheet" href="{{ elixir('css/all.css') }}">

<script src="{{ elixir('js/app.js') }}"></script>

BrowserSync

當你對前端資源進行修改后,BrowserSync 會自動刷新你的網頁瀏覽器。你可以使用 browserSync 方法來告知 Elixir,當你運行 gulp watch 命令時啟動 BrowserSync 服務器

elixir(function(mix) {
    mix.browserSync();
});

一旦你運行 gulp watch,就能使用連接端口 3000 啟用瀏覽器同步并訪問你的網頁應用程序:http://homestead.app:3000。如果你在本機開發所使用的域名不是 homestead.app,那么你可以傳遞一個 選項 的數組作為 browserSync 方法的第一個參數:

elixir(function(mix) {
    mix.browserSync({
        proxy: 'project.app'    
    });
});

調用既有的 Gulp 任務

如果你需要在 Elixir 調用一個既有的 Gulp 任務,你可以使用 task 方法。舉個例子,假設你有一個 Gulp 任務,當你調用時會輸出一些簡單的文本:

gulp.task('speak', function() {
    var message = 'Tea...Earl Grey...Hot';

    gulp.src('').pipe(shell('say ' + message));
});

如果你希望在 Elixir 中調用這個任務,使用 mix.task 方法并傳遞該任務的名稱作為該方法唯一的參數:

elixir(function(mix) {
    mix.task('speak');
});
自定義監控器

如果你想注冊一個監控器讓你的自定義任務能在每次文件改變時就運行,只需傳遞一個正則表達式作為 task 方法的第二個參數:

elixir(function(mix) {
    mix.task('speak', 'app/**/*.php');
});

編寫 Elixir 擴展功能

如果你需要比 Elixir 的 task 方法更靈活的方案,你可以創建自定義的 Elixir 擴展功能。Elixir 擴展功能允許你傳遞參數至你的自定義任務。舉例來說,你可以編寫一個擴展功能,像是:

// 文件:elixir-extensions.js

var gulp = require('gulp');
var shell = require('gulp-shell');
var Elixir = require('laravel-elixir');

var Task = Elixir.Task;

Elixir.extend('speak', function(message) {

    new Task('speak', function() {
        return gulp.src('').pipe(shell('say ' + message));
    });

});

// mix.speak('Hello World');

就是這樣!注意,你的 Gulp 具體的邏輯必須被放置在 Task 第二個參數傳遞的構造器函數里面。你可以將此擴展功能放置在 Gulpfile 的上方,取而代之也可以導出至一個自定義任務的文件。舉個例子,如果你將你的擴展功能放置在 elixir-extensions.js 文件中,那么你可以在 Gulpfile 中像這樣引入該文件:

// 文件:Gulpfile.js

var elixir = require('laravel-elixir');

require('./elixir-extensions')

elixir(function(mix) {
    mix.speak('Tea, Earl Grey, Hot');
});
自定義監控器

如果你想在運行 gulp watch 時能夠重新觸發你的自定義任務,你可以注冊一個監控器:

new Task('speak', function() {
    return gulp.src('').pipe(shell('say ' + message));
})
.watch('./app/**');

關于“laravel elixir怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜南县| 崇明县| 武定县| 富锦市| 宿州市| 台安县| 乃东县| 惠安县| 木兰县| 梁河县| 集贤县| 长宁县| 高邮市| 庆阳市| 五河县| 白银市| 上林县| 犍为县| 寿阳县| 浦江县| 江西省| 晋江市| 孟津县| 上饶市| 秭归县| 东乡县| 浙江省| 灵宝市| 龙南县| 东乌珠穆沁旗| 长岭县| 宝应县| 浦江县| 正镶白旗| 丽水市| 澳门| 定南县| 杨浦区| 秀山| 漳平市| 津南区|