转译打字稿以在浏览器中使用
Transpile typescript for use in browser
本文关键字:浏览器 更新时间:2023-09-26
我正在尝试用 Typescript 编写我的前端代码,并希望导出我的浏览器可以加载的代码 <script src="..."></script>
.
我是通过浏览器化和 tsify 的方式这样做的。我的麻烦是在我的代码上无法访问全局命名空间。当然,在 <script>
标签中加载脚本将执行它,但是如果我打算像可以在内联 <script>
s 或类似函数库一样加载它怎么办?
更新
一个例子是
索引.ts
function foo(): void {
console.log("bar");
}
使用以下 conf 进行编译会生成以下 JavaScript
tsconfig.json
{
"compilerOptions": {
"module": "UMD",
"target": "es5",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true
}
}
索引.js
function foo() {
console.log("bar");
}
这很好。但是,如果 index.js 导入一些东西,例如我的 notification
函数,那么我得到这个
(function (factory) {
if (typeof module === 'object' && typeof module.exports === 'object') {
var v = factory(require, exports); if (v !== undefined) module.exports = v;
}
else if (typeof define === 'function' && define.amd) {
define(["require", "exports", "./notifications"], factory);
}
})(function (require, exports) {
"use strict";
var notifications_1 = require("./notifications");
notifications_1.notification("blerp");
function foo() {
console.log("bar");
}
});
现在foo
被包装在某个范围内,当我在我的网站上加载它时不可用:<script src="require.js" data-main="index"></script>
foo is undefined
在模块加载作为原生 JavaScript 功能登陆浏览器之前,您可以使用 RequireJS 或 SystemJS 等库来加载模块。
使用 RequireJS 时,只需传递编译器选项:
-module UMD
然后将 RequireJS 指向您的主文件:
<script src="require.js" data-main="app"></script>
然后按需异步加载模块,寿命很好。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 禁用(而不是隐藏)浏览器滚动条
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 是否可以在浏览器中使用纯JavaScript保存音频流
- jQuery检测浏览器是否支持Zoom
- 重定向时角度刷新浏览器