微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在编写一个使用Angular2和TypeScript作为前端,使用NodeJS作为后端的应用程序.我已经编写了一个JavaScript对象,希望在前端和后端之间共享.最优雅的方法是什么?

我最初的想法是为前端编写一个.d.ts,并在javascript文件添加一个module.exports,因此后端可能需要(‘myobject’).

在此过程中,这将导致浏览器抛出异常,并在浏览器控制台中显示异常:“未捕获的ReferenceError:模块未定义”.

而且我不想用不必要的错误消息来污染控制台.那么还有另一种更优雅的方法吗?

解决方法:

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

设定

前端:打字稿与

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

使用webpack或browserify捆绑

后端:ES6(节点上带有–harmony标志)或ES5

图书馆

创建一个用Typescript编写的共享库,并创建导出的Object类

export default class MyObject{ ... }

确保使用以下声明编译该库:true(例如,在tsconfig中):tsc将生成js的类型(声明).

在共享库的package.json中,确保条目类型设置为指向生成的MyObject.d.ts文件.如果有多个对象;创建一个index.ts文件,该文件重新导出所有对象,并将键入的内容指向index.d.ts

用法

前端:由于您现在正在使用模块化JS / TS,因此直接从Typescript导入对象

import MyObject from 'shared'

打字稿翻译器将从共享的package.json的键入项中自动找到.d.ts定义.

后端:只需require(‘shared’)

注意:如果有多个共享库,请不要在共享库中使用认导出:无法重新导出它们.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