avalon2的这个例子下的function heredoc(fn)的作用

发布于 2022-09-04 08:32:26 字数 364 浏览 14 评论 0

这个例子中的这段的作用是什么?
是不是avalonjs组件都要用类似的函数呢?

        function heredoc(fn) {
            return fn.toString().replace(/^[^\/]+\/\*!?\s?/, '').
            replace(/\*\/[^\/]+$/, '').trim().replace(/>\s*</g, '><')
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

提笔书几行 2022-09-11 08:32:26

该方法功能只是为了以字串形式返回指定函数中注释部分的代码。之所以这样用是因为,如果直接将html的字串赋值给模板的话,要进行转义,而且可读性会变差,不好修改维护。
比如:

function func () {
    /*
    <div class="tree-node" ms-click='@click' ms-class="@cls" ms-css="{'text-indent': @level * 30}">
    <p>第{{@level}}层</p>
    <div ms-for="(index,el) in @children">
       <wbr is="tree" ms-widget="[el, {level: @level+1, pid: @sid, pos:index}]" />
    </div>
    </div>
    */
})

调用 heredoc(func) 后,会直接返回注释中的html模板字串。即:

<div class="tree-node" ms-click='@click' ms-class="@cls" ms-css="{'text-indent': @level * 30}">
<p>第{{@level}}层</p>
<div ms-for="(index,el) in @children">
   <wbr is="tree" ms-widget="[el, {level: @level+1, pid: @sid, pos:index}]" />
</div>
</div>

但如果让你直接把这个模板字串赋值给某个变量,就需要转义处理,修改也会变麻烦。

所以结论就是,如果你有更好的加载模板内容的方式,可以不用 heredoc 方法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文