laravel mix有什么用

laravel mix用于管理前端任务,它是一款前端任务自动化管理工具,可使用工作流的模式对制定好的任务依次执行;Mix提供了简洁流畅的API,让开发者能够为Laravel应用定义Webpack编译任务,可以轻松地管理前端资源。

laravel mix有什么用

本教程操作环境:windows7系统、Laravel6版,DELL G3电脑。

laravel mix是什么?有什么用?

Laravel Mix 一款前端任务自动化管理工具,使用了工作流的模式对制定好的任务依次执行。Mix 提供了简洁流畅的 API,让你能够为你的 Laravel 应用定义 Webpack 编译任务。Mix 支持许多常见的 CSS 与 JavaScript 预处理器,通过简单的调用,你可以轻松地管理前端资源。

默认文件和文件夹结构

默认 Sass 文件在 resources/assets/sass/app.scss  中(文件的内容是完全一样的),而默认的 JS 文件在 resources/assets/js/app.js(因为文件是完全相同的,所以想要学习更多关于 Vue 在 5.3 中的基础结构,可以查看 Matt Stauffer 写的 Matt Stauffer 这一帖子)。

如果你深入到 app.js 中引用的 bootstrap 文件( resources/assets/js/bootstrap.js ),你会看到我们使用Axios 而不是 Vue-Resource 来设置 X-CSRF-TOKEN( Matt Stauffer)。

如果你在 Mix 的项目上运行 npm run dev,可以看到:

file

默认情况下,我们生成的文件的位置与 Elixir 相同:public/css/app.css  和 public/js/app.js 。

主要 Mix 方法

正如你所见,你可以轻松的使用 Mix 处理 Sass 和 JS。Sass,显而易见,运行 Sass 文件,并将其输出为 CSS。用  JS 方法支持 ECMAScript 2015 语法、编译 .vue 文件、针对生产环境压缩代码以及对 JavaScript 文件进行其他处理。

还可以用 .less 方法将 Matt Stauffer 编译为 CSS:

mix.less('resources/assets/less/app.less', 'public/css');

登录后复制

用 combine 方法将文件组合在一起:

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

登录后复制

用 copy 复制文件或目录:

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');

登录后复制

与 Elixir 不同,Source Maps 默认情况下是关闭的,可以在 webpack.mix.js 中调用以下方法来开启:

mix.sourceMaps();

登录后复制

默认情况下 Mix 会以系统通知的方式告知你编译结果,如果不希望它们运行,可以使用 disableNotifications() 方法禁用。

Mix.manifest.json  和 缓存清除

熟悉 Elixir 的人可能会注意到上面的输出图像有一点与 Elixir 不同:Mix 正在生成一个开箱即用的清单文件 public/mix-manifest.json。 当然,Elixir 也会生成清单文件:public/build/rev-manifest.json,与 Mix 直接生产不同,它只会在确定启用了缓存清除(版本控制)的功能时生成它。

这些清单文件是用来映射前端文件与已经版本化处理的前端文件副本,例如: /js/app.js 与 /js/app-86ff5d31a2.js 之间的映射。有了这个文件就可以在 HTLM 用简单的引用指向该引用的版本化文件。例如

不像 Elixir,即使你不使用缓存清除,Mix 都会生成这个文件,但它也仅仅只是一个导向地图:

{  "/js/app.js": "/js/app.js",  "/css/app.css": "/css/app.css"}

登录后复制

对于以前使用 Elixir 的用户来说,另一个有趣的变化是:你的构建文件现在最终在正常的输出目录,而不是单独的构建目录,所以你版本化的 JS 文件,将出现在 public/js/app-86ff5d31a2.js。

要在 Mix 中启用缓存清除,只需在 Mix 文件中附加 .version():

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

登录后复制

这比传递实际文件名要简单得多,就像在 Elixir 中一样。

mix() 帮助

正如上面提到的,你要使用 mix() 来代替 elixir() 引用你的资源,运行方式完全相同。 但是有一点,用 Mix 的话,要删除 Laravel 模板中默认的这些引用行:

...

登录后复制

用下面这种方式替换它们:

...

登录后复制

记住,这个函数只是在 mix-manifest.json  中查找字符串并返回映射的构建文件。用来保证当你清除了缓存时,它懂得去加载默认的那个文件。

代码拆分

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

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

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

登录后复制

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


登录后复制

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

自定义 Webpack 配置

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

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

登录后复制

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

顺便一提

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

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

if (process.env.NODE_ENV == 'production') {    mix.webpackConfig({ ... });}

