gpt4 book ai didi

javascript - 在 Typescript 前端和 NodeJs 后端之间共享 js 对象的最佳方式

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:19 24 4
gpt4 key购买 nike

我正在编写一个应用程序,它使用 Angular2,Typescript 作为前端,NodeJS 作为后端。我写了一个 javascript 对象,希望在前端和后端之间共享。执行此操作最优雅的方法是什么?

我最初的想法是为前端写一个.d.ts,并在javascript文件中添加一个module.exports,这样后端就可以require('myobject')。

虽然这有效,但这会导致浏览器抛出并在浏览器控制台中显示异常:'Uncaught ReferenceError: module is not defined'。

而且我不想让不必要的错误消息污染我的控制台。那么有没有另一种更优雅的方法呢?

最佳答案

我所知道的“最干净”的方法是在两端编写模块化脚本并创建一个要共享的对象库(以便在单个位置定义共享对象)

设置

前端:带有任一的 typescript

  • 目标 ES6,模块:commonjs + Babel(需要 Typescript 1.7)
  • 或目标 ES5,模块:commonjs

使用 webpack 或 browserify 捆绑

后端:ES6( Node 上带有 --harmony 标志)或 ES5

图书馆

创建一个库,比如 shared,用 Typescript 编写并创建导出的对象类

export default class MyObject{ ... }

确保库是用 declaration: true 编译的(例如在 tsconfig 中):tsc 将生成 js + 类型(声明)。

shared 库的 package.json 中,确保条目 typings 设置为指向生成的 MyObject .d.ts 文件。如果有多个对象;创建一个 index.ts 文件,重新导出所有对象并将 typings 指向 index.d.ts

用法

前端:因为你现在使用的是模块化 JS/TS,所以直接从 Typescript 导入你的对象

import MyObject from 'shared'

typescript 转译器会自动从 sharedpackage.json 的 typings 条目中找到 .d.ts 定义

后端:简单地 require('shared')

注意:如果有多个共享对象,不要在shared中使用默认导出:它们不能被重新导出。

关于javascript - 在 Typescript 前端和 NodeJs 后端之间共享 js 对象的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com