sno*_*ogg 7 javascript typescript webpack
中ts/app.ts,有:
function foo() {
console.log('Hello Word');
}
Run Code Online (Sandbox Code Playgroud)
它使用 Webpack 成功编译bundle.js并加载:
<script src="dist/bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
如何foo从浏览器控制台执行?
> foo()
Uncaught ReferenceError: foo is not defined
Run Code Online (Sandbox Code Playgroud)
use*_*650 12
当您拥有它时,您无法在全球范围内访问它。但如果你愿意你可以做
function foo() {
console.log('Hello Word');
}
(window as any).foo = foo;
Run Code Online (Sandbox Code Playgroud)
然后它应该在对象上可用window(这意味着您可以作为window.foo()或仅仅foo()因为该window对象是全局对象而访问它。
默认情况下,变量和方法foo对于它们所在的模块(即文件)来说是私有的。您可以像这样导出它们:
export function foo() {
console.log('Hello Word');
}
Run Code Online (Sandbox Code Playgroud)
这意味着您可以从其他模块导入它们,即
import {foo} from "foo";
foo();
Run Code Online (Sandbox Code Playgroud)
然而浏览器本身并不理解这一点import和export语法(*),所以它们仍然不是全局的。webpack 能够理解该语法并将它们全部拼接成浏览器可以使用的形式(在“dist/bundle.js”文件中)。查看该文件,您将看到 webpack 插入的引导代码。
(*) 编辑:浏览器开始支持模块:
从本质上讲,没有什么是全局的,但这是一件好事,因为否则它们可能会相互冲突。即它不是模块化的。
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |