小编Que*_*n3r的帖子

tailwind 全局使用本地文件中的字体

目前我在我的风格标签中这样做

@import url('https://fonts.googleapis.com/css?family=Roboto&display=swap');

* {
  font-family: 'Roboto', sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

但我下载了 Roboto 字体,想知道如何配置 Tailwind 以对所有元素全局使用这些文件和字体。

边注:

我正在使用 Vuejs 并按照有关如何从此处为 Vue 设置 Tailwind 的指南进行操作

https://www.youtube.com/watch?v=xJcvpuELcZo

html javascript css tailwind-css

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

为 NestJs REST API 创建 DTO、BO 和 DAO

我想开始使用 NestJs 创建 REST API,但我不确定如何设置可扩展的层通信对象。

因此,从有关如何开始的文档中,我提出了UsersController处理 HTTP 请求和响应的方法,UsersService处理控制器和数据库访问器之间的逻辑以及UsersRepository负责数据库管理的方法。

我使用NestJs提供的TypeORM 包,所以我的数据库模型是

@Entity('User')
export class UserEntity extends BaseEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ unique: true })
  username: string;

  @Column()
  passwordHash: string;

  @Column()
  passwordSalt: string;
}
Run Code Online (Sandbox Code Playgroud)

但是您可能知道,这个模型必须映射到其他模型,反之亦然,因为您不想将密码信息发送回客户端。我将尝试用一个简单的例子来描述我的 API 流程:


控制器

