小编Ste*_*kha的帖子

在客户端和服务器之间共享类型

我正在处理一个带有 Node.js、Express.js 和 TypeScript 后端(REST API)和一个 React、Redux 和 TypeScript 前端的项目。

在后端,我创建了一些类型,例如:

模型/产品.ts

export type Product = {
    title: string
    description: string
    price: number
}
Run Code Online (Sandbox Code Playgroud)

因此 REST API 正在发送如下响应:

{
  "data": [
     {"title": "Shoe", "Description": "This is a shoe.", "price": 20},
     {...}
   ] // inside here all the Products[]
}
Run Code Online (Sandbox Code Playgroud)

在客户端上,我想将data转换为类型Product数组。但是由于前端和后端是不同的代码库并且是分开的,我仍然想利用前端使用类型的优势。但我想在不重复代码的情况下实现这一点。所以我不想在修改或添加模型时更新 2 个地方。

有人知道在客户端和服务器之间共享类型的最佳方式是什么吗?

我正在考虑在后端创建一个客户端可以访问的端点,然后将所有模型写入单个文件中,例如models.ts在客户端上。所以我想我需要遍历后端 /models/ 中的每个文件,然后将其解析为一个新文件,该文件在客户端上写入为models.ts。但这真的是一个好方法吗?有人知道实现这种结构的更好方法吗?

client model typescript server

6
推荐指数
2
解决办法
1964
查看次数

由于绑定安装而无法在Dockerfile和docker-compose中找到节点模块

所以我有这个NodeJS Express应用程序。这是代码的工作原理:

Docker文件

FROM node:10.16-alpine
WORKDIR /app
COPY . /app
RUN npm install
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: "3.7"

services:
  node-express:
    build: .
    ports: 
      - 80:3000
Run Code Online (Sandbox Code Playgroud)

但是对于这个程序,我想查看实时代码更改。因此,我知道可以在其中使用Bind Mounts,但是一旦我添加了卷,就这样:

docker-compose.yml

version: "3.7"

services:
  node-express:
    build: .
    volumes: 
      - .:/app
    ports: 
      - 80:3000
Run Code Online (Sandbox Code Playgroud)

看来node_modules不再位于“ app”目录中。如何解决此问题?我已经为此工作了四个小时,但仍然找不到错误!

错误

HijackManiac:webserver hijackmaniac$ docker-compose up
Creating network "webserver_default" with the default driver
Building node-express
Step 1/5 : FROM node:10.16-alpine
 ---> a298c79121d9
Step 2/5 : WORKDIR /app
 ---> Running in 9b99df0f54ba
Removing intermediate container 9b99df0f54ba
 ---> 48f9b606b32d
Step …
Run Code Online (Sandbox Code Playgroud)

javascript node-modules docker docker-compose

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

为什么 Pod 依赖管理器没有检测到安装所需的模块?

所以这个问题是我上一个问题的后续: 如何从共享组件文件夹导入不同的应用程序?反应 / 反应原生

所以我创建了我自己的npm 模块,我将所有组件都存储在其中。这些组件可以被任意数量的应用程序使用。因为我将使这些组件高度可重用。

但我仍然偶然发现了一个问题。

我创建了一个使用这个库的加载组件:@react-native-community/masked-view。这个库需要在 /ios/Podfile 中安装一个依赖项。首先,我在一个 react-native 项目中创建了这个组件。

yarn add @react-native-community/masked-view
..
success Saved 1 new dependency.

cd ios/
pod install
..
Installing RNCMaskedView (0.1.6)
Pod installation complete! There are 33 dependencies from the Podfile and 31 total pods installed.
Run Code Online (Sandbox Code Playgroud)

'

然后我运行了我的代码,加载组件工作。现在我想将它添加到包含我所有组件的 NPM 模块(同样是我自己创建的)。

所以我进入 /my-awesome-99-components/ ,它有自己的 package.json 因为它是一个模块,我将在我正在处理的每个项目中导入它。

在 /my-awesome-99-components/

yarn add react react-native @react-native-community/masked-view
..
success Saved 1 new dependency.

// Created Loading.js - this is the loading …
Run Code Online (Sandbox Code Playgroud)

javascript module package reactjs react-native

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