如何在 laravel 项目中安装防暴标签
How to mount riot tags inside a laravel project
我需要将防暴 js 添加到我的 laravel 项目中,但不确定我是否以正确的方式为 laravel 项目集成防暴。
我在 laravel views 文件夹中的 blade.php 文件中进行了如下尝试。
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script src="../js/riotcompiler.js" type="riot/tag"></script>
</head>
<body>
<hello></hello>
<script src="../tags/hello.tag" type="tag"></script>
<script>
riot.mount("hello");
</script>
njk
</body>
</html>
然后当我 运行 laravel 项目时,它会生成一个异常,说 riot 没有定义。但我已经在全球范围内安装了 riot。那么我该如何解决这个问题呢?我需要通过 composer 安装 riot 吗?
我相信这会成功:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script src="../js/riotcompiler.js" type="riot/tag"></script>
</head>
<body>
<hello></hello>
<script src="../tags/hello.tag" type="tag"></script>
<script>
riot.compile(function() {
// here tags are compiled and riot.mount works synchronously
riot.mount('hello')
})
</script>
</body>
</html>
如果您将 js 文件移动到 public/js
文件夹,您可以在 blade 文件中调用它:
<script type="text/javascript" src="{{ URL::asset('js/riotcompiler.js') }}"></script>
函数 URL::asset()
将为您生成必要的 url。
问题是没有将标记文件和 riotcompiler 文件保存在 public 目录中,并且没有以正确的方式在 laravel 中给出路径。所以可行的代码如下。
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script
type="text/javascript"
src="{{ URL::asset('js/riotcompiler.js') }}"
></script>
</head>
<body>
<hello></hello>
<script
src="{{ URL::asset('tags/hello.tag') }}"
type="riot/tag"
></script>
<script>
riot.mount("hello");
</script>
njk
</body>
</html>
我需要将防暴 js 添加到我的 laravel 项目中,但不确定我是否以正确的方式为 laravel 项目集成防暴。
我在 laravel views 文件夹中的 blade.php 文件中进行了如下尝试。
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script src="../js/riotcompiler.js" type="riot/tag"></script>
</head>
<body>
<hello></hello>
<script src="../tags/hello.tag" type="tag"></script>
<script>
riot.mount("hello");
</script>
njk
</body>
</html>
然后当我 运行 laravel 项目时,它会生成一个异常,说 riot 没有定义。但我已经在全球范围内安装了 riot。那么我该如何解决这个问题呢?我需要通过 composer 安装 riot 吗?
我相信这会成功:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script src="../js/riotcompiler.js" type="riot/tag"></script>
</head>
<body>
<hello></hello>
<script src="../tags/hello.tag" type="tag"></script>
<script>
riot.compile(function() {
// here tags are compiled and riot.mount works synchronously
riot.mount('hello')
})
</script>
</body>
</html>
如果您将 js 文件移动到 public/js
文件夹,您可以在 blade 文件中调用它:
<script type="text/javascript" src="{{ URL::asset('js/riotcompiler.js') }}"></script>
函数 URL::asset()
将为您生成必要的 url。
问题是没有将标记文件和 riotcompiler 文件保存在 public 目录中,并且没有以正确的方式在 laravel 中给出路径。所以可行的代码如下。
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Laravel</title>
<!-- Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet"
type="text/css"
/>
<script
type="text/javascript"
src="{{ URL::asset('js/riotcompiler.js') }}"
></script>
</head>
<body>
<hello></hello>
<script
src="{{ URL::asset('tags/hello.tag') }}"
type="riot/tag"
></script>
<script>
riot.mount("hello");
</script>
njk
</body>
</html>