javascript
  • mithril.js
  • 2016-02-08 75 views 0 likes 
    0

    我正在使用mithril 0.2.2-rc.1。我在routing documentation中看到: 路由是一种允许创建单页面应用程序(SPA)的系统,即可以从一个页面到另一个页面的应用程序而不是导致完全浏览器刷新。mithril避免重新加载图像

    事实上,当我路由到不同的参数只有一部分,我想改变同一页面刷新预计这样的:

    m("img[src='assets/images/logo.png'][alt=''][width='100']") 
    

    我可以在该图像是网络通信见重新加载(另一个GET请求)。

    有没有办法避免这种情况?

    route.js

    m.route.mode = "pathname"; 
    
    m.route(document.getElementById('app'), '/', { 
        '/': main, 
    
        '/modelling/:level': main 
    
    }) 
    

    回答

    2

    这是很难看到的两段代码是如何结合在一起,但两件事情言自明:

    1. 路线(每次改变,即使这种变化的结果相同的路由条目,例如/modelling/x/modelling/y)将导致整个DOM被重新生成。您可以通过在每个路由组件的控制器中调用m.redraw.strategy('diff')来防止此行为。
    2. 重复请求相同的资源不会导致对服务器的额外调用:每个请求相同JS和CSS的页面的多页面站点只会加载这些资源一次,并且会在随后的请求中触发浏览器缓存。因此反复询问相同的图像资源将不会生成任何新的服务器调用。
    2

    如果检查the documentation of the m method你会看到config属性可以让你保留整个重绘元素。所以这应该适合你:

    m('img', {config: function persist(el, isInit, context)}) { 
        context.retain = true; 
    } 
    
    相关问题