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

问题描述 投票:1回答:2

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

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

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

如果我将文件移动到'公共'文件夹 - 一切正常。但我希望这个文件存储在'resources'目录中

laravel-5.5
2个回答
5
投票
  1. 你必须将js文件移动到public或存储到storage并制作符号链接。
  2. 或者您需要将resources目录的符号链接创建到public目录(不建议这样做)。
  3. 你需要使用最推荐和有效的Laravel方法来使用Laravel mix。请使用以下链接阅读laravel mix a solution。

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

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


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() }}

当您更新原始文件的内容时,这些解决方案会公开更新文件。投票如果它适合你并评论如果你有一个问题实现这一点,我会很高兴更多的光。干杯

© www.soinside.com 2019 - 2024. All rights reserved.