Meteor.isServer
отлично работает в окнах, хотя в течение долгого времени он был recommended, что вместо того, чтобы использовать Meteor.isServer
и Meteor.isClient
вы должны разделить код на /client
и /server
каталогов.
С новой версии метеора, при запуске meteor create testApp
это следующее создано:
Весь код в /client
будет работать только на клиенте, и весь код в /server
запускается только на сервере ,
Создание/редактирование этих исходных файлов включают в себя следующие лог команд показывает, как где (клиент/сервер) и в каком порядке код выполняется:
/client/main.js
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';
Template.hello.onCreated(function helloOnCreated() {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() + 1);
},
});
Meteor.startup(() => {
console.log('Ping! from /client/main.js - Meteor.startup()')
});
console.log('Ping! from /client/main.js - Top Level')
/server/main.js
import { Meteor } from 'meteor/meteor';
Meteor.startup(() => {
console.log('Ping! from /server/main.js - Meteor.startup()')
});
console.log('Ping! from /server/main.js - Top Level')
/shared.js
// Runs on Both
console.log('Hi from /shared.js - Top Level')
Meteor.startup(() => {
console.log('Hi from /shared.js - Meteor.startup()')
});
// Runs on Server
if(Meteor.isClient){
console.log('Hi from /shared.js - isClient')
Meteor.startup(() => {
console.log('Hi from /shared.js - isClient, Meteor.startup()')
});
}
// Runs on Server
if(Meteor.isServer){
console.log('Hi from /shared.js - isServer')
Meteor.startup(() => {
console.log('Hi from /shared.js - isServer, Meteor.startup()')
});
}
/lib/shared.js
console.log('Ping! from /lib/shared.js - Top Level')
Meteor.startup(() => {
console.log('Ping! from /lib/shared.js - Meteor.startup()')
});
Вот результирующие журналы с сервера и браузера:
на клиенте и сервере, то console.log
линии не в Meteor.startup
блоков запустить первый, сопровождаемый Meteor.startup
, поскольку они задерживаются до завершения процесса сервера или DOM готов. Они выполняются в том порядке, в котором были сделаны звонки Meteor.startup
.
Звонки не в блоке Meteor.startup
выполняются, поскольку их файлы загружаются, следуя Default file load order.