Mam skrypt test.js
, który definiuje klasę App
i który jest ładowany z pliku HTML, a wszystko działa.Uzyskiwanie dostępu do "publicznych" członków po pakiecie z przeglądarką lub pakietem internetowym
Po utworzeniu zestawu testBundle.js
z test.js
, używając przeglądarki internetowej lub pakietu WWW, klasa App
w numerze testBundle.js
nie jest już zdefiniowana.
W jaki sposób powinienem napisać kod lub jakie opcje powinienem podać przeglądarce, aby uzyskać zdefiniowaną aplikację i używać jej z HTML-a jak poprzednio, ale z pakietu ?.
Błąd pojawia po łączenie jest:
Uncaught ReferenceError: App is not defined
pliku HTML jest następujący:
<html>
<script src="testBundle.js"></script>
<script>
var app = new App();
</script>
</html>
test.js:
'use strict';
class App {
constructor() {
console.log("App ctor")
}
}
polecenie, aby zbudować pakiet :
browserify -t [ babelify --presets [ es2015 ] ] test.js -o testBundle.js
Wydaje mi się, patrząc na pakiet, że aplikacja jest rzeczywiście prywatna.
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]);
Wszystko to za pomocą JavaScript w przeglądarce, ES6.
Niestety ale wierzę (nadzieja), że są lepsze sposoby, aby rozwiązać ten problem, Zaczyna się bounty – cdarwin