`
JerryWang_SAP
  • 浏览: 1032769 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ES6, Angular,React和ABAP中的String Template(字符串模板)

阅读更多

String Template(字符串模板)在很多编程语言和框架中都支持,是一个很有用的特性。本文将Jerry工作中使用到的String Template的特性做一个总结。

ES6

阮一峰老师有一个专门的网站介绍ES6入门,还出了一本书: 《ECMAScript6标准入门》。

http://es6.ruanyifeng.com/

 

我们来看看ES6里的String Template。

首先看下面这段代码。

<html>

<div id="JerryTest">

</div>

<script>

function getHTML(names){

var content = names.map((name) =>{ return "<p>Hello, " + name + "!</p>"});

return content.join("");

}

var names = ["Java", "JavaScript", "ABAP"];

var dom = document.getElementById("JerryTest");

dom.innerHTML = getHTML(names);

</script>

</html>

names是个数组,传入一个箭头函数,针对每个数组原则,构造一个字符串,代表一个p标签页,标签页的内容就为数组元素本身。

在浏览器里打开该html页面,得到下列输出。

 

我们再来看String Template的解决方案。

<html>

<div id="JerryTest">

</div>

<script>

function getHTML(names){

var content = names.map((name) =>{ return `<p>Hello, ${name}!</p>`});

return content.join("");

}

var names = ["Java", "JavaScript", "ABAP"];

var dom = document.getElementById("JerryTest");

dom.innerHTML = getHTML(names);

</script>

</html>

可以看到String Template的解决方案里,我们只用了一对"`"符号,将字符串模板的内容包起来,而原始的常规方案,使用了两对“”,稍显麻烦。

这个例子本身比较简单,可能体现不出String Template的优势。但在实际项目中,如果字符串模板长度过长或者里面包含的变量很多时,使用常规解决方案就需要很多“”,非常繁琐且容易出错。

 

Angular框架中的String Template的应用

 

其实严格意义上来说,Angular框架的{{}}语法并不能等价于ES6中的字符串模板,只是我个人觉得它们思路类似,所以也放在一起讨论。

看一下这个最简单的Angular例子。

 

在浏览器里打开它,在Input field里输入一些内容后,这些内容会存储在通过指令ng-model声明的名称为name的模型里。在HTML的正文,通过语法"{{name}}"将模型name存储的内容显示在浏览器上。

 

例子本身很简单。然而您有没有好奇过,Angular框架实现,在运行时是如何把{{name}}替换成name模型包含的实际内容的?

让我们调试一下angular.js的实现,学习一下框架的设计吧。

其实也没有什么高深之处,Angular首先还是会用JavaScript字符串自带的API indexOf去查找字符串内是否包含了startSymbol即{{, endSymbol即}}。

 
 

每一次敲一个字符到Input field时,Angular框架都会响应并进行相应处理。

还是上面的例子,如果我输入单词Jerry,在Chrome开发者工具里会观察到下列的日志:

 

当然这些日志都是我研究Angular.js时手动添加进去的。我把我加了很多跟踪日志的Angular实现文件放在我的github上了:

https://github.com/i042416/KnowlegeRepository/blob/master/practice/angular/angular.js

String Template in React

 

React框架里也有类似Angular里的字符串模板的用法,思路类似。下图代码第14行指定了在渲染时要输出的HTML源代码模板,由静态的<h1>Hello</h1>和动态的{this.props.name}组成。在渲染的时候,{this.props.name}会被替换成Jerry。最后看到的HTML上会显示Hello Jerry。

 

String Template in ABAP

ABAP是我日常工作使用的编程语言,全称为Advanced Business Application Programming。语法和ES6是几乎完全一致的,只是ES6用成对的"`"来作为String Template开始和结束的标志,而ABAP用“|”。String Template里内部对变量的声明,ES6用的是${}, ABAP用的{}。

 

看一个具体的例子吧。

 

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
0
分享到:
评论

