Javascript Es6 标记模板 - 何时使用 raw?什么时候用熟的?

2023-12-07

研究完这个 Es6 标签模板示例后:

var yo = func`${x} + ${y}\n= ${x + y}`;

one@public-node ~/es6 $ 6to5 tag.js 
"use strict";

var _taggedTemplateLiteral = function (strings, raw) {
  return Object.freeze(Object.defineProperties(strings, {
    raw: {
      value: Object.freeze(raw)
    }
  }));
};

var yo = func(_taggedTemplateLiteral(["", " + ", "\n= ", ""], ["", " + ", "\\n= ", ""]), x, y, x + y);

我看到返回的是var yo = func(strings, raw, x, y, x + y);

我了解有关字符串文字和x y正在插入的值。我不明白的是......何时使用字符串与何时使用原始?由于该函数具有两个数组,并且用户无法控制告诉函数何时使用 raw 以及何时使用 Cooked(strings)。


标签功能func仅传递一个数组。该数组来自_taggedTemplateLiteral函数,它接受传入的“strings”参数并向其添加一个属性。

功能func将这样声明(ES5 风格):

function func(strings) {
  var params = [].slice.call(arguments, 1);
  // do stuff
}

如果,里面func,代码需要使用“原始”字符串,它只会访问.raw“strings”变量的属性:

function func(strings) {
  var params = [].slice.call(arguments, 1);

  var raw2 = strings.raw[2];

  // do stuff
}

