fex-team / jello

Front End Integrated Solution for J2EE Velocity.
206 stars 49 forks source link

打包之后resourceMap不全的问题,求教。 #20

Open maxchenliang opened 9 years ago

maxchenliang commented 9 years ago

不打包的情况下,一切正常。打包之后出现问题。 我的config:

var workPath = '/home/work/tools/tomcat/webapps/';

fis.config.set('roadmap.path', [{
    reg: /^\/page\/(.*\.(js|less|css|jpg|jpeg|png|gif))$/i,
    isMod: true,
    release: '${statics}/${namespace}/page/$1',
    url: '${webname}/${namespace}/page/$1'
},
{
    reg: /^\/widget\/(.*\.(js|less|css|jpg|jpeg|png|gif))$/i,
    isMod: true,
    release: '${statics}/${namespace}/widget/$1',
    url: '${webname}/${namespace}/widget/$1'
},
{
    reg: /^\/(static)\/(.*)/i,
    release: '${statics}/${namespace}/$2',
    url: '${webname}/${namespace}/$2'
},
{
    reg: /^\/data\/(.*\.json)$/i,
    release: '/WEB-INF/data/$1'
},
{
    reg: /^\/pkg\/(.*\.(css|js))$/i,
    isMod: true,
    release: '${statics}/${namespace}/pkg/$1',
    url: '${webname}/${namespace}/pkg/$1'
}].concat(fis.config.get('roadmap.path')));

fis.config.merge({
    webname: '',
    // statics: '',
    namespace: 'common',
    roadmap: {
        ext: {
            less: 'css'
        }
    },
    settings: {
        spriter: {
            csssprites: {
                //图之间的边距
                margin: 5
            }
        },
        optimizer: {
            'png-compressor': {
                type: 'pngquant' //default is pngcrush
            }
        },
        postpackager: {
            simple: {
                autoCombine: true
            }
        }
    },
    pack: {
        'pkg/common.js': [
            '/widget/ui/template/template.js',
            '/widget/ui/iscroll/iscroll4.js',
            /^\/widget\/ui\/zepto\/.*\.js$/i
            // '/widget/ui/fastclick/fastclick.js',
        ]
    },
    modules: {
        parser: {
            less: 'less'
        },
        optimizer: {
            tpl: 'html-compress'
        },
        spriter: 'csssprites',
        postpackager: 'simple'
    },
    deploy: {
        // 开发用
        work: [{
            receiver: 'http://10.2.3.24:8999/receiver',
            from: '/WEB-INF/views',
            to: workPath + 'ad-ui/WEB-INF/classes'
        },{
            receiver: 'http://10.2.3.24:8999/receiver',
            from: '/static',
            to: workPath + 'ad-ui/WEB-INF/classes'
        },{
            receiver: 'http://10.2.3.24:8999/receiver',
            from: '/WEB-INF/data',
            to: workPath + 'ad-ui/WEB-INF/'
        },{
            receiver: 'http://10.2.3.24:8999/receiver',
            from: '/WEB-INF/config',
            to: workPath + 'ad-ui/WEB-INF/'
        }],
        // work: [{
        //     receiver: 'http://10.2.3.24:8999/receiver',
        //     from: '/',
        //     to: workPath + 'ad-ui/'
        // }],
        local: [{
            from: '/',
            to: '/Library/Tomcat/webapps/ad-demo-1/'
        }]
    }
});

产出的map:

