egg的controller在渲染到页面上的时候是使用{{}}来渲染的,但是在使用vue的时候,data里的数据在页面上也是使用的{{}},这时页面上的vue渲染不出来 这时候vue失效,不渲染也不报错 微信图片_20180326131253.png 这个是在controller里的pt在页面时可以渲染的 微信图片_20180326131348.png
求大神解答,我怎么弄
egg的controller在渲染到页面上的时候是使用{{}}来渲染的
egg 渲染页面依赖的是模板引擎的渲染能力,其中默认是 nunjucks,参考:https://eggjs.org/zh-cn/core/view.html。
文中提及的问题重点在于后端(egg)和前端(vue)进行模块渲染时,占位符({{}})冲突。那么解决该问题的话:
1、可以从前(mustache)后端(nunjucks)分别对占位符进行配置,其中相关参数自行学习一下; 2、(显然方案 1 并不是最佳实践)我们尽量保持代码的规范和统一,占位符修改后整体编码风格会受到影响,因此还是建议适当的分离前后端的模板;(es5 下使用 vue 依然可以使用组件化的方式,因此在 html 中没有必要直接出现 vue 组件的视图模板)
@atian25 因为默认的vue在HTML中的语法的{{}},而nunjucks的语法也是双括号,页面优先选择了服务端的渲染机制,所以vue失效,所以才会出现冲突
@jiayin3204 我的问题就是,为什么它们会在同一个页面啊。。。 vue 的不是都写到组件的 template 里面,然后在编译期就已经 inline 为字符串了么。
难道你的都是写在首页 index.html 里面的 <template> </template> ?? 这样肯定不好啦。
匿了。。。 没代码空谈没意思,费劲。
我是不建议修改 vue 的 delimiters,在他这个项目中,vue 才是主要逻辑。
raw 上面别人不是教你了么,nunjucks 的 http://mozilla.github.io/nunjucks/templating.html#raw
自己看呗