我有两个问题:
1)我想使用Meteor 1.5 Dynamic Import for Blaze,但所有示例和教程都是针对React的。所以我很困惑它是如何使用的。任何人都可以举例说明。
2)我正在使用来自atmospherejs.com的软件包,比如amcharts,我只需要在Admin Dashboard端。如何动态导入它们?
提前致谢!
UPDATE(溶液):
以下是homepage.html(父模板)
<template name="homepage">
Homepage Content
{{> Template.dynamic template=content}}
</template>
login.html(子模板)
<template name="login">
You're logged in!
</template>
login.js
import '../homepage/homepage.js';
import './login.html';
API = function () {
BlazeLayout.render("homepage",{content: 'login'});
}
export { API }
main.js
LoadLogin = function () {
import('/imports/modules/common/login/login.js').then(function (api) {
api.API();
})
}
/lib/route.js
import { FlowRouter } from 'meteor/ostrio:flow-router-extra';
FlowRouter.route('/', {
name: 'homepage',
action() {
LoadLogin();
}
});
答案 0 :(得分:4)
我正在开发自己的管理面板Meteor Candy,由动态导入驱动,所以我很乐意分享我是如何工作的。
首先,我们有view.html:
<template name="admin">
Admin
</template>
其次,我们有JS逻辑:
import { Template } from 'meteor/templating';
import { Meteor } from 'meteor/meteor';
import { Blaze } from 'meteor/blaze';
import './view.html';
API = {}
API.render = function () {
Blaze.render(Template.admin, document.body);
}
export { API }
最后,我们只需要导入该代码并触发我们的模板呈现到页面中:
openAdmin = function () {
import('./imports/admins').then(function (api) {
api.render()
})
}
一旦某些内容运行openAdmin()
函数,模板将从服务器导入,并将调用渲染函数。
答案 1 :(得分:1)
使用Blaze在Meteor 1.5中动态导入模块的基本技术如下:
Template.theTemplate.events({
'click button'(event, instance) {
import("foo").then(Foo => {
console.log(Foo);
});
}
});
请确保仔细查看导入模块的方式,因为在代码中调用模块时可能需要进行一些重构。例如,使用“zxcvbn”:
<强> WAS 强>
const result = zxcvbn(pwd);
<强> IS 强>
const result = zxcvbn.default(pwd);
答案 2 :(得分:0)
使用示例链接https://github.com/thesaucecode/meteor-amcharts-example/blob/master/client/example2.js
非常直接,您只需在Template.MYTEMPLATE.onRendered(function(){});
最重要的是,您可以使用var chart
作为reactive-var。