所以“用户”——标签功能的作者——does有控制权。标签函数中的代码可以随时检查模板部分的原始内容。可能的情况是,本质上实现 DSL 的标签函数可能想要only使用原始字符串,而更简单的模板机制不会关心并且很乐意使用“已解析”字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript Es6 标记模板 - 何时使用 raw?什么时候用熟的? 的相关文章

  • 在 Node.js 中生成带条形码的 pdf

    我在用https github com devongovett pdfkit https github com devongovett pdfkit生成 PDF 文件 我可以简单地使用类似的方法 app get get pdf req re
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • 无需编译的 ES6 单元测试

    我无法找到任何 Mocha 或任何其他通过 Gulp 直接在 ES6 代码上运行的单元测试框架的示例 没有 Babel Webpack 等 我找到了一个在浏览器中使用 ES6 代码运行 Mocha 的示例 经过一些修改 但它不是自动化的 有
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • Graphql 将多个查询合并(组合)为一个?

    我正在尝试使用 JavaScript 将多个 GraphQL 查询合并为一个查询 我正在寻找这样的东西 let query3 mergeQueries query1 query2 我们事先不知道哪些查询将被组合 假设我有这样的查询 输入查询
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • 如何在基于事件的设计中使用 Azure Batch 并终止/清理已完成的作业

    使用 Azure Batch 我的项目使用带有函数和队列的基于事件的设计将作业添加到池中 当作业完成时 即使所有任务都已完成 它仍然是 活动的 在计时器上触发 单个使用应用程序服务计划 功能 该计时器从队列中读取 X 数量的消息 功能 创建
  • 有 Ruby WIN32OLE API 的标准指南吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我对此进行了很多搜索 但还没有任何关于 Ruby 中的 Win32Ole 的标准或相当系统的指南 David 的 Ruby on windows 非常好 但我需要一个关于 WIN32
  • 如何从 UIWebView 获取 URL 的哈希片段

    我正在尝试获取 UIWebView 中加载的 URL 的哈希片段 我尝试了不同的方法 但它似乎不起作用 例如 如果 UIWebView 加载了 http www mysite com home main NSURL url NSURL UR
  • 无法读取未命名的模块

    我遇到了非常棘手的问题 我不明白 我们有一整套用 jdk8 编写的 util 库 与 jigsaw 没有关系 因此我们也没有在 META INF 文件中设置自动模块名称 现在我们需要将使用这些实用程序库的产品迁移到 java11 我创建了一
  • 在封闭范围内定义的局部变量必须是最终的或有效最终的

    我正在尝试打印出百分比x mol 但我似乎无法让它发挥作用 我收到此错误 Local variable x defined in an enclosing scope must be final or effectively final 它
  • 防止 Designer.cs 中特定行的自动代码更改

    我在 Designer cs 中做了一个简单的更改 即 this dateTimePicker MaxDate DateTime Now 但每当我对表单设计进行一些更改时DateTime Now被当前日期时间值替换 如何防止这种自动代码更改
  • 如何制作动态大小的数据表?

    我使用的是 Excel 2010 我有一个与此类似的 每月 数据表 MonthBegin InventoryExpenses Overhead TotalSales TotalSalesIncome TotalProfit July 11
  • 如何在phonegap中连接到mysql数据库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 任何人都可以向我展示如何连
  • AJAX 响应错误:net::ERR_EMPTY_RESPONSE

    CODE 前端 document ready function delete post on click function var id this data id var section this data section var url
  • 使浮动子项在溢出之外可见:隐藏父项

    在 CSS 中overflow hidden设置在父容器上 以便使其能够随着浮动子容器的高度而扩展 但与它结合使用时 它还有另一个有趣的功能margin auto 如果 PREVIOUS 同级元素是浮动元素 它实际上会与其并列显示 也就是说
  • WPF C# 当前控件工具提示中的状态栏标签内容

    好的 所以我试图弄清楚如何设置状态栏标签文本以显示有关鼠标悬停在其上的当前控件的信息 我在许多程序中多次看到过这种情况 所以我知道这是可以完成的 并且我确信那里有可以帮助我的解释 但不幸的是我似乎找不到合适的词来搜索答案 我能找到的最接近的
  • Grails:从 GSP 生成 PDF

    我的 GSP 页面有多个表格以及一些其他 HTML 元素 例如输入文本字段和标题 h1 h2 texts 我希望所有这些信息都被捕获在生成的文本中 到目前为止 我看到的示例仅适用于生成一张表 有没有一种快速方法可以从 GSP 中已填充的所有
  • BackgroundWorker DoWork 线程的堆栈大小是多少?有办法改变吗?

    我知道 C 主程序的堆栈大小为 1 MB 32 位和任意位 或 4 MB 64 位 请参阅为什么 C 中的堆栈大小正好是 1 MB 默认堆栈大小是多少BackgroundWorker DoWork thread 有没有办法改变堆栈大小Bac
  • 如何使用opencv库将3D矩阵的元素归零?

    我正在努力使用 opencv 将 3D 矩阵的元素归零 我可以将二维矩阵中的所有元素归零 如下所示 meta new Mat Mat zeros cluster 3 CV 32S 我尝试使用类似的方式来初始化 3D 矩阵中的 0 元素 但失
  • 如何将类似 JSON(非 JSON)的字符串转换为对象?

    我们都知道我们可以使用JSON parse 转换字符串 a 0 b haha 到对象 a 0 b haha 但是我们可以转换字符串吗 a 0 b haha 到对象 a 0 b haha 我正在编写一个网络爬虫 我需要获取页面中的数据 但完整
  • 为什么 PowerShellWhere-Object 在传递变量时不起作用?

    功能 function findf Write Host Find files that match args gci r Where Object name match args 似乎不起作用 例如 findf exe 打印一堆内容 不限
  • 如何实现python在xml标签之间查找值?

    我正在使用 google 网站检索天气信息 我想查找 XML 标签之间的值 以下代码为我提供了城市的天气状况 但我无法获取其他参数 例如温度 并且如果可能的话请解释代码中隐含的 split 函数的工作原理 import urllib def
  • 无法让 gulp-rev-replace 与 gulp-useref 一起使用

    继续我之前的question 但这一次是下一步 让文件修订生效 我正在使用 Gulp 学习 johnpapa 的自动化课程 但似乎遇到了另一堵墙 这就是当您尝试将简洁的课程适应不同的文件结构时所得到的结果 P 基本上 问题是我确实得到了以修
  • 从 htmlService 执行时函数不会运行?

    我试图在 htmlService modalDialog 打开 5 秒后切换当前工作表 因为某些原因SwitchToSheet1 不起作用 gs function openModal var ui SpreadsheetApp getUi
  • Javascript Es6 标记模板 - 何时使用 raw?什么时候用熟的?

    研究完这个 Es6 标签模板示例后 var yo func x y n x y one public node es6 6to5 tag js use strict var taggedTemplateLiteral function st