我尝试将其分成两行:
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为一行。如何创建多行模板字符串?
是否有模板引擎将以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
我在以下代码中使用标记的模板字符串
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
我正在创建一个 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)
谁能解释为什么会这样?
我需要在 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.1,babel-preset-es2015 6.9.0,babel-preset-react 6.5.0和运行它Chrome 55。
我有一个代码库,其中包含许多通过字符串连接构建的字符串。是否有用模板替换所有字符串连接实例的自动化方法?例如:
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
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 模板字符串引擎来为未定义的变量提供默认值?
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 模板字符串的 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 的系统,我想最大限度地减少需要为字符串文字完成的转义量。我目前的方法是使用String.raw模板文字函数,这样我就不必担心\在输出中被解释的字符。
唯一的问题是文字反引号(即`字符)仍然需要转义,否则它们会提前终止字符串。它们不能被转义,\`因为转义序列不受尊重。
我能想到的最佳选择是使用占位符(例如String.raw`foo${"`"}bar`get "foo`bar"),但我有点担心占位符评估的运行时成本。还有其他选择吗?
template-strings ×10
javascript ×9
ecmascript-6 ×5
node.js ×2
babeljs ×1
bash ×1
rawstring ×1
reactjs ×1
shell ×1
string ×1