Meteor有特殊的目录:server和client,用于只向服务器或客户端提供文件。
是否可以使用类似的行为,但不使用客户端和服务器文件夹名称,而使用以.client.js或.server.js结尾的文件名?
例如,collections.client.js只在客户机上可用,而collections.server.js只在服务器上可用?
UPD也许可以创建智能包来控制服务文件?
发布于 2015-04-26 20:51:03
这是不可能的,但是,您可以做的是:
lib/collections/collection.js
声明集合和常见的客户机/服务器行为(如Meteor.methods )。
client/collections/collection.js
声明与集合有关的客户端特定的帮助程序。
server/collections/collection.js
声明出版物和其他服务器端助手。
您也可以在lib/collections/collection.js中声明所有内容,并使用Meteor.isClient和Meteor.isServer块。对于非常小的文件来说,这可能是可以的,但是对于较大的项目来说,它很快就会变得一团糟。我不确定Meteor构建工具是否足够聪明,可以将Meteor.isServer从提供给客户端的包中删除。
您还可以使用模块化方法并使用包,使用Package API,您可以精确地控制应该执行文件的上下文。
Package.describe({
name: "my-app-module",
description: "Handles some feature in My App",
version: "1.0.0"
});
Package.onUse(function(api){
api.addFiles({
"my-module/shared.js"
},["client","server"]);
//
api.addFiles({
"my-module/client.js"
},"client");
//
api.addFiles({
"my-module/server.js"
},"server");
//
api.export("MyModule",["client","server"]);
});发布于 2015-04-26 20:43:20
嗯,现在你不能这么做,但是你可以把你的代码
if (Meteor.isServer) {
// your server code
};
if (Meteor.isClient) {
// your client code
};https://stackoverflow.com/questions/29883142
复制相似问题