小编asa*_*nas的帖子

Vuejs / Nuxtjs 中通过符号标识的动态路由

我正在使用 Nuxtjs 作为应用程序。有许多路线通往网站的不同页面/部分。

但是,对于一种特定类型的路线,我希望用符号来标识它。

例如,可以创建到用户个人资料页面的正常路由,如下所示:

www.mywebsite.com/user/用户名

但是,如果我希望我的路线如下所示:

www.mywebsite.com/@用户名

如何在 Nuxt 或 Vue 中设置类似的东西?

vue.js vue-router nuxt.js

5
推荐指数
0
解决办法
257
查看次数

如何使用 date-fns 猜测用户的时区?

我有一个要求,我需要在当地时区显示用户的时间。这需要使用 date-fns 来完成。

以下代码检查当前时间,然后根据时区将其转换为本地时间。

const { formatToTimeZone } = require('date-fns-timezone')

let date = new Date()
const format = 'D.M.YYYY HH:mm:ss [GMT]Z (z)'
const output = formatToTimeZone(date, format, { timeZone: 'Asia/Calcutta' })
Run Code Online (Sandbox Code Playgroud)

但是,我如何即时猜测用户的时区?

在 中moment.js,您可以使用moment.tz.guess(). 但是我如何在没有moment.js和使用的情况下做到这一点date-fns

https://runkit.com/embed/835tsn9a87so

更新:我将在 VueJS 应用程序中使用它。因此,如果有任何其他相关解决方案,也欢迎使用。谢谢。

javascript timezone date-fns

5
推荐指数
2
解决办法
9471
查看次数

Nuxt - 如何找到以前的路线?

我可以用来this.$router.go(-1)将用户重定向到之前的路线。但是,我无法理解如何在重定向之前获取有关先前路线的信息。

基本上,通过首先阅读前一条路由是什么,我想确保前一条路由来自同一个域,然后才重定向到它,否则做其他事情。

vue.js vuejs2 nuxt.js

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

解决Sequelize 在belongsToMany 关联中的独特约束

我在我的项目中使用 Sequelize。这是两个模型:

const User = db.define('user', {
  name: Sequelize.STRING,
  password: Sequelize.STRING
})
const Product = db.define('product', {
  name: Sequelize.STRING,
  price: Sequelize.INTEGER
})
Run Code Online (Sandbox Code Playgroud)

现在用户可以购买产品,我有如下关联设置:

Product.belongsToMany(User, {through: 'UserProducts'})
User.belongsToMany(Product, {through: 'UserProducts'})
Run Code Online (Sandbox Code Playgroud)

我还有这个带有附加列的 UserProducts 表。

const UserProducts = db.define('UserProducts', {
  status: Sequelize.STRING
})
Run Code Online (Sandbox Code Playgroud)

Sequelize 使用 userId 和 productId 的组合创建一个复合键,并且只允许一个具有 userId 和 productId 组合的记录。例如,userId 2 和 productId 14。

这对我来说是个问题,因为有时人们想要多次购买。我需要以下场景之一才能工作:

  1. 不要使用复合键,而是在 UserProducts 中使用一个全新的自动增量列作为键。

  2. 不是单独使用 userId 和 productId 制作密钥,而是允许我在密钥中再添加一列,例如 ,status以便唯一密钥是三者的组合。

我确实想使用关联,因为它们提供了许多强大的方法,但想要更改唯一键以这样一种方式工作,即我可以添加具有相同用户 ID 和产品 ID 组合的多行。

由于我的模型/数据库已经在运行,我将需要利用迁移来进行此更改。

对此的任何帮助表示高度赞赏。

database postgresql sequelize.js

5
推荐指数
2
解决办法
1960
查看次数

NativeScript Vue-基于用户登录状态的条件化

我正在使用NativeScript-Vue。

