2.5.13
https://github.com/80LevelElf/VueProblemApp
рдмрд╕ рдЦреЛрд▓рдХрд░ рдРрдк рдЪрд▓рд╛рдПрдВ
/VueProblemApp/VueProblemApp/index.html рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЖрдк рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВрдЧреЗред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ Vue рдЯрд╛рдЗрдкрд┐рдВрдЧ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд╣реА рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдгрд╛рдореА JS рдХреЛрдб рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВ)ред
рдХрдИ рджрд┐рди рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдПрдордбреА (рдпреВрдПрдордбреА) рдмрдЧ
рдореБрдЭреЗ @yyx990803 рд╕реЗ рдЬрд╡рд╛рдм рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ
рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
рдЗрд╡рд╛рди рдиреЗ рдореБрдЭреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ "vue" рдореЙрдбреНрдпреВрд▓ рдХреЛ vue.js UMD рдмрд┐рд▓реНрдб рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реЛ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдиреЗ рдЦреБрдж рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реЛред рддреЛ TS рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ node_modules/vue рд╕реЗ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ package.json рдореЗрдВ "рдореБрдЦреНрдп" рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдПрдХ CommonJS рдмрд┐рд▓реНрдб рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ tsconfig рдореЗрдВ CompilerOptions.paths рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдкрд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╡рд╛рди рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдЙрд╕рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ RequJS рдЧрд▓рдд vue.js рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
UMD/AMD рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди TS рдХрдВрдкрд╛рдЗрд▓рд░ CommonJS рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП vue.js рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдереАред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЯреАрдПрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдВрджрд░реНрдн рджреЗрдВ
рдореЗрд░реА рд╕рд╛рдЗрдЯ/
рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реИ:
mySite/vue.js
рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ vue.js рдлрд╝рд╛рдЗрд▓ рдХреНрдпрд╛ рд╣реИред рддреЛ рдЕрдЧрд░ рдЗрд╕ рд▓рд┐рдВрдХ рдореЗрдВ рдХреЛрдИ vue.js рдирд╣реАрдВ рд╣реИ рддреЛ 404 рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
рд╕рд╛рде рд╣реА, рдореИрдВ node_modules/vue/package.json рдореЗрдВ рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ: "рдореБрдЦреНрдп": "dist/vue.js" рдФрд░ рдпрд╣ рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдореИрдВрдиреЗ vue.js рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдЬреЛ RequJS рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдпрд╣ рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рд╣реИ ред RequJS рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ (рдЬреИрд╕реЗ @Micene09 рдХреА рдкреЗрд╢рдХрд╢ рдХреА):
import { Vue } from "vue-property-decorator";
mySite/vue.js рдореЗрдВ рд╕рдорд╛рди vue.js рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддреЛ рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рдареАрдХ рдХрд░ рджреВрдВ рддреЛ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИред
рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рдкреНрд░рд╢реНрди рд╣реИ рдЬрд┐рд╕реЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдорд╕реНрдпрд╛рдПрдБ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ Vue рд╕реЗ рд╣реА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред
@ 80LevelElf - рдореИрдВрдиреЗ рдЗрд╕реЗ (рдЕрднреА рдХреЗ рд▓рд┐рдП) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛:
import { VueConstructor } from "vue";
const Vue = require("vue") as VueConstructor; // cast as VueConstructor to get typings.
const app = new Vue({
template: "<h1>Hello World</h1>
});
@ yyx990803 - рдореИрдВ рдПрдХ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реВрдВред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдХреЛрдИ рд╡реЗрдмрдкреИрдХ рдирд╣реАрдВ) рд╕реЗ commonjs
рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдУрдкреА рдФрд░ рдЖрдИ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдорд╛рдирддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рджреЛрдиреЛрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ baseUrl
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдорд╛рдирдХ рдЖрдпрд╛рдд рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред
рдореИрдВ рднреА Vue 2.5.13 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдиреЛрдб 8.9.3 рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.6 рдкрд░ рдПрд╕рдПрд╕рдЖрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░рд╛ tsconfig.json
рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
{
"compilerOptions": {
"outDir": "build",
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"rootDir": "./src",
"baseUrl": "./src",
"noUnusedLocals": true
},
"exclude": [
"node_modules",
"typings"
]
}
рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ compilerOptions.paths
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ vue.esm.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕рд╣рд┐рдд рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдУрдкреА рдХреЗ рд╕рдорд╛рди рд╣реА vue_1.default is not a constructor
рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереАред
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдПрдХ рдирдпрд╛ рдЕрдВрдХ рдЦреЛрд▓рд╛ рд╣реИ
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред
рдореЗрд░реА рд╕рдордЭ рд╕реЗ, vue.js рдлрд╝рд╛рдЗрд▓ рдХреЛ exports.default
рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ vue-class-component рдХрд░рддрд╛ рд╣реИред
vue-class-component.js (рд▓рд╛рдЗрди 192):
exports['default'] = Component$1;
Vue-рд╡рд░реНрдЧ-рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Vue рд╕реЗ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
vue-class-component.js (рдкрдВрдХреНрддрд┐ 12):
Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.5 рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.7 рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк ( esModuleInterop
) рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
{
"compilerOptions": {
"module": "amd",
"esModuleInterop": true,
...
},
...
}
esModuleInterop
рдХреЛ true
esModuleInterop
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ __importDefault
рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
}
define(["require", "exports", "vue"], function (require, exports, vue_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
vue_1 = __importDefault(vue_1);
var app = new vue_1.default({
...
});
});
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред
рдореЗрд░реА рд╕рдордЭ рд╕реЗ, vue.js рдлрд╝рд╛рдЗрд▓ рдХреЛ
exports.default
рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ vue-class-component рдХрд░рддрд╛ рд╣реИредvue-class-component.js (рд▓рд╛рдЗрди 192):
exports['default'] = Component$1;
Vue-рд╡рд░реНрдЧ-рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Vue рд╕реЗ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
vue-class-component.js (рдкрдВрдХреНрддрд┐ 12):
Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.5 рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.7 рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк (
esModuleInterop
) рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИредesModuleInterop
рдХреЛtrue
esModuleInterop
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ__importDefault
рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдкрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред