Meteor 1.5:Blaze 的动态导入
Meteor 1.5 : Dynamic Import for Blaze
我有两个问题:
1) 我想为 Blaze 使用 Meteor 1.5 动态导入,但所有示例和教程都是为 React 提供的。所以我很困惑它究竟是如何使用的。谁能举个例子。
2) 我正在使用来自 atmospherejs.com 的软件包,比如我只需要在管理仪表板端使用的 amcharts。如何动态导入它们?
提前致谢!
更新(解决方案):
下面是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();
}
});
使用示例link https://github.com/thesaucecode/meteor-amcharts-example/blob/master/client/example2.js
非常简单,您只需在Template.MYTEMPLATE.onRendered(function(){});
中编写代码
最重要的是,您可以使用 var chart
作为反应变量。
使用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);
我正在开发我自己的管理面板,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) 我想为 Blaze 使用 Meteor 1.5 动态导入,但所有示例和教程都是为 React 提供的。所以我很困惑它究竟是如何使用的。谁能举个例子。
2) 我正在使用来自 atmospherejs.com 的软件包,比如我只需要在管理仪表板端使用的 amcharts。如何动态导入它们?
提前致谢!
更新(解决方案):
下面是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();
}
});
使用示例link https://github.com/thesaucecode/meteor-amcharts-example/blob/master/client/example2.js
非常简单,您只需在Template.MYTEMPLATE.onRendered(function(){});
最重要的是,您可以使用 var chart
作为反应变量。
使用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);
我正在开发我自己的管理面板,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()
函数,模板将从服务器导入并调用渲染函数。