Vue中原生template标签失效怎么解决


这篇“Vue中原生template标签失效怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中原生template标签失效怎么解决”文章吧。找了整一天也没找着这事件为什么触发不了, 在这中间还把代码简化掉只留下事件触发逻辑执行了好几次.第二天意识到原生代码里的template可能有问题, 在原生环境中template标签内部的东西是不会渲染出来的, 虽然解析器在加载页面的时候确实会处理这部分代码片段.取自MDN:将模板视为一个可存储在文档中以便后续使用的内容片段.
虽然解析器在加载页面时确实会处理 但是放到vue里(这里特指Vue2), 如果template标签在Vue实例绑定的元素内部存在(即不是根元素外的那个template), 那么在DOM中该template的子元素是正常存在并显示的, 我以前经常拿templatev-for容器.然后联想前面几次结构简化demo, 大概不是没绑定而是绑错了目标.这个原生项目的HTML代码很多, 所以作者做了一些优化, 在需要某个模块的时候才将其appendChild加入DOM, 其余的时候这些模块都被放在template标签内, 而vue把这些东西都出来渲染了, 那么初始化的时候事件大概率就已经被绑到了template里面的那些代码里, 等到这些模块被appendChild的时候, 事件绑定已经结束了, 所以appendChild是将没有事件绑定的DOM加到了正确位置.我在控制台把视口里的DOM都删掉之后发现下面还有一层被挤出去的DOM, 那是有事件绑定的DOM.的确是这样.我是想把他appendChild这个优化留下来的, 我觉得在原生环境里能有这种封装的思想挺好, 不过看起来不好办…我打算把原来那几个模块抽到组件里, 提前把组件写到后面会插入到的位置, 然后用这种结构控制显示隐藏:这样挺好的其实, 如果这个项目的结构再简单一点我绝对会用组件方案的, 结果我发现我要传回调函数, 传4层干扰到3个很重要的类, 只是为了在合适的时机回调改变组件的状态, 我觉得很糟糕.而且, 如果后面会有…或者现在就有我没有察觉到的需求是增加不定数量个这种模块, 我把组件直接注册到这里用就算是写死了, 恐怕会不好改.需要这种操作的组件有三个, 我想起来学后端渲染的时候给前端发的html模板, 那…能不能把这些html转成字符串存到一个单独的js文件, 然后在需要的地方导入后appendChild呢? 这样对源代码改动最小, 不用改appendChild, 也让html文档那边更简洁一些.然后用这个工具函数把appendChild替换掉:这样性能不如之前好, 不过——事件绑定看起来没什么问题了.本来想用Document.createDocumentFragment()API的, 所以初版就写成这样了:很遗憾并不能直接使用innerHTMLDocumentFragment内写入DOM, 仍旧需要appendChild来完成, 所以完全没有必要创建DocumentFragment, 我认为这个API更加适合用于对频繁DOM操作进行优化, 比如用户点击按钮后就要插入100条tips, 那就更适合先使用这个API生成一个文档内容分段, 然后把成品分段加入DOM.这个初版和旧版也都是回流一次…因为文档片段存在于内存中, 并不在 DOM 树中, 所以将子元素插入到文档片段时不会引起页面回流(对元素位置和几何上的计算).
因此, 使用文档片段通常会带来更好的性能.完全可以把:这种会引起页面频繁回流的写法改成这样页面只会在fragmentappen免费云主机域名dChild后回流一次.以上就是关于“Vue中原生template标签失效怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: 原生js怎么实现弹动小球效果

这篇文章主要介绍了原生js怎么实现弹动小球效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇原生js怎么实现弹动小球效果文章都会有所收获,下面我们一起来看看吧。效果如下源码展示关于“原生j免费云主机域名s怎么实现弹动小球效果”这篇…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/11 13:34
下一篇 05/11 13:34

相关推荐