登录后复制

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

const { mix, config } = require('laravel-mix');if (config.inProduction) {    mix.webpackConfig({ ... });    }

登录后复制

默认依赖关系

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

Matt Stauffer(一个简单且漂亮的 HTTP 客户端)

Matt Stauffer(由默认的 app.scss  文件来引入 Bootstrap 样式)

Matt Stauffer

Matt Stauffer( 比 Underscore 更好)

Matt Stauffer

小结

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

【相关推荐:Matt Stauffer】

以上就是laravel mix有什么用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3157884.html

(0)
上一篇 2025年3月30日 10:25:59
下一篇 2025年2月28日 16:04:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 聊一聊基于webman的GraphQL实现

    本篇文章给大家带来了关于graphql的相关知识,其中主要跟大家聊一聊有关基于webman的graphql实现,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。 基于PHP的GraphQL由于加载指令(directive)和解析schem…

    2025年3月30日
    100
  • 图文详解VSCode调试PhpStudy里的代码

    本篇文章给大家带来了关于vs code的相关知识,其中主要介绍了怎么用使用vs code调试phpstudy环境里的代码,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。 最近几个月把所有项目都迁过来 VS Code 了(除了因为Unit…

    2025年3月30日
    100
  • MacBook下laravel多版本docker开发环境配置方案

    首先感谢社区,作者从本社区汲取了很多技术营养。现分享作者基于docker的PHP开发环境配置方案,希望能给小伙伴们在搭建PHP开发环境上带来思路上的参考。 项目集背景 laravel版本不同对PHP的版本要求不同。如果遇到同时调试多个版本项…

    2025年3月30日
    100
  • 使用PHP和h5ai创建目录列表和资源管理器

    在现代化的网络环境中,目录列表和资源管理器是必不可少的东西。它们可以让用户方便地访问和管理文件。在这篇文章中,我们将介绍如何使用php和h5ai创建目录列表和资源管理器。具体地说,我们将介绍如何安装和配置h5ai,以及如何使用php在服务器…

    编程技术 2025年3月30日
    100
  • 如何使用PHP和ElasticSearch进行全文搜索和数据分析

    随着信息量日益增长,在大规模数据的管理和处理上已成为数据科学家和软件开发人员的一项挑战。与此相应的是,信息检索和数据分析也成为了数据管理和处理的主要任务。在这方面,elasticsearch(以下简称es)已经成为了一种解决方案,它是一个开…

    编程技术 2025年3月30日
    100
  • 如何使用PHP和PHPUnit进行性能测试

    随着web应用程序复杂度的不断提高和用户访问量的增长,性能测试已经成为了一项非常重要的任务。如果在应用程序几乎停顿不前的状态下,用户通常会感到沮丧并追寻其他竞争对手。 因此,优化web应用程序的性能已经变得至关重要。而 php 是一种在 w…

    编程技术 2025年3月30日
    100
  • 使用PHP和FusionCharts创建数据可视化图表

    随着现代业务日益数字化,数据处理和可视化日益重要。许多公司依靠数据可视化来理解其业务状况并作出战略决策。在这篇文章中,我们将讨论如何使用php和fusioncharts创建数据可视化图表。 FusionCharts是一组用于创建漂亮、动态、…

    编程技术 2025年3月30日
    100
  • 使用PHP和jQuery创建Ajax应用程序

    随着web应用程序的不断发展,ajax成为了一个强大的工具,可以实现无需页面刷新而与服务器进行通信。使用ajax,可以提高web应用程序的性能和可用性,提高用户体验。 本文将介绍如何使用PHP和jQuery创建Ajax应用程序。我们将创建一…

    编程技术 2025年3月30日
    100
  • 如何使用PHP和Firebase进行实时数据同步

    随着互联网的发展,web应用程序的复杂性和用户数目的增加,对于实时数据同步的要求也越来越高。firebase是一种实时数据库,提供了简单易用的api和功能,可以与多种编程语言进行交互。作为一种流行的编程语言,php也有很多开发人员使用。在这…

    编程技术 2025年3月30日
    100
  • 如何使用PHP和JSON-RPC实现远程过程调用

    随着互联网技术的不断发展,越来越多的应用需要实现分布式的操作和数据交互。为了满足这种需求,远程过程调用(rpc)应运而生,允许通过网络调用远程的函数或方法。而json-rpc则为其中一种常见的rpc实现方式,其基于json(javascri…

    编程技术 2025年3月30日
    100

发表回复

登录后才能评论