zoukankan      html  css  js  c++  java
  • 读vue-0.6-text-parser.js源码

    提取字符串中的表达式

    var BINDING_RE = /{{(.+?)}}/;
    function parse(text) {
        // 找不到返回null
        if (!BINDING_RE.test(text)) return null
        var m, i, tokens = []
        while (m = text.match(BINDING_RE)) {
            i = m.index
            /* 
                这句话很重要,它会将不在{{}}之前的值也加入到tokens中,比如下面这段代码:
                <div> 总共消费 {{102 + 2}} 元</div>
                很显然其中的` 总共消费 `和` 元`也是需要的,虽然它们不需要计算,主要原因还是因为vue是通过textContent直接将dom中的内容替换。
            */
            if (i > 0) tokens.push(text.slice(0, i))
            /*
                将找到的值去首尾空格后赋给key
             */
            tokens.push({ key: m[1].trim() })
            /*
                将text移到下一处,如:
                <div>{{1 + 2}}{{2 + 3}}</div>
                提取完{{1 + 2}}接着提取{{2 + 3}}
             */
            text = text.slice(i + m[0].length)
        }
        // 这句话是为了防止表达式后面还有内容,所以我们需要将表达式后面的内容再提取出来。
        if (text.length) tokens.push(text)
        return tokens
    }
    
  • 相关阅读:
    HTTP处理程序介绍
    c# Enum获取name,value和description
    如何成为优秀的软件人才
    关于系统设计分层
    从DLL中加载启动窗体
    摩斯密码
    休息下
    关于博文转载
    整合TextBox与Label 创建新控件EFLabelText
    ProC连接Oracle
  • 原文地址:https://www.cnblogs.com/pssp/p/6752757.html
Copyright © 2011-2022 走看看