小编kis*_*ssu的帖子

使用 Vuex 和路由器的 vue 3 服务器端渲染

我使用 Vue CLI 创建了一个 Vue3 应用程序,以使用 Vuex 和路由器创建我的应用程序。该应用程序运行良好。

注意:我使用 Vue3 https://blog.logrocket.com/using-vuex-4-with-vue-3/在 Vuex 中遵循了这个有用的文档

需求现在我想更改我的 Vue3 应用程序以支持服务器端渲染(即 SSR)。

我观看了这个关于使用 Vue3 创建 SSR 应用程序的精彩视频:https : //www.youtube.com/watch? v = XJfaAkvLXyU ,我可以像视频中一样创建和运行一个简单的应用程序。但是,当我尝试将它应用到我的主要 Vue3 应用程序时,我被卡住了。

我目前的症结是如何在服务器代码上指定路由器和 vuex。

我的代码

客户端入口文件(src/main.js)有以下内容

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';

createApp(App).use(store).use(router).mount('#app');
Run Code Online (Sandbox Code Playgroud)

服务器入口文件(src/main.server.js)目前有以下内容

import App from './App.vue';
export default App;
Run Code Online (Sandbox Code Playgroud)

在快速服务器文件 (src/server.js) 中,它当前具有

const path = require('path');
const express = require('express');
const { createSSRApp } = …
Run Code Online (Sandbox Code Playgroud)

router vue.js vuex vuejs3

10
推荐指数
2
解决办法
3685
查看次数

有没有办法观察 i18n 当前语言环境的变化?

使用 i18n 时,当语言/区域设置发生变化时,如何调用函数?
我应该使用 Vuex 还是vue-i18n有允许我这样做的方法?

internationalization vue.js vuejs2 vue-i18n

10
推荐指数
1
解决办法
1万
查看次数

如何在 Nuxt 3 中使用模板引用

在 Nuxt2 中,您可以使用模板 $refs访问<script>它们this.$refs

我想知道 Nuxt3 的等效项是什么。

我需要它来访问元素的内部文本。我不被允许使用querySelectorgetElementById等等。

这就是我们编写代码的方式。我可以提供 html 元素ref="fooBar",但我无法使用this.$refs.fooBar或 访问它this.$refs

<script setup lang="ts">
import { ref, computed } from 'vue';

const foo = ref('bar');

function fooBar() {
  //Do stuff
}
</script>

<template>
  //Html here
</template>
Run Code Online (Sandbox Code Playgroud)

vue.js nuxt.js vuejs3 nuxtjs3

10
推荐指数
1
解决办法
3万
查看次数

如何让我的 Nuxt 应用程序 (v3) 提供 .mjs.br (brotli) 文件而不是常规 .mjs 文件?(文本压缩)

我在 Google Cloud Run 上部署了一个简单的 Nuxt(版本 3)应用程序,并使用 Lighthouse 测试了性能。分数非常糟糕,但它提供的最有影响力的改进之一是启用文本压缩(gzip 或 brotli)。

我能够在 nuxt 配置中实现服务器输出.mjs.br文件:vite-plugin-compression

import viteCompression from "vite-plugin-compression";

