使用 <head>
<!-- OWLSLIDER STYLESHEETS -->
<link rel="stylesheet" href="owl.carousel.2.0.0- beta.2.4/assets/owl.carousel.css">
<link rel="stylesheet" href="owl.carousel.2.0.0-beta.2.4/assets/owl.theme.default.css">
<!-- OWLSLIDER SCRIPT -->
<script src="owl.carousel.2.0.0-beta.2.4/owl.carousel.min.js"></script>
<!-- JQUERY 3.1.0 -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>
<!--
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="owl-carousel">
<div class="item-video" data-merge="3">
<iframe width="420" height="315" src="https://www.youtube.com/embed/s8XIgR5OGJc?rel=0"></iframe>
</div>
<div class="item-video" data-merge="1">
<iframe width="420" height="315" src="https://www.youtube.com/embed/s8XIgR5OGJc?rel=0"></iframe>
</div>
<div class="item-video" data-merge="2">
<iframe width="420" height="315" src="https://www.youtube.com/embed/sbJLcWdfgq0?rel=0"></iframe>
</div>
<div class="item-video" data-merge="1">
<a class="owl-video" href="https://youtu.be/s8XIgR5OGJc"></a>
</div>
<div class="item-video" data-merge="2">
<a class="owl-video" href="http://www.youtube.com/watch?v=H3jLkJrhHKQ"></a>
</div>
<div class="item-video" data-merge="3">
<a class="owl-video" href="https://www.youtube.com/watch?v=g3J4VxWIM6s"></a>
</div>
<div class="item-video" data-merge="1">
<a class="owl-video" href="http://www.youtube.com/watch?v=0fhoIate4qI"></a>
</div>
<div class="item-video" data-merge="2">
<a class="owl-video" href="https://www.youtube.com/watch?v=EF_kj2ojZaE"></a>
</div>
</div>
<!-- Scripts -->
<script src="js/jquery-3.1.0.min.js"></script>
<script src="owl.carousel.2.0.0-beta.2.4/owl.carousel.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>
<script src="js/html5shiv.js" type="text/js"></script>
<script src="js/html5shiv-printshiv.js" type="text/js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
和path.join
与path.resolve
一起解析Node.js中的绝对路径时是否存在差异?
当使用它们时,其中一个是首选(绝对路径分辨率是用例的90%)?
即。
__dirname
VS
const absolutePath = path.join(__dirname, some, dir);
两种方法都规范化路径。
这不是this question的重复,因为接受的答案是错误的。
答案 0 :(得分:99)
是的,这些功能之间存在差异,但在这种情况下使用它们的方式会产生相同的结果。
path.join
通过将两个路径合并在一起来返回规范化路径。它可以返回绝对路径,但不一定总是这样。
例如:
path.join('app/libs/oauth', '/../ssl')
解析为app/libs/ssl
path.resolve
将解决绝对路径。
例如,当你运行:
path.resolve('bar', '/foo');
返回的路径为/foo
,因为这是第一个可以构造的绝对路径。
但是,如果你跑:
path.resolve('/bar/bae', '/foo', 'test');
返回的路径将再次为/foo/test
,因为这是第一个可以从右到左形成的绝对路径。
如果未提供指定根目录的路径,则将resolve
函数的路径附加到当前工作目录。因此,如果您的工作目录是/home/mark/project/
:
path.resolve('test', 'directory', '../back');
解析为
/home/mark/project/test/back
使用__dirname
是包含源文件的目录的绝对路径。当您使用path.resolve
或path.join
时,如果您在__dirname
之后提供相同的路径,则会返回相同的结果。在这种情况下,这只是一个偏好问题。
答案 1 :(得分:15)
const absolutePath = path.join(__dirname, some, dir);
VS
const absolutePath = path.resolve(__dirname, some, dir);
path.join
将连接__dirname
,这是与some
和dir
值连接的当前文件的目录名,并带有特定于平台的分隔符。
在哪里
path.resolve
将处理__dirname
,some
和dir
,即从左到右处理它,然后通过处理它。
如果some
或dir
的任何值对应于根路径,那么前一个路径将被省略,并通过将其视为root来处理休息
为了更好地理解这个概念,让我更详细地解释如下: -
path.join
和path.resolve
是nodejs提供的路径模块的两种不同方法或功能。
两者都接受一个路径列表,但差异在于结果,即它们如何处理这些路径。
path.join
使用特定于平台的分隔符作为分隔符将所有给定路径段连接在一起,然后规范化生成的路径。虽然path.resolve()
处理从右到左的路径序列,但每个后续路径都会被前置,直到构造绝对路径。
未提供参数时
以下示例将帮助您清楚地理解这两个概念: -
我的文件名为index.js
,当前工作目录为E:\MyFolder\Pjtz\node
const path = require('path');
console.log("path.join() : ", path.join());
// outputs .
console.log("path.resolve() : ", path.resolve());
// outputs current directory or equalent to __dirname
结果
λ node index.js
path.join() : .
path.resolve() : E:\MyFolder\Pjtz\node
path.resolve()
方法将输出path.join()
返回的绝对路径。如果没有提供任何内容,则表示当前工作目录
当某个根路径作为参数传递时
const path=require('path');
console.log("path.join() : " ,path.join('abc','/bcd'));
console.log("path.resolve() : ",path.resolve('abc','/bcd'));
结果i
λ node index.js
path.join() : abc\bcd
path.resolve() : E:\bcd
path.join()
仅将输入列表与特定于平台的分隔符连接,而path.resolve()
处理从右到左的路径序列,每个后续路径都被预先添加,直到构造绝对路径。 / em>的
答案 2 :(得分:1)
从文档中获取path.resolve
:
除非将路径解析到根目录,否则将对生成的路径进行规范化并删除斜杠。
但是path.join
总是用斜杠结尾
所以
__dirname = '/';
path.join(__dirname, 'foo/'); // '/foo/'
path.resolve(__dirname, 'foo/'); // '/foo'
答案 3 :(得分:1)
简单来说:
当您使用 path.resolve()
时,它会执行以下操作
from left to right-
/
直接与根路径连接以形成绝对路径(检查示例)/
作为目录的内容例如
path.resolve('/a', 'b', 'c'); returns C:\a\b\c
path.resolve('/a', '/b', 'c'); returns C:\b\c
path.resolve('/a', '/b', '/c'); returns C:\c
虽然使用 join()
只是从左到右连接每个参数,无论它们是否有 /
path.join("/a", "b", "/c", "d") simply returns "\a\b\c\d"