Это на самом деле удивительно просто!Я основываю это на своем первом приложении в стиле Vue TodoMVC, которое использовало Require.js.Вы можете экстраполировать свой собственный проект.
Самый простой способ сделать это - использовать загрузчик, такой как Require.js или System.js, который не требует пакетирования - все, что вам нужно сделатькомпилируется с TypeScript.
Так как я использую Require.js и Vue, вот мой package.json
{
"name": "vue-tutorial",
"version": "1.0.0",
"dependencies": {
"@types/requirejs": "^2.1.28",
"vue": "^2.1.4"
}
}
Далее я собираюсь добавить tsconfig.json
{
"compilerOptions": {
"outFile": "./built/app.js",
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitThis": true,
"module": "amd",
"moduleResolution": "node",
"esModuleInterop": true,
"lib": [
"dom", "es2015"
],
"types": [
"requirejs"
]
},
"include": [
"src"
]
}
Давайте разберем это:
outFile
: TypeScript эффективно объединит ваш исходный код в один файл (но не его зависимости!). noImplicitAny
, strictNullChecks
, noImplicitThis
: только некоторые конкретные опции --strict
. Я настоятельно рекомендую вам включить как минимум. module: amd
: AMD - это формат модуля, который понимает Require.js. moduleResolution: node
: это позволяет TypeScript легко выбирать .d.ts
файлы из node_modules
. esModuleInterop
: это позволяет нам импортировать Vue с использованием современного синтаксиса. lib
: указывает стандартные API, которые вы ожидаете иметь во время выполнения. types
: .d.ts
файлы для библиотек, которые мы не обязательно импортируем;мы не импортируем Require.js, потому что ожидаем, что он будет доступен глобально.
Теперь наш index.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello Vue!</title>
</head>
<body>
<div id="app"></div>
<script src="https://unpkg.com/requirejs@2.3.5/require.js"></script>
<script src="./built/app.js"></script>
</body>
</html>
Давайте создадим наш первый компонент в src/components/GreetingComponent.ts
:
import Vue from "vue";
export default Vue.extend({
template: `<div>Hello {{name}}!</div>`,
props: ["name"],
});
Далее, давайте создадим index.ts
:
import Vue from "vue";
import GreetingComponent from "./components/GreetingComponent";
new Vue({
el: "#app",
template: `<greeting-component name="Steve"></greeting-component>`,
components: {
GreetingComponent
}
});
И, наконец, давайте создадим загрузчик, который фактически импортирует ваш файл в require-config.ts
:
require.config({
paths: {
// JS library dependencies go here.
// We're using a CDN but you can point to your own assets.
"vue": "https://unpkg.com/vue@2.5.16/dist/vue",
}
});
require(["index"]);
Для объяснения:
paths
сообщит Require.js, где искать Vue и другие библиотеки, когда вы импортируете их с пустым путем.Вы можете настроить, где Require.js будет искать Vue, но помните, что вы должны опустить .js
в конце URL. - , который вызывает
require
в конце, загрузит ваш index
модуль для запуска вашей программы.
Запустите tsc
, откройте index.html
, и все должно просто работать!