gpt4 book ai didi

javascript - 使用 browserify 或 webpack bundle 后访问 "public"成员

转载 作者:数据小太阳 更新时间:2023-10-29 04:09:47 24 4
gpt4 key购买 nike

我有一个 test.js 脚本,它定义了一个类 App 并从 HTML 文件加载,一切正常。

当我使用 browserify 或 webpack 从 test.js 创建一个 testBundle.js 包时, testBundle 中的类 App .js 似乎不再定义。

我应该如何编写代码或者我应该给 browserify 什么选项来定义应用程序并像以前一样从 HTML 中使用它,但是从包中?。

我在打包后得到的错误是:

Uncaught ReferenceError: App is not defined

html文件如下:

<html>
<script src="testBundle.js"></script>

<script>
var app = new App();
</script>
</html>

测试.js:

'use strict';

class App {
constructor() {
console.log("App ctor")
}
}

构建包的命令:

browserify -t [ babelify --presets [ es2015 ] ] test.js  -o testBundle.js 

在我看来,从 bundle 内部来看,该 App 实际上是私有(private)的。

testBundle.js

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var App = function App() {
_classCallCheck(this, App);

console.log("App ctor");
};


},{}]},{},[1]);

所有这些都使用来自浏览器 ES6 的 Javascript。

最佳答案

您正在尝试在全局上下文中访问 App。但是,默认情况下,App 不是全局可用的。 Node.js 使用模块,而 Browserify 尊重模块提供的封装。使用 Browserify 或 Webpack 等工具时,最常见的情况是拥有一个或多个入口点模块(即文件),这些模块使用模块导入/require() 来访问其他模块。

但是如果您希望能够在浏览器的全局上下文中访问 App,您可以将对 App 类的引用分配给 的属性>window 在 test.js 中:

例如

window.App = App;

Object.assign(window, { App });

关于javascript - 使用 browserify 或 webpack bundle 后访问 "public"成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863499/

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