我使用下一个代码来包含我的js文件
Meta::addJs('admin_js', '/resources/assets/admin_js/admin_app.js');
文件存在但在控制台中我看到状态404。
如果我将文件移到“公共场所”。文件夹 - 一切都好。但我希望这个文件存储在' resources'目录
答案 0 :(得分:4)
public
或存储到storage
并制作符号链接。或者您需要将resources
目录的符号链接创建到public
目录(不建议这样做)。
你需要使用最推荐和有效的Laravel方法来使用Laravel mix。请使用以下链接阅读laravel mix a solution。
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文件添加到“资源”:
resources/js
中创建文件(在本示例中称为“ file.js ”)webpack.mix.js
文件(在底部)mix.js('resources/js/file.js', 'public/js');
npm run production