标签: template-strings

在模板字符串中插入新行?

我尝试将其分成两行:

const templateString = `this is my template 
                        string`
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

const templateString = `this is my template\n string`
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用。仍然显示templateString为一行。如何创建多行模板字符串?

javascript ecmascript-6 template-strings

7
推荐指数
1
解决办法
2万
查看次数

CSP安全的ES6模板文字

是否有模板引擎将以ES6模板文字(例如"string ${var}")的样式解析模板而不违反脚本评估的内容安全策略(CSP)限制?

对剧本评价CSP限制阻止eval,new Function,setTimeout(string)setInterval(string).

有许多模板引擎,可以提供或进行修改,以提供类似ES6风格模板文字,如John Resig的的MicroTemplates,lodash _.template和DoT.js.但是所有人似乎都违反了CSP new Function.

如果var可以是不受限制的Javascript,它在某些方面会很方便,但由于明显的原因,这可能是不可能的.但是我需要能够根据需要修改引擎以格式化输出.

在这种情况下,性能不是问题,并且预编译模板不是一种选择.其他人讨论了预编译.

作为附加限制,内容是文本 - 而不是HTML.我不认为面向DOM的模板引擎如Knockout或PURE不会有效地工作.

我的第一个想法是从mustache.js开始并从那里修改它(即改变mustache.tags = ['${', '}']DIY解决方案,但我会感谢任何有关该主题的想法,因为似乎缺乏关于CSP和模板的讨论.

javascript content-security-policy ecmascript-6 template-strings

6
推荐指数
1
解决办法
631
查看次数

尝试使用Tagged模板字符串会出现'Uncaught SyntaxError:Unexpected token'

我在以下代码中使用标记的模板字符串

var a = 5;
var b = 10;
var pp="";
function tag(strings, ...values) {
  pp+=strings[0]; // "Hello "
  pp+=strings[1]; // " world "
  pp+=values[0];  // 15
  pp+=values[1];  // 50

  console.log(pp+"Bazinga!");
}

tag`Hello ${ a + b } world ${ a * b}`;
Run Code Online (Sandbox Code Playgroud)

但它给了

未捕获的SyntaxError:意外的令牌......(...)

function tag(strings, ...values) {

javascript google-chrome ecmascript-6 template-strings tagged-templates

6
推荐指数
1
解决办法
1173
查看次数

在 JS 模板字符串中转义 ${} 的正确方法

我正在创建一个 bash 命令:

const k = cp.spawn('bash');

k.stdin.end(`
  alias ssh='ssh "${SSH_ARGS[@]}"'
`);
Run Code Online (Sandbox Code Playgroud)

但当然,我必须逃避它。我认为逃避它的最佳方法是使用:

 `alias ssh='ssh "\${SSH_ARGS[@]}"'`
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样?

javascript bash shell node.js template-strings

6
推荐指数
1
解决办法
2259
查看次数

React - 使用 JSX 从 ES6 模板文字动态创建标签

我需要在 Reactrender方法中显示标题元素,其中级别在构造函数中动态设置:

class HeaderComponent extends React.Component {

    constructor(props){
        super(props);
        
        this._checkedDepth = Math.min(6, props.depth)
    }

    render(){
        return(<h{ this._checkedDepth }>{ this.props.name }</h{ this._checkedDepth }>)
    }
}

ReactDOM.render(
  <HeaderComponent name="Header 1" depth="2"/>,
  document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
<div id="app"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

这应该<h2>Header 1</h2>name="Header 1"and呈现depth=2,但我收到一个错误:

未捕获的错误:找不到模块“./HeaderComponent”

我在看什么?

我使用React 15.4.1babel-preset-es2015 6.9.0babel-preset-react 6.5.0和运行它Chrome 55

reactjs template-strings babeljs

5
推荐指数
1
解决办法
3649
查看次数

自动将字符串连接转换为模板文字

我有一个代码库,其中包含许多通过字符串连接构建的字符串。是否有用模板替换所有字符串连接实例的自动化方法?例如:

const a = 'b ' + c;
// becomes:
const a = `b ${c}`;
Run Code Online (Sandbox Code Playgroud)

基于脚本的解决方案会很棒。一个编辑器插件会更好。(我正在使用 Visual Studio 代码。)

javascript code-conversion ecmascript-6 template-strings template-literals

5
推荐指数
1
解决办法
2932
查看次数

没有变量插值的模板字符串

JavaScript 中是否可以有一个不插入变量值的模板字符串?我想要有实际的 JS 代码块(它将是多行并包含转义序列),如下例所示:

...

return String.raw`console.log(\`Here is my code:\n\n ${code}\`);`
Run Code Online (Sandbox Code Playgroud)

我可以在 Node.js 应用程序中的函数之间传递。我没有问题转义反引号,但我想知道是否有一种简单的方法来停止变量的插值,以便我可以将模板字符串嵌套在模板字符串中。

我知道一个选择是将代码定义为,但我想知道是否有一种更干净的方法来完成它,其中插值以与关闭转义序列的解释let code = '${code}';相同的方式完全关闭。String.raw

javascript string interpolation node.js template-strings

5
推荐指数
0
解决办法
816
查看次数

javascript 模板字符串中的默认值

有没有办法访问 javascript 模板字符串引擎来为未定义的变量提供默认值?

console.log(`this variable is undefined: ${x}`) 
// throws ReferenceError

// but i want to generate something like this:
"this variable is undefined: <warning! undefined variable>"
Run Code Online (Sandbox Code Playgroud)

这也可以:

function tag(strings,...values){
   // values[i] should be "undefined" if this variable is undefined
}
tag`${x}`
Run Code Online (Sandbox Code Playgroud)

如果那是不可能的,是否有一个模板字符串引擎可以完全满足 javascript 的功能并具有此功能?

javascript template-strings

5
推荐指数
1
解决办法
3393
查看次数

javascript模板字符串的Polyfill

是否有使用反引号的 javascript 模板字符串的 polyfills?我指的是看起来像这样的代码:

var textTemplate = `
   <h1>My Template String</h1>
   <p>Some more stuf here...</p>
`;
Run Code Online (Sandbox Code Playgroud)

我不希望使用诸如 babel 之类的转译器或任何其他需要构建步骤的工具。此外,将模板放在单独的脚本标签内的 javascript 模板引擎对我来说也不理想。

我真的很想能够在同一个文件中将模板字符串与其他标准 ES5 代码一起使用。这可能吗?

编辑:我特别需要模板字符串在 IE11 中工作。我意识到他们已经在大多数其他浏览器中这样做了。我现在也意识到 polyfill 不是我想要的正确术语。

javascript ecmascript-6 template-strings

5
推荐指数
1
解决办法
6507
查看次数

在 String.raw 模板文字中包含文字反引号

我正在开发一个生成 JavaScript 的系统,我想最大限度地减少需要为字符串文字完成的转义量。我目前的方法是使用String.raw模板文字函数,这样我就不必担心\在输出中被解释的字符。

唯一的问题是文字反引号(即`字符)仍然需要转义,否则它们会提前终止字符串。它们不能被转义,\`因为转义序列不受尊重。

我能想到的最佳选择是使用占位符(例如String.raw`foo${"`"}bar`get "foo`bar"),但我有点担心占位符评估的运行时成本。还有其他选择吗?

javascript rawstring template-strings

5
推荐指数
0
解决办法
182
查看次数