首先,我有一个用于GET /users/:id和的控制器端点POST /users

  @Get(':id')
  findById(@Param() findByIdParamsDTO: FindByIdParamsDTO): Promise<UserDTO> {
    // find user by id and return it
  }

  @Post()
  create(@Body() createUserBodyDTO: CreateUserBodyDTO): Promise<UserDTO> {
    // create a …
Run Code Online (Sandbox Code Playgroud)

onion-architecture typescript clean-architecture nestjs

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

无法再将配置部分传递给 IServiceCollection.Configure&lt;T&gt;()

我有一个控制台应用程序,想要通过将配置从appsettings.json文件映射到自定义类来配置我的选项。到目前为止我安装的软件包

  • Microsoft.Extensions.Configuration v5.0.0
  • Microsoft.Extensions.DependencyInjection v5.0.1
  • Microsoft.Extensions.Options v5.0.0

给定这个样本类

public class MyOptions
{
    public string Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和这个配置

{
    "myOptions": {
        "foo": "bar"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试用这段代码映射它

public void ConfigureOptions(IServiceCollection serviceCollection)
{
    IServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
    IConfiguration configuration = serviceProvider.GetService<IConfiguration>();
    IConfigurationSection myConfigurationSection = configuration.GetSection("MyOptions");
    serviceCollection.Configure<MyOptions>(myConfigurationSection);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是无效的语法。无法Configure再将该部分传递给该方法。

参数类型“Microsoft.Extensions.Configuration.IConfigurationSection”不可分配给参数类型“System.Action<MyApp.MyOptions>”

这让我很困惑,因为文档中有一个类似的例子

在此输入图像描述

有人知道我是否遗漏了什么吗?

c# .net-core

12
推荐指数
1
解决办法
2899
查看次数

如何期望并传入枚举作为组件属性?

我使用 TypeScript 创建了一个 Vue 3 应用程序。在 src 文件夹内我创建了一个新的枚举 color.ts

enum Color {
    Red,
    Blue
}

export default Color;
Run Code Online (Sandbox Code Playgroud)

我创建了一个组件 ColorDisplay.vue

<template>
  <div>
    {{ color }}
  </div>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import Color from "../color";

export default defineComponent({
  props: {
      color: {
          type: Color,
          required: true
      }
  }
});
</script>
Run Code Online (Sandbox Code Playgroud)

并将 Home.vue 文件修改为

<template>
  <div>
    <color-display :color="Color.Red" />
    <color-display :color="Color.Blue" />
  </div>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import ColorDisplay from "../components/ColorDisplay.vue";
import …
Run Code Online (Sandbox Code Playgroud)

javascript typescript vue.js vuejs3

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

查询构建器中的调用函数

我有一个位置实体保存坐标。基于半径,我想获取范围内的所有位置。

我创建了一个函数(后端代码/Nestjs 逻辑,而不是数据库)来计算两个位置之间的距离。如果计算出的距离小于或等于半径,我想选择这个位置。

我当前使用此距离计算功能的存储库实现:

// ...
import { distanceFromCoordinatesInKilometers } from '../shared/calculations/distanceFromCoordinatesInKilometers';

@EntityRepository(Location)
export class LocationsRepository extends Repository<Location> {
    public getLocations({ /* ... */ latitude, longitude, radiusInKilometers }: GetLocationsDTO): Promise<Location[]> {
        const query: SelectQueryBuilder<Location> = this.createQueryBuilder('location');

        // ....

        if(latitude && longitude && radiusInKilometers) {
             query.andWhere("distanceFromCoordinatesInKilometers(location.latitude, location.longitude, :latitude, :longitude) <= :radiusInKilometers", { 
                 latitude,
                 longitude,
                 radiusInKilometers, 
            });
        }

        return query.getMany();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面显示的示例不起作用。我收到这个错误

QueryFailedError: 函数 distanceFromCoordinatesInKilometers(double precision, double precision, unknown, unknown) 不存在

:函数添加 a时出现此错误

参数中不支持函数参数。请检查“距离”参数。

我将如何distanceFromCoordinatesInKilometers在该查询中调用我的后端代码函数?我可以传入变量但不能传入函数? …

typeorm

11
推荐指数
1
解决办法
2159
查看次数

如何在不需要 npm 的情况下设置语义发布?

我有一个 C# 项目,想为其添加语义版本控制。因此,每当我推送到main分支时,我想创建一个新版本并根据提交类型自动生成新版本号。我认为语义释放很好地完成了这项工作,因为我已经将commitlinthusky一起使用。

\n

对于复制:

\n\n

\n
name: Release\n\non:\n  push:\n    branches:\n      - `main`\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n\n      - name: Setup Node\n        uses: actions/setup-node@v2\n        with:\n          node-version: 14.x\n\n      - name: Install dependencies\n …
Run Code Online (Sandbox Code Playgroud)

c# git npm semantic-versioning semantic-release

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

express-validator 两次返回验证错误

我想使用 Express-Validator 验证请求对象。假设我有两个路由,一个GET /users/:id (fetchUserById) 和POST /users (createUser) 路由

this.router = express.Router();
this.router.route('/').post(this.userRequestValidator.createUser, this.userController.createUser);
this.router.route('/:id').get(this.userRequestValidator.fetchUserById, this.userController.fetchUserById);
Run Code Online (Sandbox Code Playgroud)

如您所见,我在调用控制器逻辑之前调用了验证中间件。首先,我创建了一个基本验证器来处理验证错误并在出现问题时返回 HTTP 400。

export abstract class RequestValidator {
    protected validate = async (request: Request, response: Response, next: NextFunction): Promise<void> => {
        const errors: Result<ValidationError> = validationResult(request);

        if (!errors.isEmpty()) {
            return res.status(422).json({ errors: errors.array() });
        } else {
            next();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

我的验证器函数userRequestValidator.createUseruserRequestValidator.fetchUserById只需要扩展 RequestValidator 并实现验证

export class UserRequestValidator extends RequestValidator {
    public createUser = [
        body('username')
            .isString()
            .exists(),
        body('password') …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express typescript express-validator

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

监听游戏手柄连接和输入

我想为我的 Web 应用程序提供游戏手柄支持。这个应用程序是一个套接字客户端(使用 socket.io),它也应该能够处理游戏手柄输入。

因此,当通过 USB 或蓝牙插入游戏手柄时,我想触发一个事件,输入也是如此。我希望Gamepad API能够解决它。不幸的是它没有。

我创建了这个例子

$(document).ready(() => {
  window.addEventListener("gamepadconnected", e => {
    console.log("connected gamepad");
  });

  window.addEventListener("gamepaddisconnected", e => {
    console.log("disconnected gamepad");
  });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我插入了我的 XBox360 控制器,但不幸的是没有触发任何事件。我错过了什么吗?

我在 Manjaro Linux(64 位)上使用 Chrome 版本 76.0.3809.132(官方版本)

navigator.getGamepads()在控制台中运行时,我得到了这个结果GamepadList {0: null, 1: null, 2: null, 3: null, length: 4}

顺便说一句。当然,我的控制器正在处理其他应用程序,例如游戏:)


更新

我安装了 Firefox 68.0.1(64 位)并且它工作了……但是 Chromium 似乎在挣扎

javascript gamepad-api

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

TypeORM - 获取用户时从不从数据库返回密码

我使用带有 TypeORM 的 NestJs 创建了一个 REST API。基本上这是我的用户实体

@Entity('User')
export class User extends BaseEntity {
  @PrimaryGeneratedColumn()
  public id: number;

  @Column({ unique: true })
  public username: string;

  public passwordHash: string;
}
Run Code Online (Sandbox Code Playgroud)

当从数据库中获取用户时,敏感的密码信息也会被返回。但我只需要登录过程的密码字段。因此,在调用登录服务时,我将数据库用户的密码哈希值与客户端提供的密码进行比较。我永远不想将密码信息返回给客户端。

由于您可以想象从数据库中获取用户的情况经常发生,因此您必须经常从用户对象中删除密码信息。

假设您有一个组实体并且它们之间存在关系。在获取与组相关的用户时,您还必须注意组域中的敏感数据。

也许一些用户深深地嵌套在一个大 SQL 查询语句返回的对象中。有没有办法可以“隐藏”某些字段?打电话时,this.usersRepository.find()我会得到一个用户列表,每个用户都有一个id和一个username字段,但没有一个passwordHash字段。这会让事情变得更容易,因为我只需要在我的signIn流中获取哈希字段。

javascript node.js typescript typeorm nestjs

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

如何使用 Tailwind 修改 svg 图标颜色

我正在使用 TailwindCSS 并想更改 svg 的颜色。如果没有 Tailwind,这里之前已经问过这个问题,对于 2020 年,应该是一个很好的答案,但 Tailwind 不支持这些过滤器。文档中有一个关于如何使用 svg 图标的指南,但本教程没有文件,只有纯文本路径。

我下载了 svg 文件并将 svg 的路径分配给图像的src标签。以下示例显示了我的问题,我希望图标的背景为红色,图标的颜色为蓝色。不幸的是,我无法更改图标颜色。

<link href="https://unpkg.com/tailwindcss@1.8.10/dist/tailwind.min.css" rel="stylesheet" />

<!-- taken from here https://www.iconfinder.com/icons/765208/media_twitter_social_icon -->
<img class="fill-current bg-red-500 text-blue-500" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaGVpZ2h0PSI2MHB4IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2MCA2MCIgd2lkdGg9IjYwcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c2tldGNoPSJodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2gvbnMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48dGl0bGUvPjxkZXNjLz48ZGVmcy8+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIj48ZyBpZD0ic2xpY2UiLz48ZyBmaWxsPSIjMDAwMDAwIiBpZD0idHdpdHRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMuMDAwMDAwLCAxNi4wMDAwMDApIj48cGF0aCBkPSJNMjguMDUyMTM4NSwyLjQzNjY5NDI3IEMyNi44NDMxODQ2LDEuMDYyMjAxNSAyNS4xMjA1Mzg1LDAuMTg2NDY0MTA1IDIzLjIxNDA2MTUsMC4xNTQ3MzEwMjggQzE5LjU1MzYsMC4wOTM4MDMwOTA1IDE2LjU4NTY1MzgsMy4xODY5MjMzOSAxNi41ODU2NTM4LDcuMDYzMTE2MDQgQzE2LjU4NTY1MzgsNy42MTMyNDExOCAxNi42NDQyOTIzLDguMTQ5NjkzMzcgMTYuNzU3MzY5Miw4LjY2NDY3MzE2IEMxMS4yNDg1ODQ2LDguMzA3MzUyNTcgNi4zNjQ0NjkyMyw1LjQzODc3MDU5IDMuMDk1NDE1MzgsMS4xMTQ3MjE4IEMyLjUyNDg2MTU0LDIuMTUwODYxNyAyLjE5NzkwNzY5LDMuMzYxODgyNzEgMi4xOTc5MDc2OSw0LjY1OTE1MDM3IEMyLjE5NzkwNzY5LDcuMTE0OTg4NDQgMy4zNjgwOTIzMSw5LjI5NDUyNzI0IDUuMTQ2NjMwNzcsMTAuNTgxNDE3NCBDNC4wNjAxMjMwOCwxMC41MzM0NDk5IDMuMDM4MDY5MjMsMTAuMjA0NTM3OCAyLjE0NDQzODQ2LDkuNjY0OTUyMDMgQzIuMTQzNzkyMzEsOS42OTQ0NDQ5NyAyLjE0Mzc5MjMxLDkuNzIzOTQ0OTQgMi4xNDM3OTIzMSw5Ljc1Mzk2MjQ1IEMyLjE0Mzc5MjMxLDEzLjE4MzU0OTcgNC40Mjg1OTIzMSwxNi4wNjA3MDc2IDcuNDYwODMwNzcsMTYuNzMwOTM4MyBDNi45MDQ2NTM4NSwxNi44ODg1MzggNi4zMTkwNzY5MiwxNi45NzEwMTYzIDUuNzE0NiwxNi45NjcwMDggQzUuMjg3NDkyMzEsMTYuOTY0MTc1OCA0Ljg3MjE3NjkyLDE2LjkxNjgxMTggNC40Njc1MjMwOCwxNi44MzE3NjggQzUuMzEwOTE1MzgsMTkuNjQ0Mzc3NyA3Ljc1ODcwNzY5LDIxLjY5Njc2NjMgMTAuNjU5MjkyMywyMS43NjQ2MjggQzguMzkwODA3NjksMjMuNjQ3Njk2MyA1LjUzMjg2OTIzLDI0Ljc2OTE5MzMgMi40MjcyOTIzMSwyNC43NjI3ODcgQzEuODkyMjc2OTIsMjQuNzYxNjgzMyAxLjM2NDY5MjMxLDI0LjcyNzExMiAwLjg0NjE1Mzg0NiwyNC42NjA1OTk2IEMzLjc3OTUzMDc3LDI2LjY3MzMxMzkgNy4yNjM1OTIzMSwyNy44NDUxNzExIDExLjAwNjc2MTUsMjcuODQ2MTUzMSBDMjMuMTk4NTUzOCwyNy44NDkzNTE4IDI5Ljg2NTczMDgsMTcuMjM5NTEwOSAyOS44NjU3MzA4LDguMDM2NzY4NjggQzI5Ljg2NTczMDgsNy43MzQ4MzYzMiAyOS44NTkxMDc3LDcuNDM0NTE5MTIgMjkuODQ2NTA3Nyw3LjEzNTY1MTk1IEMzMS4xNDE1NjE1LDYuMTcwNjY2NDUgMzIuMjY1MjIzMSw0Ljk2MDc4OTE1IDMzLjE1Mzg0NjIsMy41NzkyMTkwMSBDMzEuOTY1MjQ2Miw0LjExNTAxNjE1IDMwLjY4NzYzODUsNC40NzA4Njg2MyAyOS4zNDcwMzA4LDQuNjIwMTM3ODkgQzMwLjcxNTQyMzEsMy43Nzc5NjUxOCAzMS43NjY1NTM4LDIuNDMwMDk2MDcgMzIuMjYxMzQ2MiwwLjgxMzc1ODQwNCBDMzAuOTgwNTA3NywxLjU5MDQ5MjI5IDI5LjU2MjAzODUsMi4xNDc1MTI4NiAyOC4wNTIxMzg1LDIuNDM2Njk0MjcgWiIvPjwvZz48L2c+PC9zdmc+">
Run Code Online (Sandbox Code Playgroud)

下载 svg 图标并通过链接资产路径直接使用它们时,正确的工作流程是什么?我想要实现的就是这样的

<a href="https://twitter.com" target="_blank">
  <img src="pathToSvgInAssetsFolder" />
</a>
Run Code Online (Sandbox Code Playgroud)

并将图标颜色设置为自定义 Tailwind 颜色,例如red-500。因此,每当我想更改图标颜色时,我都可以简单地修改颜色类。

有人知道怎么做吗?

html css tailwind-css

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