我有一些受保护的页面(仅限会员)。我将用户的登录数据保存在localstorage中。我有两个问题:

  1. 当用户打开应用程序时,我们应该在应用程序中的哪个位置编写代码以检索用户的登录数据。我想从本地存储中读取数据并将其填充到Vuex存储中。我知道如何从localstorage读取数据,但是我不知道应该在何时何地进行操作,以便用户可以首先登录。

  2. 有几个页面受到保护(仅限成员)。对于这些用户,如果他们已登录(基于vuex存储),我想向他们显示页面内容,但是如果他们未登录,我希望他们导航到登录页面。同样,我对于应该在何处编写此代码/条件感到困惑。

任何帮助表示赞赏。

javascript nativescript vuejs2 nativescript-vue

5
推荐指数
1
解决办法
260
查看次数

Google Text-toSpeech - 在前端获取音频文件

我有一个要求,需要使用 Google Text to Speech 将一些文本转换为音频。

我正在使用 Nodejs 将文本转换为音频文件,并希望将音频输出发送到前端。

NodeJS代码:

const client = new textToSpeech.TextToSpeechClient();
const request = {
  input: {text: 'Hello World'},
  // Select the language and SSML voice gender (optional)
  voice: {languageCode: 'en-US', ssmlGender: 'NEUTRAL'},
  // select the type of audio encoding
  audioConfig: {audioEncoding: 'MP3'},
};

const [response] = await client.synthesizeSpeech(request);
Run Code Online (Sandbox Code Playgroud)

response.audioContent包含音频数据,它是一个缓冲区对象,如下所示:

<Buffer ff f3 44 c4 00 00 00 03 48 00 00 00 00 ff 88 89 40 04 06 3d d1 38 20 e1 …
Run Code Online (Sandbox Code Playgroud)

javascript node.js arraybuffer google-text-to-speech vue.js

5
推荐指数
1
解决办法
2245
查看次数

NodeJS:根据短语从html文本中提取句子

我在数据库中存储了一些文本,如下所示:

let text = "<p>Some people live so much in the future they they lose touch with reality.</p><p>They don't just <strong>lose touch</strong> with reality, they get obsessed with the future.</p>"
Run Code Online (Sandbox Code Playgroud)

文本可以有许多段落和 HTML 标签。

现在,我还有一句话:

let phrase = 'lose touch'
Run Code Online (Sandbox Code Playgroud)

我想要做的是搜索phrasein text,并返回包含phraseinstrong标签的完整句子。

在上面的例子中,即使第一个段落也包含短语'lose touch',它应该返回第二个句子,因为在第二个句子中,该短语在strong标签内。结果将是:

They don't just <strong>lose touch</strong> with reality, they get obsessed with the future.
Run Code Online (Sandbox Code Playgroud)

在客户端,我可以用这个 HTML 文本创建一个 DOM 树,将它转换成一个数组并搜索数组中的每个项目,但在 NodeJS 中文档不可用,所以这基本上只是带有 HTML 标签的纯文本。我如何在这段文本中找到正确的句子?

javascript node.js

5
推荐指数
1
解决办法
177
查看次数

将自定义域映射到通配符子域

我正在创建一个使用通配符子域的 NextJS 项目。

我已经在 Vercel 上设置了通配符子域,因此现在每个通配符子域都指向我的主 NextJS 安装。在 NextJS 应用程序中,我正在读取子域名并相应地提供内容。

所以,假设我的通配符条目是*.example.com

现在,所有子域(例如roman.example.comgreek.example.com)都可以正确提供来自我的数据库的内容。

我面临的挑战是将自定义域映射到每个子域。

例如,如果我想myroman.com映射到roman.example.commygreek.com映射到greek.example.com,我无法让它工作。

举例来说,如果在myroman.comDNS 记录中,如果我添加指向 的 CNAME 记录roman.example.com,然后如果我访问myroman.com,它会显示 404 部署未找到错误。请注意,类似的myroman.com是客户的站点,我唯一可以要求客户的就是添加 DNS 记录以将其映射到子域。我无法控制他们的领域或类似的东西。

