目前我正在关注official ts-ko demo。当我直接引用Ko时:
/// <reference path="./node_modules/@types/knockout/index.d.ts" />
没有错误。但是当以下列方式添加引用时:
import * as ko from "knockout";
抛出错误:
未捕获的ReferenceError:未定义require
Typescript demo states:
我们需要抓住Knockout本身以及一个名为RequireJS的东西。
定义RequireJs的正确方法是什么?为什么需要将requirejs用于“导入”案例?
的package.json
"dependencies": {
"jquery": "3.1.1",
"@types/jquery": "2.0.33",
"knockout": "3.4.0",
"@types/knockout": "1.1.5"
}
答案 0 :(得分:2)
来自RequireJs homepage。 RequireJS是一个JavaScript文件和模块加载器。
定义RequireJs的正确方法是什么?
您只需从脚本标记中引用您的RequireJ。
<script src="scripts/require.js" type="text/javascript"></script>
并定义您的requireJs配置。
require.config({
baseUrl: 'app',
paths: {
text: "../scripts/text" //Path to text.js, you will use this to load html that will be used in your ko components,
widgets: "widgets",
app: "."
}
});
然后你可以像这样注册你的组件。
ko.components.register(name, {
viewModel: { require: path },
template: { require: 'text!'+ path +'.html' }
});
为什么需要将requirejs用于“import”情况?
为了异步加载你的ko组件,你需要一个像RequireJs这样的模块加载器。请参阅此documentation。