Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

页面切换次数多了的时候,会出现hash跳转了但是view没渲染的情况 #154

Closed
virola opened this issue Feb 2, 2015 · 24 comments

Comments

@virola
Copy link

virola commented Feb 2, 2015

而且貌似是edp build之后才出现,build之前没有。

ps.
用的最新的tag;
build的时候有合并tpl

@leeight
Copy link
Member

leeight commented Feb 2, 2015

有js报错么?发svn地址或者git地址。发edp -v的输出

@virola
Copy link
Author

virola commented Feb 2, 2015

·
edp -v
edp@1.0.1 C:\Users\virola\AppData\Roaming\npm\node_modules\edp
Builtin Commands:
edp-config (1.0.2)
edp-core (1.0.28)
edp-build (1.0.14)
edp-package (0.5.6)
edp-project (0.6.1)
edp-webserver (1.0.16)

User Commands:
edpx-add (1.0.3)
edpx-ws (0.0.2)
·

刚试了下,确认是tplMerge的问题,如果没有merge模板,就能切换正常

@Justineo
Copy link
Member

Justineo commented Feb 2, 2015

@virola 还在用 ER,真爱啊哈哈……

@virola
Copy link
Author

virola commented Feb 2, 2015

@Justineo 是啊,用这个最快,学新的framework太难啊。
我直接用er做移动端了,也不知有木有坑

@leeight
Copy link
Member

leeight commented Feb 2, 2015

@virola 你已经不再百度了?

@virola
Copy link
Author

virola commented Feb 2, 2015

@leeight 是啊,所以没法给你发svn/git地址啊,不过你可以找个项目试下在edp-build-config里加一个

    var tplMerge = new TplMerge({
        outputType: 'js'
    });

build看看效果

@otakustay
Copy link
Member

是切换次数多了,还是切换得很快导致的?

@leeight
Copy link
Member

leeight commented Feb 2, 2015

@firede 雷哥可以接客了

@firede
Copy link
Member

firede commented Feb 2, 2015

@virola 我不懂 ER 呀,要不你试试这个:http://ecomfe.github.io/saber/

@virola
Copy link
Author

virola commented Feb 2, 2015

@leeight PC上也是同样的问题

@virola
Copy link
Author

virola commented Feb 2, 2015

@otakustay 不是切换很快, 是切换几次(也有点一两次),就开始渲染不了了,或者有的能点有的不能点。模板合并成1个的时候才这样

@jinzhubaofu
Copy link

看一下生成的tpl,需要的target是不是都在

@virola
Copy link
Author

virola commented Feb 2, 2015

@jinzhubaofu target没有问题,页面都能render一次,就是之后再点进来就没有render;但也不是所有view都这样,有的会渲染有的不会渲染

@jinzhubaofu
Copy link

打开all exceptions pause那个定位下吧…

@otakustay
Copy link
Member

我会争取明天写个简单的项目试试……

先确认下,TplMergeoutputType不是js的时候是好的?

@virola
Copy link
Author

virola commented Feb 2, 2015

@otakustay 嗯,文档貌似有说pluginId和outputType一起用才起作用,所以这里写了outputType: js也没有影响最终tpl.html的输出

@virola
Copy link
Author

virola commented Feb 3, 2015

会不会是因为build-config处理器顺序问题?
我昨天把tplMerge写在 jsCompressor后面了,像这样:

var moduleEntries = 'html,htm,phtml,tpl,vm,js';
var pageEntries = 'html,htm,phtml,tpl,vm';

exports.getProcessors = function () {
    var lessProcessor = new LessCompiler({
        entryExtnames: pageEntries
    });
    var cssProcessor = new CssCompressor();
    var moduleProcessor = new ModuleCompiler({
        configFile: 'module.conf',
        entryExtnames: moduleEntries
    });
    var jsProcessor = new JsCompressor();
    var pathMapperProcessor = new PathMapper({
        replacements: [
            { type: 'html', tag: 'link', attribute: 'href', extnames: pageEntries },
            { type: 'html', tag: 'img', attribute: 'src', extnames: pageEntries },
            { type: 'html', tag: 'audio', attribute: 'src', extnames: pageEntries },
            { type: 'html', tag: 'script', attribute: 'src', extnames: pageEntries },
            { extnames: 'html', replacer: 'module-config' },
            { extnames: 'less,css', replacer: 'css' }
        ],
        from: 'src',
        to: 'asset'
    });
    var addCopyright = new AddCopyright();

    var tplMerge = new TplMerge({
        outputType: 'js'
    });

    return {
        'debug': [ lessProcessor, moduleProcessor, pathMapperProcessor ],
        'default': [
            lessProcessor, cssProcessor, moduleProcessor,
            jsProcessor, 
            tplMerge, 
            pathMapperProcessor, addCopyright
        ]
    };
};

