Meteor有特殊目录:server
和client
,用于仅向服务器提供文件或仅向客户端提供文件。
是否可以进行类似的行为,但不是使用客户端和服务器文件夹名称,而是使用以.client.js
或.server.js
结尾的文件名?
例如,collections.client.js
仅在客户端上可用,collections.server.js
仅在服务器上可用?
UPD 也许有可能创建智能包,它将控制服务文件?
答案 0 :(得分:1)
这是不可能的,但您可以做的是:
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"]);
});
答案 1 :(得分:0)
嗯,现在你不能这样做,但你可以把你的代码放在
中if (Meteor.isServer) {
// your server code
};
if (Meteor.isClient) {
// your client code
};