Rumah > rangka kerja php > Laravel > Untuk apa campuran laravel digunakan?

Untuk apa campuran laravel digunakan?

青灯夜游
Lepaskan: 2023-01-14 10:48:20
asal
1286 orang telah melayarinya

Campuran Laravel digunakan untuk mengurus tugasan bahagian hadapan Ia adalah alat pengurusan automasi tugasan hadapan yang boleh menggunakan mod aliran kerja untuk melaksanakan tugasan yang ditentukan dalam turutan menyediakan API yang mudah dan lancar , membenarkan pembangun Menentukan tugas penyusunan Webpack untuk aplikasi Laravel untuk mengurus sumber bahagian hadapan dengan mudah.

Untuk apa campuran laravel digunakan?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Laravel 6, komputer DELL G3.

Apakah campuran laravel? Apa gunanya?

Laravel Mix ialah alat pengurusan automasi tugas bahagian hadapan yang menggunakan model aliran kerja untuk melaksanakan tugas yang ditentukan mengikut turutan. Mix menyediakan API mudah dan lancar yang membolehkan anda menentukan tugas kompilasi Webpack untuk aplikasi Laravel anda. Mix menyokong banyak prapemproses CSS dan JavaScript biasa, dan anda boleh mengurus sumber bahagian hadapan dengan mudah dengan panggilan mudah.

Struktur fail dan folder lalai

Fail Sass lalai berada dalam resources/assets/sass/app.scss (kandungan fail adalah betul-betul sama), manakala fail JS lalai adalah dalam resources/assets/js/app.js (Oleh kerana fail adalah betul-betul sama, jika anda ingin mengetahui lebih lanjut tentang struktur asas Vue dalam 5.3, anda boleh menyemak siaran Struktur bahagian hadapan 5.3 yang ditulis oleh Matt Stauffer) .

Jika anda menggali fail bootstrap yang dirujuk dalam app.js ( resources/assets/js/bootstrap.js ), anda akan melihat bahawa kami menggunakan Axios dan bukannya Vue-Resource untuk menyediakan X-CSRF-TOKEN ( Vue-Resource tidak akan berfungsi lagi selepas 2016).

Jika anda menjalankan npm run dev pada projek Mix, anda boleh melihat:

Untuk apa campuran laravel digunakan?

Secara lalai, lokasi fail yang kami hasilkan adalah sama seperti Elixir :public/css/app.css dan public/js/app.js.

Kaedah Campuran Utama

Seperti yang anda lihat, anda boleh menggunakan Mix dengan Sass dan JS dengan mudah. Sass, jelas, menjalankan fail Sass dan mengeluarkannya sebagai CSS. Gunakan kaedah JS untuk menyokong sintaks ECMAScript 2015, menyusun fail .vue, mengecilkan kod untuk pengeluaran dan melaksanakan pemprosesan fail JavaScript yang lain.

Anda juga boleh menggunakan kaedah .less untuk menyusun Kurang ke dalam CSS:

mix.less('resources/assets/less/app.less', 'public/css');
Salin selepas log masuk

Gunakan kaedah combine untuk menggabungkan fail bersama:

mix.combine([
    'public/css/vendor/jquery-ui-one-thing.css',
    'public/css/vendor/jquery-ui-another-thing.css'
], 'public/css/vendor.css');
Salin selepas log masuk

Gunakan copy untuk menyalin fail atau direktori:

mix.copy('node_modules/jquery-ui/some-theme-thing.css', 'public/css/some-jquery-ui-theme-thing.css');
mix.copy('node_modules/jquery-ui/css', 'public/css/jquery-ui');
Salin selepas log masuk

Tidak seperti Elixir, Peta Sumber dimatikan secara lalai dan boleh dihidupkan dengan memanggil kaedah berikut dalam webpack.mix.js:

mix.sourceMaps();
Salin selepas log masuk

Secara lalai Mix akan memberitahu anda tentang hasil kompilasi dalam bentuk pemberitahuan sistem Jika anda tidak mahu ia dijalankan, anda boleh menggunakan kaedah disableNotifications() untuk melumpuhkannya.

Mix.manifest.json dan pembersihan cache

Mereka yang biasa dengan Elixir mungkin perasan bahawa imej output di atas adalah berbeza sedikit daripada Elixir: Mix sedang menjana keluar- Fail Manifes dalam kotak public/mix-manifest.json. Sudah tentu, Elixir juga menjana fail manifes: public/build/rev-manifest.json, dan tidak seperti pengeluaran langsung Mix, ia hanya menjananya apabila ia menentukan bahawa pembersihan cache (versi) didayakan.

Fail manifes ini digunakan untuk memetakan fail bahagian hadapan dan salinan versi fail bahagian hadapan, contohnya: pemetaan antara /js/app.js dan /js/app-86ff5d31a2.js. Dengan fail ini, anda boleh menggunakan rujukan mudah dalam HTLM untuk menunjuk ke fail versi yang dirujuk. Contohnya <script src="%7B%7B%20mix('js/app.js')%20%7D%7D"></script> .

