Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带模板字符串的Javascript URL_Javascript_Typescript_Ecmascript 6 - Fatal编程技术网

带模板字符串的Javascript URL

带模板字符串的Javascript URL,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我想挂载一个带有模板字符串的URL字符串。我想知道这是否可能 这就是我正在做的: let url = `http://example.com/ MY_SERVICE/ MY_CONTROLLER/ ${MY_FIRST_PARAM}/ ${MY_SECOND_

我想挂载一个带有模板字符串的URL字符串。我想知道这是否可能

这就是我正在做的:

let url = `http://example.com/
                              MY_SERVICE/
                              MY_CONTROLLER/
                              ${MY_FIRST_PARAM}/
                              ${MY_SECOND_PARAM}`;
此代码将返回一个带换行符的字符串

我的问题是:这有可能不中断线吗?目的是使代码更具可读性


我的真实URL比这个大一点。

您会得到换行符,因为在javascript中带有“``”符号的ENTER将导致换行,如下所述:


只需在同一行中写入所有内容。

您可以在模板字符串后的任何空白字符上调用replace:

让MY_FIRST_PARAM='foo';
让我的第二个参数='bar';
让url=`http://example.com/
我的服务/
我的控制器/
${MY_FIRST_PARAM}/
${MY_SECOND_PARAM}`
.替换(/\s/g,”);

console.log(url)以防这对其他人有用。 以下是我个人经历中与类似情况相关的笔记

问题最初是关于一个包含新行的长模板字符串。 但是这个例子也展示了一个可以动态存储URL和插件参数的系统

这是为那些来自未来的人准备的,他们碰巧也会尝试做同样的事情,不管是关于URI模板和/或模板文本,还是剥离空白/新行。就像我今天做的那样

作者很可能像他提出的问题那样实施

我们可以配置和插入变量的URL模式有一个规范和工具,可以帮助您避免重新发明轮子。:-)

此外,如果将多个模板文本连接在一起,则可以使用

更好的方法是利用JavaScript的
URL
对象和

它使事情变得更容易管理

我今天使用的实现正在使用。 这个库非常棒,它支持

下面是一个完整的URI模板示例,以及如何在不使用正则表达式的情况下操作URL

//const urltemplate=require('url-template');
//使用问题中的示例,稍作修改。
让url=`http://example.com/
我的服务/
我的控制器
{/MY_FIRST_PARAM,MY_SECOND_PARAM}
`;
//(下图)去掉新线和空格
//凯博特的功劳
const parsed=urltemplate.parse(url.replace(/[\s\n]/g',);
const exampleFactory=a=>新URL(已解析。展开(a))
//请注意,我们没有给我的第二个参数任何级别
常数firstExample={
我的第一个参数:“foo”
}
log((exampleFactory(firstExample)).pathname);
//>'/MY_SERVICE/MY_CONTROLLER/foo'
const secondExample={
我的第一个参数:“foo”,
我的第二个参数:“酒吧”
}
log((exampleFactory(secondExample)).pathname);
//>'/MY\u SERVICE/MY\u CONTROLLER/foo/bar'

嗨,我做了,但是代码不是很可读。在我的例子中,我使用变量转换为字符串,因此,@KevBot提出的解决方案非常有效。