使用 Nuxt Site 作为模板
Using Nuxt Site as a template
我开始使用 nuxt 和 vue。我想使用 vue 创建一个简单的站点,然后使用 :
将其转换为静态站点
nuxt generate
我已经能够使用 nuxt 和 vuetify 做到这一点(你可以在 https://github.com/kc1/nuxt4 看到这个)。
有没有办法使用这个 nuxt 项目作为模板并使用文件执行 'find and replace' 以生成个性化网站?
举个例子。工具栏组件是:
<template>
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn>
</v-toolbar-items>
</v-toolbar>
</template>
有没有办法替换:
Title - > My project
Link One -> Home
Link Two -> About
Link Three -> Contact
是在将其生成为静态站点之前还是之后?
编辑:
在 nuxt 2.34 的 https://nuxtjs.org/guide/vuex-store 页面之后,在 /store/store.js 我放置了:
export const state = () => ({
'toolbarActions' : [ 'My project', 'Home', 'About', 'Contact' ]
})
我仍然得到:
ERROR [Vue warn]: data functions should return an object: 20:59:31
https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function
found in
---> <Menu> at components/menu.vue
<Default> at layouts/default.vue
<Root>
ERROR [Vue warn]: Error in render: "TypeError: Cannot use 'in' operator to search for 'toolbarActions' in undefined" 20:59:31
found in
---> <Menu> at components/menu.vue
<Default> at layouts/default.vue
<Root>
我该如何解决这个问题?
编辑 2:
<template>
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions" :key="action">{{action}}</v-btn>
<!-- <v-btn flat v-for="action in toolbarActions">{{action}}</v-btn> -->
<!-- <v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn> -->
</v-toolbar-items>
</v-toolbar>
</template>
// 从'~/store/store.js'导入toolbarActions
export default {
computed: {
toolbarActions() {
return this.$store.getters.loadedPosts
.....
现在我看到了:
阅读有关 ENV 变量的信息。
此外,我建议您创建带有值的 js 文件,在其中添加导出并在 nuxt 组件中使用此文件变量。
另一种变体可能是使用 Vuex 商店。你可以在那里创建例如模块 mainMeny 并在那里定义链接、标题和 url 的数量。
使用 Vuex 来完成。
在存储中创建一个文件:/store/store.js
在那里。
const store = new Vuex.Store({
state: {
toolbarActions : [ 'My project', 'Home', 'About', 'Contact' ]
}
})
在你的组件中
<template>
...
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions">{{action}}</v-btn>
</v-toolbar-items>
...
</template>
export default {
computed: {
toolbarActions() {
return this.$store.getters.loadedPosts
}
}
}
这将使您深入了解 Vuex 的工作原理。
已编辑
改用计算的 属性。让我知道。
已编辑 2
new Vue({
el: '#app',
computed: {
toolbarActions: function() {
return [ 'My project', 'Home', 'About', 'Contact' ]
}
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/3.0.1/vuex.js"></script>-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vuetify/1.3.15/vuetify.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vuetify/1.3.15/vuetify.css" />
<div id="app">
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions" :key="action">{{action}}</v-btn>
<!-- <v-btn flat v-for="action in toolbarActions">{{action}}</v-btn> -->
<!-- <v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn> -->
</v-toolbar-items>
</v-toolbar>
</div>
P.D.: <v-toolbar-items class="hidden-sm-and-down">
隐藏了小型设备中的按钮。
点击 运行 片段后,点击整页以查看它是否有效。
我开始使用 nuxt 和 vue。我想使用 vue 创建一个简单的站点,然后使用 :
将其转换为静态站点nuxt generate
我已经能够使用 nuxt 和 vuetify 做到这一点(你可以在 https://github.com/kc1/nuxt4 看到这个)。
有没有办法使用这个 nuxt 项目作为模板并使用文件执行 'find and replace' 以生成个性化网站?
举个例子。工具栏组件是:
<template>
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn>
</v-toolbar-items>
</v-toolbar>
</template>
有没有办法替换:
Title - > My project
Link One -> Home
Link Two -> About
Link Three -> Contact
是在将其生成为静态站点之前还是之后?
编辑:
在 nuxt 2.34 的 https://nuxtjs.org/guide/vuex-store 页面之后,在 /store/store.js 我放置了:
export const state = () => ({
'toolbarActions' : [ 'My project', 'Home', 'About', 'Contact' ]
})
我仍然得到:
ERROR [Vue warn]: data functions should return an object: 20:59:31
https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function
found in
---> <Menu> at components/menu.vue
<Default> at layouts/default.vue
<Root>
ERROR [Vue warn]: Error in render: "TypeError: Cannot use 'in' operator to search for 'toolbarActions' in undefined" 20:59:31
found in
---> <Menu> at components/menu.vue
<Default> at layouts/default.vue
<Root>
我该如何解决这个问题?
编辑 2:
<template>
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions" :key="action">{{action}}</v-btn>
<!-- <v-btn flat v-for="action in toolbarActions">{{action}}</v-btn> -->
<!-- <v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn> -->
</v-toolbar-items>
</v-toolbar>
</template>
// 从'~/store/store.js'导入toolbarActions
export default {
computed: {
toolbarActions() {
return this.$store.getters.loadedPosts
.....
现在我看到了:
阅读有关 ENV 变量的信息。
此外,我建议您创建带有值的 js 文件,在其中添加导出并在 nuxt 组件中使用此文件变量。
另一种变体可能是使用 Vuex 商店。你可以在那里创建例如模块 mainMeny 并在那里定义链接、标题和 url 的数量。
使用 Vuex 来完成。
在存储中创建一个文件:/store/store.js
在那里。
const store = new Vuex.Store({
state: {
toolbarActions : [ 'My project', 'Home', 'About', 'Contact' ]
}
})
在你的组件中
<template>
...
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions">{{action}}</v-btn>
</v-toolbar-items>
...
</template>
export default {
computed: {
toolbarActions() {
return this.$store.getters.loadedPosts
}
}
}
这将使您深入了解 Vuex 的工作原理。
已编辑
改用计算的 属性。让我知道。
已编辑 2
new Vue({
el: '#app',
computed: {
toolbarActions: function() {
return [ 'My project', 'Home', 'About', 'Contact' ]
}
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/3.0.1/vuex.js"></script>-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vuetify/1.3.15/vuetify.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vuetify/1.3.15/vuetify.css" />
<div id="app">
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions" :key="action">{{action}}</v-btn>
<!-- <v-btn flat v-for="action in toolbarActions">{{action}}</v-btn> -->
<!-- <v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn> -->
</v-toolbar-items>
</v-toolbar>
</div>
P.D.: <v-toolbar-items class="hidden-sm-and-down">
隐藏了小型设备中的按钮。
点击 运行 片段后,点击整页以查看它是否有效。