刚刚试了下把 tplMerge 放到 moduleProcessor 前面,然后也把各个view里面require的tpl都提到入口文件里面,这样build出来是没问题的

@otakustay
Copy link
Member

只用outputType其实最后生成的还是.tpl.html,而不是一个.js,我们这边的项目都是合并模板为一个HTML的,一直没有问题

@virola 能不能确认下你们build后的模板到底是HTML还是js?

Best regards

Gray Zhang

在 2015年2月3日 下午1:53:04, Virola (notifications@github.com) 写到:

会不会是因为build-config处理器顺序问题?
我昨天把tplMerge写在 jsCompressor后面了,像这样:

var moduleEntries = 'html,htm,phtml,tpl,vm,js';
var pageEntries = 'html,htm,phtml,tpl,vm';

exports.getProcessors = function () {
var lessProcessor = new LessCompiler({
entryExtnames: pageEntries
});
var cssProcessor = new CssCompressor();
var moduleProcessor = new ModuleCompiler({
configFile: 'module.conf',
entryExtnames: moduleEntries
});
var jsProcessor = new JsCompressor();
var pathMapperProcessor = new PathMapper({
replacements: [
{ type: 'html', tag: 'link', attribute: 'href', extnames: pageEntries },
{ type: 'html', tag: 'img', attribute: 'src', extnames: pageEntries },
{ type: 'html', tag: 'audio', attribute: 'src', extnames: pageEntries },
{ type: 'html', tag: 'script', attribute: 'src', extnames: pageEntries },
{ extnames: 'html', replacer: 'module-config' },
{ extnames: 'less,css', replacer: 'css' }
],
from: 'src',
to: 'asset'
});
var addCopyright = new AddCopyright();

var tplMerge = new TplMerge({
    outputType: 'js'
});

return {
    'debug': [ lessProcessor, moduleProcessor, pathMapperProcessor ],
    'default': [
        lessProcessor, cssProcessor, moduleProcessor,
        jsProcessor,  
        tplMerge,  
        pathMapperProcessor, addCopyright
    ]
};

};

刚刚试了下把 tplMerge 放到 moduleProcessor 前面,然后也把各个view里面require的tpl都提到入口文件里面,这样build出来是没问题的


Reply to this email directly or view it on GitHub.

@virola
Copy link
Author

virola commented Feb 3, 2015

@otakustay 恩,是的,我们也是build之后用.tpl.html,模板用的etpl,没用esui

@otakustay
Copy link
Member

这事没有试出来……因为我们的项目就是build为一个文件的,但始终没出现这情况

你是否能给我可运行的源码之类的来辅助下问题排查……我比较怀疑是某个Action的dispose出了问题之类的

@virola
Copy link
Author

virola commented Feb 9, 2015

@otakustay https://github.com/virola/demo-project 这个,build之后,点击首页随便那个button,再点logo回首页,再点其他button就会出现这种情况了

@otakustay
Copy link
Member

搞定了,esl的一个BUG,和我这边曾经遇到过的问题一样,已经让 @errorik 修复过了,你改用2.0.4的esl就好了

@otakustay
Copy link
Member

顺便给下对应的Issue:ecomfe/esl#35

在这之前我们一直用的esl是1.x版本正好就没事,上周转到2.0.2发现的这问题及时给搞了

@virola
Copy link
Author

virola commented Feb 10, 2015

soga! 没想到最后是因为esl的bug... = = 切换2.0.4现在可以了~

@virola virola closed this as completed Feb 10, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants