The*_*man 5 javascript node.js typescript
我正在编写一个使用Angular2和TypeScript作为前端,使用NodeJS作为后端的应用程序。我已经编写了一个JavaScript对象,希望在前端和后端之间共享。最优雅的方法是什么?
我最初的想法是为前端编写一个.d.ts,并在javascript文件中添加一个module.exports,因此后端可能需要('myobject')。
在此过程中,这将导致浏览器抛出异常,并在浏览器控制台中显示异常:'Uncaught ReferenceError:未定义模块'。
而且我不想用不必要的错误消息来污染控制台。那么还有另一种更优雅的方法吗?
我知道执行此操作的“最干净”方法是在两端编写模块化脚本并创建要共享的对象库(以便在单个位置定义共享对象)
前端:Typescript 或
使用 webpack 或 browserify 捆绑
后端:ES6(节点上带有 --harmony 标志)或 ES5
创建一个用 Typescript 编写的库,shared并创建导出的 Object 类
export default class MyObject{ ... }
Run Code Online (Sandbox Code Playgroud)
确保库已编译declaration: true(例如在 tsconfig 中):tsc将生成 js + 类型(声明)。
在库package.json的目录中shared,确保该条目typings设置为指向生成的MyObject.d.ts文件。如果有多个对象;创建一个index.ts文件,重新导出所有对象并typings指向index.d.ts
前端:由于您现在使用模块化 JS/TS,因此直接从 Typescript 导入对象
import MyObject from 'shared'
Run Code Online (Sandbox Code Playgroud)
Typescript 转译器会自动.d.ts从'stypings的条目中查找定义。sharedpackage.json
后端:简单require('shared')
注意:如果有多个共享对象,请勿使用默认导出shared:它们无法重新导出。
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |