@ztes/corejs
Version:
Core-js is a better Javascript's framework
150 lines (124 loc) • 3.82 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _Exception = _interopRequireDefault(require("../spanners/Exception"));
var _Lib = _interopRequireDefault(require("../spanners/Lib"));
/**
* Class Vue2Adapter Vue.js 2.x adapter
* This class is not inheritable.
*
*/
var Vue2Adapter = /*#__PURE__*/function () {
// Vue Class
// Vue model
// Vue element
// Vue configs
function Vue2Adapter($class) {
(0, _classCallCheck2.default)(this, Vue2Adapter);
(0, _defineProperty2.default)(this, "Vue", null);
(0, _defineProperty2.default)(this, "$vm", null);
(0, _defineProperty2.default)(this, "hasEl", true);
(0, _defineProperty2.default)(this, "_configs", null);
if (!_Lib.default.isClass($class)) {
throw new _Exception.default('Error', 'Adapter Error : The first argument must be a class');
}
this.Vue = $class;
}
/**
* Method setConfigs 设置配置文件
* @param {*} param0
* @returns
*/
(0, _createClass2.default)(Vue2Adapter, [{
key: "setConfigs",
value: function setConfigs(_ref) {
var router = _ref.router,
store = _ref.store,
render = _ref.render,
el = _ref.el;
var configs = {
router: router,
store: store,
render: render,
el: el
}; // Manually mount node
if (!el) {
this.hasEl = false;
delete configs.el;
} // Not use Vuex
if (!store) {
delete configs.store;
}
this._configs = configs;
return this;
}
/**
* Method use 使用插件
* @param {*} obj
*/
}, {
key: "use",
value: function use(obj) {
if (this.$vm) {
throw new _Exception.default('Error', 'Vue.js Error : The use method must be invoked before the run method.');
}
this.Vue.use(obj);
}
/**
* Method mixin 混入
* @param {*} obj
*/
}, {
key: "mixin",
value: function mixin(obj) {
this.Vue.mixin(obj);
}
/**
* Method $mount 挂载
* @param {*} root
*/
}, {
key: "$mount",
value: function $mount() {
var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#app';
this.$vm.$mount(root);
}
/**
* Method instance
*/
}, {
key: "instance",
value: function instance() {
this.$vm = new this.Vue(this._configs);
}
/**
* Method run
* @returns
*/
}, {
key: "run",
value: function run(root) {
var mark = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
this.instance();
if (root && !this.hasEl) {
this.$mount(root);
} else if (root && this.hasEl) {
throw new _Exception.default('Error', 'Vue root element Error : Nodes can only be bound once');
} else if (!root && !this.hasEl) {
throw new _Exception.default('Error', 'Vue root element Error : A node must be bound');
} // Mark
if (mark) {
// No error mark
console.log('%c ================================ \n' + ' = = \n' + " =\tTHE VUE 2.x APP IS RUNNING~\t= \n" + ' = = \n' + ' ================================ ', 'background:#0f8e00;color:#ffffff');
}
}
}]);
return Vue2Adapter;
}();
exports.default = Vue2Adapter;