Mar*_*zus 6 vue.js ssr nuxt.js
有没有办法如何在nuxt js中编写自定义指令,这将适用于ssr和前端(甚至仅适用于ssr)?
我在以下文档中尝试过它:https: //nuxtjs.org/api/configuration-render#bundleRenderer
所以我添加了这段代码:
module.exports = {
render: {
bundleRenderer: {
directives: {
custom1: function (el, dir) {
// something ...
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
到nuxt.config.js
然后我在模板中使用它:
<component v-custom1></component>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,它只是抛出前端错误
[Vue警告]:无法解析指令:custom1
它甚至在服务器端似乎也没有工作.
谢谢你的建议.
Ait*_*rDB 22
如果您想在 Nuxt 中使用自定义指令,您可以执行以下操作:
plugins: ['~/plugins/directives.js']在您的新文件中添加您的自定义指令,如下所示:
import Vue from 'vue'
Vue.directive('focus', {
inserted: (el) => {
el.focus()
}
})
Run Code Online (Sandbox Code Playgroud)
Fle*_*ipp 13
.client.js您可以通过将扩展名添加到指令文件来使指令在客户端上运行。这适用于SSR渲染static。
// plugins/directive.client.js
import Vue from 'vue'
Vue.directive('log-inner-text', {
inserted: el => {
console.log(el.innerText)
}
})
Run Code Online (Sandbox Code Playgroud)
在您的nuxt.config.js文件中将其添加为插件,如下所示。
plugins: [
'~/plugins/directive.client.js'
]
Run Code Online (Sandbox Code Playgroud)
不要忘记将您的指令保存在插件文件夹中。
<div v-log-inner-text>Hello</div>
Run Code Online (Sandbox Code Playgroud)
控制台日志
> "Hello"
Run Code Online (Sandbox Code Playgroud)
我写了一篇中等文章,更深入地介绍了它的工作原理。它向您展示了如何创建一个指令,使元素在滚动时呈现动画:Nuxt - 创建静态和 SSR 站点的自定义指令
在 nuxt-edge 中进行了测试(其 nuxt 2.0 将于本月或下个月发布,但它相当稳定)。
nuxt.config.js
render: {
bundleRenderer: {
directives: {
cww: function (vnode, dir) {
const style = vnode.data.style || (vnode.data.style = {})
style.backgroundColor = '#ff0016'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
页面.vue
<div v-cww>X</div>
Run Code Online (Sandbox Code Playgroud)
从服务器生成的 html:
<div style="background-color:#ff0016;">X</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3387 次 |
| 最近记录: |