{
  "res": {
    "common:page/layout/base.vm": {
      "uri": "/common/page/layout/base.vm",
      "type": "vm",
      "extras": {
        "isPage": true
      }
    },
    "common:static/js/mod.js": {
      "uri": "/common/js/mod_1c8526c.js",
      "type": "js"
    },
    "common:widget/conf/conf.vm": {
      "uri": "/common/widget/conf/conf.vm",
      "type": "vm"
    },
    "common:widget/css-base/css-base.vm": {
      "uri": "/common/widget/css-base/css-base.vm",
      "type": "vm"
    },
    "common:widget/css-base/layout.less": {
      "uri": "/common/widget/css-base/layout_e12e54a.css",
      "type": "css"
    },
    "common:widget/css-base/reset.less": {
      "uri": "/common/widget/css-base/reset_d371a04.css",
      "type": "css"
    },
    "common:widget/css-base/tool.less": {
      "uri": "/common/widget/css-base/tool_84dd714.css",
      "type": "css"
    },
    "common:widget/css-base/var.less": {
      "uri": "/common/widget/css-base/var_01e1968.css",
      "type": "css"
    },
    "common:widget/ui/fastclick/fastclick.js": {
      "uri": "/common/widget/ui/fastclick/fastclick_039fbf8.js",
      "type": "js"
    },
    "common:widget/ui/iscroll/iscroll4.js": {
      "uri": "/common/widget/ui/iscroll/iscroll4_1cd3fd8.js",
      "type": "js",
      "pkg": "common:p0"
    },
    "common:widget/ui/iscroll/iscroll5.js": {
      "uri": "/common/widget/ui/iscroll/iscroll5_12f7959.js",
      "type": "js"
    },
    "common:widget/ui/template/template.js": {
      "uri": "/common/widget/ui/template/template_e622ab1.js",
      "type": "js",
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.1.1.3.js": {
      "uri": "/common/widget/ui/zepto/zepto.1.1.3_5a713c5.js",
      "type": "js",
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.assets.js": {
      "uri": "/common/widget/ui/zepto/zepto.assets_b934fdc.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.callbacks.js": {
      "uri": "/common/widget/ui/zepto/zepto.callbacks_9a2cc25.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.data.js": {
      "uri": "/common/widget/ui/zepto/zepto.data_7413b6a.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.deferred.js": {
      "uri": "/common/widget/ui/zepto/zepto.deferred_8183064.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.fx.js": {
      "uri": "/common/widget/ui/zepto/zepto.fx_0769730.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.fx_methods.js": {
      "uri": "/common/widget/ui/zepto/zepto.fx_methods_83a7841.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.js": {
      "uri": "/common/widget/ui/zepto/zepto_75ddf81.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js",
        "common:widget/ui/zepto/zepto.touch.js",
        "common:widget/ui/zepto/zepto.selector.js",
        "common:widget/ui/zepto/zepto.callbacks.js",
        "common:widget/ui/zepto/zepto.stack.js",
        "common:widget/ui/zepto/zepto.data.js",
        "common:widget/ui/zepto/zepto.deferred.js",
        "common:widget/ui/zepto/zepto.assets.js",
        "common:widget/ui/zepto/zepto.fx.js",
        "common:widget/ui/zepto/zepto.fx_methods.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.selector.js": {
      "uri": "/common/widget/ui/zepto/zepto.selector_42241b0.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.stack.js": {
      "uri": "/common/widget/ui/zepto/zepto.stack_3f78d33.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    },
    "common:widget/ui/zepto/zepto.touch.js": {
      "uri": "/common/widget/ui/zepto/zepto.touch_24027e6.js",
      "type": "js",
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js"
      ],
      "pkg": "common:p0"
    }
  },
  "pkg": {
    "common:p0": {
      "uri": "/common/pkg/common_30cc44f.js",
      "type": "js",
      "has": [
        "common:widget/ui/template/template.js",
        "common:widget/ui/iscroll/iscroll4.js",
        "common:widget/ui/zepto/zepto.1.1.3.js",
        "common:widget/ui/zepto/zepto.assets.js",
        "common:widget/ui/zepto/zepto.callbacks.js",
        "common:widget/ui/zepto/zepto.data.js",
        "common:widget/ui/zepto/zepto.deferred.js",
        "common:widget/ui/zepto/zepto.fx.js",
        "common:widget/ui/zepto/zepto.fx_methods.js",
        "common:widget/ui/zepto/zepto.touch.js",
        "common:widget/ui/zepto/zepto.selector.js",
        "common:widget/ui/zepto/zepto.stack.js",
        "common:widget/ui/zepto/zepto.js"
      ]
    }
  }
}

页面中的resourceMap:

{
  "pkg": {
    "common:p0": {
      "has": [
        "common:widget/ui/template/template.js",
        "common:widget/ui/iscroll/iscroll4.js",
        "common:widget/ui/zepto/zepto.1.1.3.js",
        "common:widget/ui/zepto/zepto.assets.js",
        "common:widget/ui/zepto/zepto.callbacks.js",
        "common:widget/ui/zepto/zepto.data.js",
        "common:widget/ui/zepto/zepto.deferred.js",
        "common:widget/ui/zepto/zepto.fx.js",
        "common:widget/ui/zepto/zepto.fx_methods.js",
        "common:widget/ui/zepto/zepto.touch.js",
        "common:widget/ui/zepto/zepto.selector.js",
        "common:widget/ui/zepto/zepto.stack.js",
        "common:widget/ui/zepto/zepto.js"
      ],
      "type": "js",
      "url": "/common/pkg/common_30cc44f.js"
    }
  },
  "res": {
    "ad:widget/detail/groupon-info/groupon-info-async.js": {
      "deps": [
        "common:widget/ui/zepto/zepto.js",
        "common:widget/ui/iscroll/iscroll4.js"
      ],
      "url": "/ad/widget/detail/groupon-info/groupon-info-async_5f139c8.js"
    },
    "ad:widget/detail/groupon-recommend/groupon-recommend-async.js": {
      "deps": [
        "common:widget/ui/zepto/zepto.js"
      ],
      "url": "/ad/widget/detail/groupon-recommend/groupon-recommend-async_1181890.js"
    },
    "common:widget/ui/zepto/zepto.js": {
      "deps": [
        "common:widget/ui/zepto/zepto.1.1.3.js",
        "common:widget/ui/zepto/zepto.touch.js",
        "common:widget/ui/zepto/zepto.selector.js",
        "common:widget/ui/zepto/zepto.callbacks.js",
        "common:widget/ui/zepto/zepto.stack.js",
        "common:widget/ui/zepto/zepto.data.js",
        "common:widget/ui/zepto/zepto.deferred.js",
        "common:widget/ui/zepto/zepto.assets.js",
        "common:widget/ui/zepto/zepto.fx.js",
        "common:widget/ui/zepto/zepto.fx_methods.js"
      ],
      "pkg": "common:p0",
      "url": "/common/widget/ui/zepto/zepto_75ddf81.js"
    }
  }
}

页面现象: image 。。请问是否是所有的js资源只要是使用require都应该在resourceMap中的res字段中有对应的键。否则会出现类似这种common:widget/ui/zepto/zepto.assets.js请求,导致查找不到相应的res。进而导致查找不到相应的pkg? 请问是我配置的问题吗?如何解决。谢谢。

2betop commented 9 years ago

你确定这是 jello ?

2betop commented 9 years ago

感觉你用的是 pure 跟 jello 一点的关系都没有,另外我没看到你的 mod.js 在哪里引入了,需要更多的信息才能定位。

maxchenliang commented 9 years ago

这是我的mod.js

#html("common:static/js/mod.js", "lang", "zh-CN")
    #head()
        #block("head")
            <meta chaset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <meta name="keywords" content="${head.keywords}">
            <meta name="description" content="${head.description}">
            #block("title")
                <title>${head.title}</title>
            #end
            #widget("common:widget/css-base/css-base.vm")
            #widget("common:widget/conf/conf.vm")
        #end
    #end
    #body()
        #block("body")
        #end
    #end
#end
maxchenliang commented 9 years ago

因为项目后端希望用springboot。所以我在用jello的时候对path做了一些相应的调整。

2betop commented 9 years ago

把 simple 插件去掉试试, simple 是给纯前端解决方案用的

maxchenliang commented 9 years ago

去掉试了一下。还是一样。感觉不像是配置的问题,因为release的时候产出的map.json中资源在res中都有体现。感觉是在产生resourceMap的时候把一些给过滤掉了。不知道是不是这个问题。

2betop commented 9 years ago

resourceMap 只会包含异步 require 的资源。同步的直接在页面里面引入了。

贴下你的页面输出后的源代码吧。

maxchenliang commented 9 years ago
<html lang="zh-CN">    <head>                    <meta chaset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <meta name="keywords" content="keywords">
            <meta name="description" content="description">
                            <title>推荐</title>
                        <style type="text/css">
    html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;list-style:none}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent;text-decoration:none}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:700}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}
    .hide{display:none!important}
    .displayFlex{display:-webkit-flex;display:flex}
    html{font-size:10px}body{font-size:1.2rem;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;background-color:#f6f6f6}
</style>            <script type="text/javascript">
    var conf = {
        isTest: true ,
        pageId:  'recommend' ,
        appName:  'ad' ,
        user: {

        },
        opaque: {
            uuid:  'fsdf' ,
            token:  'fsdf' ,
            orderId:  'fsd' ,
            cityId:  'fdsfd' ,
            startAddr:  'fsdf' ,
            endAddr:  'fsf' ,
            startPoint:  'fsdf'         }
    };
</script>            <link rel="stylesheet" type="text/css" href="/ad/pkg/recommend-main_a91aa73.css"/></head>    

<script type="text/javascript" src="/common/js/mod_1c8526c.js"></script><script type="text/javascript">require.resourceMap({"pkg":{"ad:p1":{"deps":["common:widget/ui/zepto/zepto.js","common:widget/ui/template/template.js","common:widget/ui/iscroll/iscroll4.js"],"has":["ad:widget/recommend/recommend/recommend-async.js","ad:widget/recommend/sort/sort-async.js"],"type":"js","url":"/ad/pkg/recommend-main_92c47e0.js"},"common:p0":{"has":["common:widget/ui/template/template.js","common:widget/ui/iscroll/iscroll4.js","common:widget/ui/zepto/zepto.1.1.3.js","common:widget/ui/zepto/zepto.assets.js","common:widget/ui/zepto/zepto.callbacks.js","common:widget/ui/zepto/zepto.data.js","common:widget/ui/zepto/zepto.deferred.js","common:widget/ui/zepto/zepto.fx.js","common:widget/ui/zepto/zepto.fx_methods.js","common:widget/ui/zepto/zepto.touch.js","common:widget/ui/zepto/zepto.selector.js","common:widget/ui/zepto/zepto.stack.js","common:widget/ui/zepto/zepto.js"],"type":"js","url":"/common/pkg/common_30cc44f.js"}},"res":{"ad:widget/recommend/sort/sort-async.js":{"deps":["common:widget/ui/zepto/zepto.js"],"pkg":"ad:p1","url":"/ad/widget/recommend/sort/sort-async_bb36b5c.js"},"common:widget/ui/zepto/zepto.js":{"deps":["common:widget/ui/zepto/zepto.1.1.3.js","common:widget/ui/zepto/zepto.touch.js","common:widget/ui/zepto/zepto.selector.js","common:widget/ui/zepto/zepto.callbacks.js","common:widget/ui/zepto/zepto.stack.js","common:widget/ui/zepto/zepto.data.js","common:widget/ui/zepto/zepto.deferred.js","common:widget/ui/zepto/zepto.assets.js","common:widget/ui/zepto/zepto.fx.js","common:widget/ui/zepto/zepto.fx_methods.js"],"pkg":"common:p0","url":"/common/widget/ui/zepto/zepto_75ddf81.js"}}});</script><script type="text/javascript">    require.async("ad:widget/recommend/recommend/recommend-async.js", function(Recommend){
        var recommend = new Recommend({
            id: "recommend",
            cmsData: {
                perPageNum: 2,
                refresh: {
                    dragText: '下拉刷新',
                    releaseText: '释放即可刷新'
                },
                loadMore: {
                    dragText: '上拉加载更多',
                    releaseText: '释放即可加载',
                    noMoreText: '已没有更多数据',
                    loadErrorText: '加载失败,请重试'
                },
                loadingText: '加载中',
                common: {
                    unitText: '元',
                    soldText: '已售'
                }
            }
        });
        recommend.init();
    });
</script>
2betop commented 9 years ago

亲,你用的 mod.js 是否版本过低,换上这个里面最新的试试!再不行,共享你的代码,我本地跑一下来定位了。代码可以 emal 我,或者 email 你的 qq 给我,我加你!