Tidak seperti Elixir, walaupun anda tidak menggunakan pembersihan cache, Mix akan menjana fail ini, tetapi ia hanyalah peta panduan:

{
  "/js/app.js": "/js/app.js",
  "/css/app.css": "/css/app.css"
}
Salin selepas log masuk

Untuk pengguna yang pernah menggunakan Elixir sebelum ini, Satu lagi perubahan yang menarik: fail binaan anda kini berada dalam direktori output biasa, bukannya direktori binaan yang berasingan, jadi fail JS versi anda akan muncul dalam public/js/app-86ff5d31a2.js.

Untuk mendayakan cache busting dalam Mix, cuma tambah .version() pada fail Mix:

mix.js('resources/assets/js/app.js', 'public/js')
    .sass('resources/assets/sass/app.scss', 'public/css')
    .version();
Salin selepas log masuk

Ini lebih mudah daripada menghantar nama fail sebenar, seperti dalam Elixir Same.

mix() Help

Seperti yang dinyatakan di atas, anda mahu menggunakan mix() dan bukannya elixir() untuk merujuk sumber anda, yang berfungsi dengan cara yang sama. Tetapi satu perkara ialah apabila menggunakan Mix, anda perlu memadamkan baris rujukan lalai ini dalam templat Laravel:

<link>
...
<script></script>
Salin selepas log masuk
Salin selepas log masuk

Gantikannya dengan cara berikut:

<link>
...
<script></script>
Salin selepas log masuk
Salin selepas log masuk

Ingat, ini fungsi Hanya mencari rentetan dalam mix-manifest.json dan mengembalikan fail binaan yang dipetakan. Digunakan untuk memastikan bahawa apabila anda mengosongkan cache, ia tahu cara memuatkan fail lalai.

代码拆分

Webpack 是对许多人来说很令人兴奋的部分,因为它提供了使代码结构化的智能能力。我还没能完全弄明白 webpack 的所有功能,Mix 也没把所有功能都打包支持,例如:tree-shaking。但它确实使你的自定义代码(它可能会经常更改)与你的供应商代码(这不应该)区分,使得用户在每次推送新版本时刷新所有供应商代码的可能性更小。

要利用这个特性,你需要使用 extract() 函数,它将你定义一个给定的库或者模块集合提取到一个单独的构建文件名为 vendor.js

mix.js('resources/assets/js/app.js', 'public/js')
    .extract(['vue', 'jquery']);
Salin selepas log masuk

在这种情况下,Mix 生成了三个文件:public/js/app.jspublic/js/vendor.js  和第三个 Webpack 特定文件 public/js/manifest.js。 为了运行顺利,得按照以下的顺序引入这三个文件:

<script></script>
<script></script>
<script></script>
Salin selepas log masuk

如果清除了缓存,并且更改了应用自定义的代码, vendor.js  文件仍会缓存,也只有应用自定义的代码才会被清除缓存,这样你的网站会加载得更快。

自定义 Webpack 配置

如果你有兴趣添加自己的自定义 Webpack 配置,只需要传递你的 Webpack 配置:

mix.webpackConfig({
    resolve: {
        modules: [
            path.resolve(__dirname, 'vendor/laravel/spark/resources/assets/js')
        ]
    }
});
Salin selepas log masuk

(上面这个例子只是从文档复制粘贴来的~ 你真的有兴趣就自己去了解哈~)

顺便一提

说点有趣的东西吧,我想这或许能在 Webpack 文件中加点什么。 如果你想只在生产环境下复制点什么,你怎么会这样做?

会这么问是因为我发现在 Node 环境对象中,我们可以用 process.env 去访问。可以检查任何值,包括系统上的任何全局环境变量。这个发现可能可以让我们去做点其他有趣的事情,比如说有条件地检查 process.env.NODE_ENV  中的值:

if (process.env.NODE_ENV == 'production') {
    mix.webpackConfig({ ... });
}
Salin selepas log masuk

但是在阅读源代码后,我发现 NODE_ENV 不是主要的检查。相反,是用了一个带有 inProduction  标志的配置对象去做这件事情。 这个文档里没有写,因此请谨慎使用,但你可以更新 Webpack 文件顶部的导入,然后使用该配置对象:

const { mix, config } = require('laravel-mix');

if (config.inProduction) {
    mix.webpackConfig({ ... });    
}
Salin selepas log masuk

默认依赖关系

你可以查看 package.json  并查看每个项目包含的依赖项列表。 记住,这些是由默认的 app.jsbootstrap.js  来引用的,你可以删除 app.js  和 package.json  中的引用,并重新运行 npm install ,当然删除引用并不会删除源文件。

小结

Laravel Mix 是一个代替 Laravel Elixir 的构建工具。 具有与 Elixir 几乎相同的API,却是基于 Webpack 而不是 Gulp。             

【相关推荐:laravel视频教程

Atas ialah kandungan terperinci Untuk apa campuran laravel digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan