code: function (widgetName, param, moduleName) {
        needBeauty = false;
        return loadWidget(widgetName, param, moduleName, function (widgetPath, widgetContent, widget) {
          var floorIdReg = /\{[\s]*\$portal_floor_id[\s]*\}/g;
          var literalReg = /{literal}([\s\S]*){\/literal}/g;
          var testDataFile = path.join(widgetPath, 'data.json');
          var testData = Util.readJsonFile(testDataFile);
          widget.widgetType = 'floor';
          if (_.isEmpty(testData)) {
            gutil.log(gutil.colors.red('测试数据为空！请检查data.json文件！'));
            return widgetContent;
          }
          // 去掉{literal}{/literal}，同时解析出各个cell对应的数据
          widgetContent = widgetContent.replace(literalReg, function (m, $1) {
            return $1;
          }).replace(Util.regexps.doubleBraceInterpolate, function (m, $1) {
            if ($1.indexOf('cell_') >= 0) {
              var cellArr = [];
              var cellData = [];
              if ($1.indexOf('*') >= 0) {
                cellArr = $1.split('*');
                for (var i = 0; i < cellArr[1]; i++) {
                  cellData.push(testData[cellArr[0]]);
                }
              } else {
                cellData.push(testData[$1]);
              }
              return JSON.stringify(cellData);
            }
            return m;
          }).replace(floorIdReg, widgetIndex);
          
          return widgetContent;
        }, function (scriptContent) {
          var floorIdReg = /\{[\s]*\$portal_floor_id[\s]*\}/g;
          return scriptContent.replace(floorIdReg, widgetIndex);
        });
      }
docs: 加载widget楼层组件