• js中多行字符串拼接


    前言

    我们会经常遇到这样的场景,需要拼接多行字符串,在字符串中动态插入一些数据以达到业务的需求。但是js中并没有标准的多行编辑的函数,于是聪明的程序员们便脑洞大开,书写出许多有趣的方法。

    多行字符串拼接方式

    1
    2
    3
    4
    5
    <div class="links">
    <a href="http://qianlongo.github.io/">谦龙的博客</a>
    <a href="http://aximario.github.io/">阿希的博客</a>
    <a href="http://lingyu.wang/">天镶的博客</a>
    </div>

    对于上图的dom结构如果要在js中拼接,你会用什么组织方式呢?

    1. 常规方式

    1
    var str = '<div class="links"><a href="http://qianlongo.github.io/">谦龙的博客</a><a href="http://aximario.github.io/">阿希的博客</a><a href="http://lingyu.wang/">天镶的博客</a></div>'

    看到上面那一坨的代码,不知道您的心情是怎样的,反正我是完全没有心情看下去了,可读性太差了,于是乎为了写出可读性强的代码我们开始了下面的征程

    2. 字符串相加形式

    1
    2
    3
    4
    5
    var str = '<div class="links">' +
    '<a href="http://qianlongo.github.io/">谦龙的博客</a>' +
    '<a href="http://aximario.github.io/">阿希的博客</a>' +
    '<a href="http://lingyu.wang/">天镶的博客</a>' +
    '</div>'

    这种也许是我们用的很多的一种方式,简单灵活,可以直观地看出dom结构,但是写出来的代码犹如满天繁星一般,有些头晕目眩

    3. 反斜杠

    1
    2
    3
    4
    5
    '<div class="links">
    <a href="http://qianlongo.github.io/">谦龙的博客</a>
    <a href="http://aximario.github.io/">阿希的博客</a>
    <a href="http://lingyu.wang/">天镶的博客</a>
    </div>'

    4. 数组切割方式

    1
    [ '<div class="links">','<a href="http://qianlongo.github.io/">谦龙的博客</a>','<a href="http://aximario.github.io/">阿希的博客</a>','<a href="http://lingyu.wang/">天镶的博客</a>','</div>'].join(' ');

    5. es6 方式

    es6的到来给我们带来许多新的特性,其中有一部分是关于模板字符串的,专门可以用来解决多行编辑的问题

    1
    2
    3
    4
    5
    `<div class="links">
    <a href="http://qianlongo.github.io/">谦龙的博客</a>
    <a href="http://aximario.github.io/">阿希的博客</a>
    <a href="http://lingyu.wang/">天镶的博客</a>
    </div>`

    注意第一个和最后一个” ` “符号,整段代码干净简洁,太舒服了有木有

    6. 黑魔法 function.toString()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function toSting(fn){
    return fn.toString().split(' ').slice(1,-1).join(' ') + ' ';
    }
     
    document.body.innerHTML = toString(function(){/*
    <div class="links">
    <a href="http://qianlongo.github.io/">谦龙的博客</a>
    <a href="http://aximario.github.io/">阿希的博客</a>
    <a href="http://lingyu.wang/">天镶的博客</a>
    </div>
    */})

    总结

    方法会有很多,适合自己的,适合解决实际问题的方法才是最好的方法。

  • 相关阅读:
    Android开发 GradientDrawable详解
    Android开发 ShapeDrawable详解
    Android开发 ViewPager删除Item后,不会更新数据和View
    Android开发 输入法调用学习
    Android开发 EditText的开发记录
    Android开发 TextView的开发记录
    Android开发 获取View的尺寸的2个方法
    Android开发 获取视频中的信息(例如预览图或视频时长) MediaMetadataRetriever媒体元数据检索器
    Android开发 Tablayout的学习
    Python 模块-zipfile
  • 原文地址:https://www.cnblogs.com/libin-1/p/5998902.html
Copyright © 2020-2023  润新知