export default defineNuxtConfig({
  vite: {
    plugins: [viteCompression({ algorithm: "brotliCompress" })],
  },
...
Run Code Online (Sandbox Code Playgroud)

尽管.mjs.br生成了文件,但.mjs默认情况下仍在提供文件。

如何让 Nuxt 提供 brotli 压缩文件?或者这还不可能吗?

nuxt.js nuxtjs3

10
推荐指数
1
解决办法
8025
查看次数

渲染 v-html 而不需要额外的包装标签?

在 vue 2 中v-html需要渲染一个额外的包装标签。但我正在尝试类似以下的事情。

<select v-model="coutnry">
 // here the options to be rendered.
</select>


<script>
...
data()}{
 return{
  countryTags:`<option value="BD">Bangladesh</option>`
 }
}
</script>
Run Code Online (Sandbox Code Playgroud)

因为,在这里我无法渲染任何额外的 html 标签,我累了<template v-html="countryTags">,但这不起作用。stackoverlflow 周围的另一个解决方案似乎有点令人困惑。正确的解决方案是什么?

vue.js vuejs2

9
推荐指数
1
解决办法
6093
查看次数

动态 API 调用在 Nuxt.js 静态模式与 SSR 模式下如何工作?

即使在阅读了多篇解释静态渲染和 SSR 渲染之间差异的文章之后,我仍然不明白动态 API 调用在这些不同模式下是如何工作的。

我知道 Nuxt 有fetchasyncData钩子,它们在静态生成期间仅调用一次,但是如果我在组件方法内使用动态 HTTP 请求(例如,通过 POST 请求提交表单时)会怎样?这在静态网站中也有效吗?

我正在创建一个在大多数页面上显示用户生成的内容的网站,因此每次访问其中一个页面时我都必须发出 GET 请求以保持内容最新。我可以使用静态站点来做到这一点还是必须使用 SSR/其他东西?我不想使用客户端渲染(SPA 模式),因为它很慢并且不利于 SEO。那么我最好的选择是什么?

hosting http web-deployment vue.js nuxt.js

9
推荐指数
2
解决办法
5793
查看次数

全局 Sass 导入和使用 - Nuxt 3 静态资产

我正在尝试从目录导入全局 Sass 样式表/assets,并使用在整个组件中定义的变量和混合等内容。我nuxt.config.ts目前的样子是这样的:

import { defineNuxtConfig } from "nuxt3";

export default defineNuxtConfig({
    css: ["@/assets/styles/main.sass"],
    styleResources: {
        sass: ["@/assets/styles/main.sass"],
    },
    build: {
        extractCSS: true,
        styleResources: {
            sass: "@/assets/styles/main.sass",
            hoistUseStatements: true,
        },
    },
    // buildModules: ["@nuxtjs/style-resources"], // This throws error
    vite: {
        css: {
            loaderOptions: {
                sass: {
                    additionalData: ` @import "@/assets/styles/main.sass"; `,
                },
            },
        },
    },
});
Run Code Online (Sandbox Code Playgroud)

当我现在尝试使用变量时,出现[plugin:vite:css] Undefined variable.错误。这曾经在 Nuxt 2 中工作得很好@nuxtjs/style-resources,但我不确定如何在 Nuxt 3 中工作。

但是,该样式表中的类和应用样式正在工作,只有变量、混合和映射不可访问。

有人可以帮忙吗?

vue.js nuxt.js vuejs3 vite nuxtjs3

9
推荐指数
1
解决办法
3万
查看次数

Nuxt3 + Pinia + VueUse -&gt; useStorage() 不起作用

设置:我使用 Nuxt3 + Pinia + VueUse。

目标: 我想通过 VueUse: 将 pinia 商店的状态保存到本地存储useStorage

问题: 由于某种原因,本地存储中没有创建任何项目。我觉得我在这里错过了一些东西。在组件中我可以useStorage很好地使用。

商店/piniaStoreVueUse.js

import { defineStore } from 'pinia'
import { useStorage } from '@vueuse/core'

export const usePiniaStoreVueUse = defineStore('piniaStoreUseVue', {
    state: () => {
        return { 
            state: useStorage('my-state', 'empty'),
        }
    },
    actions: {
        enrollState() {
            this.state = 'enroll';
        },
        emptyState() {
            this.state = 'empty'; 
        },
    },
    getters: {
    }
});
Run Code Online (Sandbox Code Playgroud)

组件/SampleComponentStatePiniaVueUse.vue

<script lang="ts" setup>
    import { usePiniaStoreVueUse } from '~/stores/piniaStoreVueUse'; …
Run Code Online (Sandbox Code Playgroud)

vuejs2 nuxt.js nuxtjs3 pinia vueuse

9
推荐指数
3
解决办法
1万
查看次数

如何在nuxt项目中传递动态图片url

我想将图像 url 传递给子组件,但图像未显示。

我试过v-attr, :attr,:src属性。

页面/index.vue

<ThumbNail img-url="assets/img/igsim_intro.png"/>
Run Code Online (Sandbox Code Playgroud)

组件/缩略图.vue

<!-- Failed to resolve directive: attr -->
<img v-attr="imgUrl" /> 

<!-- 404 Not found: http://localhost:3000/assets/img/pds_main.png -->
<img :src="imgUrl" />

<img :attr="{src: imgUrl}" /> 
Run Code Online (Sandbox Code Playgroud)
<script>
export default {
  name: "ThumbNail",
  props: {
    imgUrl: {
      type: String,
      default: ''
    }
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

我希望Thumbnail.vue将图像显示为传递的 url。

config vue.js nuxt.js

8
推荐指数
2
解决办法
1万
查看次数

Nuxt.js:如何在 Markdown 博客内容中包含本地图像?

我在 Nuxt.js 中创建了一个博客,我的文章使用 Markdown。在撰写第一篇文章时,我意识到我无法在assets文件夹中的 Markdown 文章中包含图像。仅当它是如下例所示的链接时才有效:

降价图像:

替代文本

如何从该位置在 Nuxt.js Markdown 中插入图像?assets/images/blog/trees.png

markdown vue.js nuxt.js

8
推荐指数
2
解决办法
4853
查看次数