Electron - Javascript (ES6) - 导入远程 Class
Electron - Javascript (ES6) - import remote Class
编辑:
02/09 - 导入代码似乎没问题(就像响应中的代码一样),但我的 class 代码不好(ES6 不好?转译不好?)
初始post:
我正在尝试从我的电子应用程序导入远程 class。
- 我有一个静态服务器来托管我的 html/js 文件
- 我想从该服务器导入一个 class,以便在我的电子应用程序的主进程中使用它。
可能吗?
我找到了一些解决方案,例如:
var vm = require('vm')
var concat = require('concat-stream');
require('http')
.get(
{
host: 'localhost',
port: 8123,
path:"/dist/SomeViewModel.js"
},
function(res) {
res.setEncoding('utf8');
res.pipe(concat({ encoding: 'string' }, function(remoteSrc) {
vm.runInThisContext(remoteSrc, 'remote_modules/SomeViewModel.js')
}));
} );
貌似tun没报错,就是不知道怎么用...
例如,var someVM = new SomeViewModel()
不起作用(不足为奇...)。
这是 SomeViewModel :
export default class SomeViewModel {
constructor(options) {
this.element1 = options.element1,
this.element2 = options.element2
};
}
class 被 babelized 变成了 :
(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";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var SomeViewModel = function SomeViewModel(options) {
_classCallCheck(this, SomeViewModel);
this.element1 = options.element1, this.element2 = options.element2;
};
exports["default"] = SomeViewModel;
module.exports = exports["default"];
},{}]},{},[1]);
//# sourceMappingURL=SomeViewModel.js.map
这样走好吗? (我知道安全,只是如何)
在这种情况下,我会下载文件并将其存储在磁盘上,完成后,需要该文件。
var http = require('http'),
fs = require('fs');
var file = fs.createWriteStream('./tmp/SomeViewModel.js');
http.get({
// your options
}, function (res) {
// set encoding, etc.
res.pipe(file);
file.on('finish', function() {
file.close(function() {
// do stuff
// var SomeViewModel = require('./tmp/SomeViewModel.js');
});
});
});
编辑:
02/09 - 导入代码似乎没问题(就像响应中的代码一样),但我的 class 代码不好(ES6 不好?转译不好?)
初始post:
我正在尝试从我的电子应用程序导入远程 class。
- 我有一个静态服务器来托管我的 html/js 文件
- 我想从该服务器导入一个 class,以便在我的电子应用程序的主进程中使用它。
可能吗?
我找到了一些解决方案,例如:
var vm = require('vm')
var concat = require('concat-stream');
require('http')
.get(
{
host: 'localhost',
port: 8123,
path:"/dist/SomeViewModel.js"
},
function(res) {
res.setEncoding('utf8');
res.pipe(concat({ encoding: 'string' }, function(remoteSrc) {
vm.runInThisContext(remoteSrc, 'remote_modules/SomeViewModel.js')
}));
} );
貌似tun没报错,就是不知道怎么用...
例如,var someVM = new SomeViewModel()
不起作用(不足为奇...)。
这是 SomeViewModel :
export default class SomeViewModel {
constructor(options) {
this.element1 = options.element1,
this.element2 = options.element2
};
}
class 被 babelized 变成了 :
(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";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var SomeViewModel = function SomeViewModel(options) {
_classCallCheck(this, SomeViewModel);
this.element1 = options.element1, this.element2 = options.element2;
};
exports["default"] = SomeViewModel;
module.exports = exports["default"];
},{}]},{},[1]);
//# sourceMappingURL=SomeViewModel.js.map
这样走好吗? (我知道安全,只是如何)
在这种情况下,我会下载文件并将其存储在磁盘上,完成后,需要该文件。
var http = require('http'),
fs = require('fs');
var file = fs.createWriteStream('./tmp/SomeViewModel.js');
http.get({
// your options
}, function (res) {
// set encoding, etc.
res.pipe(file);
file.on('finish', function() {
file.close(function() {
// do stuff
// var SomeViewModel = require('./tmp/SomeViewModel.js');
});
});
});