相关推荐

    deline一个ES6字符串标记能够删除多行字符串中多余的换行

    在JavaScript中,可以使用模板字符串(模板字面量)来创建多行字符串,它通过反引号(`)来包围字符串,并允许在其中嵌入表达式和换行。然而,当从外部源(如文件或数据库)获取多行文本时,可能会包含不必要的换行...

    ES6字符串模板,剩余参数,默认参数功能与用法示例

    总结一下,ES6的字符串模板、剩余参数和默认参数都是为了让JavaScript的编写更加简洁、易读和灵活。它们分别解决了字符串拼接的复杂性、函数参数处理的不便以及默认值的缺失问题,提升了开发效率和代码质量。理解并...

    es6在react中的应用代码解析

    总结起来,ES6在React中的应用包括但不限于类组件、箭头函数、解构赋值、扩展运算符、状态管理和props处理等,这些特性显著提高了React开发的效率和代码质量。在实际开发中,熟练掌握这些技巧能够使代码更加简洁、...

    Electron + React + Node.js + ES6 开发环境全配置好

    ES6(ECMAScript 2015)是JavaScript语言的一个重要版本,引入了许多新的特性和语法糖,如箭头函数、类、模板字符串、let/const、解构赋值等。 - **箭头函数:** 更简洁的函数定义方式。 - **类:** 面向对象编程的...

    在Vuejs中使用带标记的模板字符串

    模板字符串,又称模板字面量,是ES6引入的一种新型字符串表示方式,它允许我们在字符串中嵌入表达式并使用反引号(`)包裹。在Vue.js中,我们可以利用这种特性来增强模板的灵活性和可读性。 1. **模板字符串基础** ...

    webpack + Es6 + react

    主要是webpack + ES6 + react 简单的demo,并附上全部源码demo,详情链接请查看: http://blog.csdn.net/qq_16559905/article/details/53872880

    详解JavaScript ES6中的模板字符串

    模板字符串和标签模板的出现,让 JavaScript 中的字符串操作更加高效和安全。然而,它们并不适用于所有场景,如处理国际化格式或复杂的模板引擎功能。对于这些需求,开发者可能还需要借助其他库或工具。总的来说,...

    A Comments System bulid by flex + Es6 + react + redux + pm2

    2. **ES6(ECMAScript 2015)**:作为JavaScript的最新版本,ES6引入了许多新的语法特性,如箭头函数、类、模板字符串等,提高了代码的可读性和简洁性。在本项目中,开发者使用ES6编写后端和前端的JavaScript代码,...

    es6-string-html:es6多行字符串中的突出显示代码

    在es6多行字符串中添加了对代码的语法突出显示支持: HTML(包括带引号和未引号的html的atts) SQL 社区 在ES6模板文字中突出显示CSS 在python多行字符串中突出显示SQL代码 在多行字符串中突出显示JS 安装 从扩展...

    systemjs-seed, SystemJS ES6 Angular .zip

    systemjs-seed, SystemJS ES6 Angular SystemJS ES6 AngularJS 通过SystemJS生成ES6模块的Seed项目,使用Babel语法使用ES6语法( 是: 6 ) 延迟加载和带AngularJS的包构建。注释 !这个项目

    JavaScript深入系列JavaScript专题系列ES6系列React系列

    "ES6系列"涵盖了ECMAScript 2015(也称为ES6)引入的新特性,如箭头函数、类、解构赋值、模板字符串、let和const、Promise、Map和Set等。这些新特性大大增强了JavaScript的表达能力和可读性,也是现代JavaScript开发...

    前端学习-ES6模板字符串应用

    而ES6中的模板字符串则能够更直观地表示多行文本和嵌入表达式。 #### 模板字符串的基本用法 模板字符串使用反引号(`` ` ``)包裹,并且可以在字符串中使用${}语法来插入任何有效的JavaScript表达式。例如: ```...

    electron-es6-react-bootstrap:最小的电子应用程序,es6和React

    电子es6React靴 克隆并运行即可快速查看运行中的电子。 这是基于Electron文档中的《的最小的Electron应用程序。 基本的Electron应用程序仅需要以下文件: index.html要呈现的网页。 main.js启动应用程序并创建一...

    ES6中字符串string常用的新增方法小结

    6. ${}:ES6 中引入了模板字符串(Template String),可以使用 ${} 来嵌入变量。例如:let str="wbiokr";$('#box').html(' there is a word ${str},i know it');//结果:there is a word wbiokr,i know it。模板...

    ES6学习教程之模板字符串详解

    模板字符串(template strings) ES6 中引进的一种新型的字符串字面量语法...模板字符串和 ES5的字符串的声明一样。 // ES5 var name = 'xixi'; console.log(name);// xixi // ES6 let name4ES6 = `一步`; console.log

    使用ES6语法重构React代码详解

    在React开发中,ES6语法的引入极大地提高了代码的可读性和简洁性。本文将详细介绍如何使用ES6语法重构React代码,以及与之前使用`React.createClass`方法的区别。 首先,让我们看看如何使用ES6 `class`语法创建...

    JavaScript:ES6新特性:模板字符串与解构赋值

    ### JavaScript:ES6新特性详解:...通过以上分析,可以看出模板字符串和解构赋值是ES6中非常实用的功能,它们不仅简化了代码,还提高了代码的可读性和可维护性。掌握这些新特性对于提升JavaScript编程技能至关重要。

    深入浅出es6模板字符串

    ES6模板字符串是ECMAScript 6(简称ES6)中引入的一种新的语法特性,用于解决字符串拼接的问题。在ES6之前,我们通常使用字符串拼接的方式来组装HTML,例如: $('#result').append('There are ' + basket.count + '...

    spire-of-Babel:for与ES6,React和TypeScript一起使用的一站式解决方案

    使用ES6,React和TypeScript的一站式解决方案。 Babel的Spire是一个零配置工具,消除了建立以ES6,React和TypeScript编写的项目的猜测。 除了使用转换ES6外, Spire还附带了一个用于同时使用require('')和import...

Global site tag (gtag.js) - Google Analytics