您会看到像 substack 这样的公司向其客户提供此类自定义域映射。

您能建议实现此目标的最佳方法是什么吗?我可以更改主机或其他任何东西来使这项工作正常进行。

wildcard-subdomain wildcard next.js

5
推荐指数
1
解决办法
1538
查看次数

NextJS:从数据库加载字体

我正在使用 NextJS 和 Tailwind CSS。

在我的应用程序中,用户可以选择包含不同配色方案以及预选字体列表的主题。他们可以为应用程序选择他们喜欢的字体。

这些只是 Google 字体。

我不确定根据从数据库收到的字体名称加载字体的最佳方法是什么。database我可以从in加载数据serverSideProps,但是如何在渲染之前加载字体,以免屏幕闪烁。你能帮忙吗?

更新

到目前为止,我已经完成了以下操作:

  1. 在 中tailwind.config.js,我使用不同的可用字体扩展了主题。

    主题:{ fontFamily:{ inter:['Inter','sans-serif'],cal:[“Cal Sans”,“Inter”,“sans-serif”],arima:['Arima Madurai','cursive' ], opensans:['打开 Sans', 'sans-serif'], } }

  2. 我为每种字体创建了一个样式表,该样式表存储在以下位置的公共文件夹中:

    /fonts/opensans/stylesheet.css

    /fonts/cal/stylesheet.css

    /fonts/inter/stylesheet.css

    /fonts/arima/stylesheet.css

这些样式表包含字体。下面是一个例子:

@font-face {
  font-family: "Cal Sans";
  src: url("CalSans-SemiBold.woff2") format("woff2"),
    url("CalSans-SemiBold.woff") format("woff");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
Run Code Online (Sandbox Code Playgroud)
  1. 在页面上(例如pages/index.js),我使用加载用户的首选项serverSideProps并将其传递给Layout组件。该布局组件具有head通过创建的next/head. 我们将从服务器接收到的 font 属性称为themeFont

假设用户的偏好是Cal Sans,并且用户的偏好作为 value 存储在数据库中cal。所以,themeFont价值将为 …

javascript reactjs next.js tailwind-css

5
推荐指数
1
解决办法
2444
查看次数

React Hook Forms - 添加动态字段行

我正在使用 React Hook Form 库。https://react-hook-form.com

如果是像学生姓名和学生年龄这样的简单表格,那么申请就非常简单。

const { register, handleSubmit, formState: { errors } } = useForm();
Run Code Online (Sandbox Code Playgroud)

我只是创建这两个输入字段并注册它们。

               <div className="w-full flex flex-col mt-4">
                  <label>Name</label>
                  <input
                    type="text"
                    placeholder="Enter Name" {...register("name")}
                  />

                </div>
                <div className="w-full flex flex-col mt-4">
                  <label>Age</label>
                  <input
                    type="text"
                    placeholder="Enter Age" {...register("age")}
                  />

                </div>
                <div>
                  <button onClick={handleSubmit(submitData)}>
                    Update
                  </button>
                </div>
Run Code Online (Sandbox Code Playgroud)

SubmitData函数将获取formData可以使用的数据。将handleSubmit注册的字段绑定到formData

const submitData = async formData => {
  console.log(formData)
}
Run Code Online (Sandbox Code Playgroud)

formData如下所示:

{"name":"test", "age":"27"}
Run Code Online (Sandbox Code Playgroud)

我的要求是通过允许我添加许多学生来使该表单动态化。我应该能够使用名为“添加学生”的按钮重复一组这些字段。每次我添加新学生时,都应该在这两个字段中创建一个新行,我可以在其中添加新学生姓名。最后,输出formData应该看起来像一个学生数组:

[{"name":"test1", "age":27},{"name":"test2", "age":28},{"name":"test3", "age":29} ]
Run Code Online (Sandbox Code Playgroud)

我可以创建 …

reactjs react-hooks react-hook-form

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