如何在'资源'中包含js文件文件夹(Laravel 5.5)

时间:2018-03-21 13:54:59

标签: laravel-5.5

我使用下一个代码来包含我的js文件

Meta::addJs('admin_js', '/resources/assets/admin_js/admin_app.js');

文件存在但在控制台中我看到状态404。

如果我将文件移到“公共场所”。文件夹 - 一切都好。但我希望这个文件存储在' resources'目录

3 个答案:

答案 0 :(得分:4)

  1. 您必须将js文件移至public或存储到storage并制作符号链接。
  2. 或者您需要将resources目录的符号链接创建到public目录(不建议这样做)。

  3. 你需要使用最推荐和有效的Laravel方法来使用Laravel mix。请使用以下链接阅读laravel mix a solution。

  4. https://laravel.com/docs/5.6/mix

    它允许您将js资源放入resources目录,并在public中生成压缩的js文件,该文件将由设置使用。

答案 1 :(得分:0)

我不知道我是否迟到,但是当我需要从视图文件中的目录和子目录中加载js文件时,我做到了,它对我来说非常理想。 顺便说一句,我使用的是laravel 5.7。

首先,我编写了一个函数,使用此函数搜索任何给定目录中的任何文件

/**
 * Search for file and return full path.
 *
 * @param  string  $pattern
 * @return array
 */
function rglob($pattern, $flags = 0) {
    $files = glob($pattern, $flags);
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $files = array_merge($files, rglob($dir.'/'.basename($pattern), $flags));
    }
    return $files;
}

以上内容将为我的“ resources / view”目录中的每个“ .js”文件返回完整路径。 然后,我调用了上面的函数,将每个js的内容复制到我使用以下函数在public / js中创建的单个js文件(new.js)中。

/**
 * Load js file from each view subdirectory into public js.
 *
 * @return void
 */
function load_js_function(){
    //call to the previous function that returns all js files in view directory
    $files = rglob(resource_path('views').'/*/*.js');
    foreach($files as $file) {
        copy($file, base_path('public/js/new.js'));
    }
}

此后,我在加载public / js / new.js后立即调用主刀片布局中的load_js_function()(我在其中加载所有CSS,JS等),您可以在下面看到。

  <script src="{!! asset('js/new.js') !!}"></script>
  <!-- load all js from each module -->
  {{ load_js_function() }}

这些解决方案在您更新原始文件的内容时公开更新文件。 如果它对您有用,请投票,如果在执行此问题时有任何评论,我将很高兴为您提供更多启示。 欢呼

答案 2 :(得分:0)

LARAVEL 7.0的更新:

将原始JavaScript文件添加到“资源”:

  1. resources/js中创建文件(在本示例中称为“ file.js ”)
  2. 转到webpack.mix.js文件(在底部)
  3. 在此添加:mix.js('resources/js/file.js', 'public/js');
  4. 在终端机中运行:npm run production