[DikeJS]jsテンプレート技術について、requireJS定義モジュールを使用する(二)


昨日は第一版のテンプレートラベルの代替コードを作成しましたが、足りないところがたくさんあります.
1:正則はテンプレートに存在するスペースの問題にマッチできません.
2:属性項目に存在しないタブを削除できませんでした.
昨日の不足によって修正した後、新しいテンプレートの交換方法は以下の通りです.
/**
 * @Author Dike.Li
 * @Date 2015/7/30
 * @Description Template Label Replace
 */
define(function (require, exports, module) {
    /**
     *       {id}   option    {id:123}  
     * @param temp   
     * @param option     
     * @returns {*}
     * @constructor
     */
    var Template = function (temp, option) {

        /**
         *       XXX='{XXX}' || XXX="{XXX}"
         * @type {RegExp}
         */
        var regExp = new RegExp('[a-zA-Z]+[\\s]*=[\\s]*[\"\']\\{[^\\{\\}]+\\}[\"\']', '\g');

        /**
         *           XXX
         * @type {RegExp}
         */
        var regExpAttribute = new RegExp('[a-zA-Z]+', '\g');

        /**
         *           {XXX}
         * @type {RegExp}
         */
        var regExpLable = new RegExp('\\{[^\\{\\}]+\\}', '\g');

        /**
         *    XXX='{XXX}' || XXX="{XXX}"      
         * @type {Array|{index: number, input: string}|*}
         */
        var alArr = temp.match(regExp);

        /**
         *   option             ,          
         */
        for (var al in alArr) {
            /**
             *     
             */
            var attribute = alArr[al].match(regExpAttribute)[0];

            /**
             *     
             */
            var label = alArr[al].match(regExpLable)[0];

            if (typeof(option[attribute]) === 'undefined' ||
                option[attribute] === null ||
                option[attribute] === 'null' ||
                option[attribute] === '') {
                temp = temp.replace(alArr[al], '');
                continue;
            }

            temp = temp.replace(label, option[attribute]);
        }

        /**
         *         
         * @returns {*}
         */
        Template.prototype.getTemp = function () {
            return temp;
        };
    };
    module.exports = Template;
});