小编Non*_*llt的帖子

如何在 Laravel Mix 中使用每个文件的不同编译设置来编译多个 JavaScript 文件

我有一个应用程序,它为应用程序 API 提供可下载的 JavaScript 集成脚本。我希望能够使用与主应用程序前端不同的设置来编译此集成文件。

webpack.mix.js

// Compile js integration
mix.js('resources/js/integrations/FilterIntegration', 'integrations/filter.js');

// Compile the main application
mix.js('resources/js/layout/Root.js', 'public/js/app.js')
    .sass('resources/sass/app.scss', 'public/css')
    .extract(['react', 'react-router-dom', 'lodash']);
Run Code Online (Sandbox Code Playgroud)

我的问题是,此设置实际上将所有以下链接命令应用于每个已编译的文件。这意味着我编译的集成文件还必须使用通过extract命令为主应用程序创建的vendor.jsmanifest.js文件,并且它还包含一个sass导入语句,尽管显然集成与样式无关,因为它只是一个 JavaScript 库。

所以我的问题如下:如何设置 Laravel Mix 编译,以便我可以方便地使用与主应用程序分开的设置来编译集成库?

javascript laravel webpack laravel-mix

5
推荐指数
0
解决办法
541
查看次数

Laravel如何在执行前后调用作业类的方法

我在使用 Laravel 队列时遇到问题。由于我正在使用可扩展架构,因此我所做的大多数事情都是使用队列和作业来实现的。例如,在处理大文件时,为文件中的每 1000 行创建一个作业,并将结果保存到输出文件中。

我有一个“Process”类,我目前正在将其用作作业的父级。process 类具有 start() 和 end() 方法,应在调用 job handler() 方法后以及执行该方法后调用这些方法。当前的解决方案是从handle方法调用这些方法,但问题是这种解决方案增加了作业类本身不必要的代码,并且需要实现者记住调用这些方法。

public function handle()
{
    $this->start(); // <- implementer has to remember to call this

    // Do the actual handle functionality

    $this->end(); // <- and this
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有一种“干净”的方法可以做到这一点,不需要从作业(子)类调用父方法?我尝试使用队列事件,但无法从给定的事件对象构造作业类。从作业中分派事件并没有真正的帮助,因为您仍然需要在每个作业类中添加这两行额外的行。

除了 Laravel 特定的实现之外,我还研究了神奇的 __call() 方法,但这只有在“handle”方法不存在时才有效,考虑到 artisan make:job 命令通过以下方式生成该方法,这并不是真正的最佳选择默认值(再次要求实现者足够精明才能删除它)。

需要明确的是,当前的解决方案确实有效,但为每个类复制相同的行似乎有代码味道。

php laravel laravel-5.4

3
推荐指数
1
解决办法
8709
查看次数

标签 统计

laravel ×2

javascript ×1

laravel-5.4 ×1

laravel-mix ×1

php ×1

webpack ×1