Meteor:客户端和服务器端的代码是什么?

Meteor:客户端和服务器端的代码是什么?,meteor,Meteor,我只是不知道到底应该在服务器端放什么,在客户端放什么。我知道模板在客户端。但是javascript代码呢?你能给我一个服务器端代码的例子吗 如果创建一个名为client的目录,该目录将仅指向客户端 如果您创建了一个名为server的目录,该目录只指向服务器 您编写的所有其他代码都将同时发送到客户端和服务器。(即使 您使用Meteor.isServercheck) 您可以阅读有关目录结构的更多信息 下面是一个集合示例:声明、发布和订阅集合 服务器和客户端(除private、client或Serve

我只是不知道到底应该在服务器端放什么,在客户端放什么。我知道模板在客户端。但是javascript代码呢?你能给我一个服务器端代码的例子吗

  • 如果创建一个名为
    client
    的目录,该目录将仅指向客户端

  • 如果您创建了一个名为
    server
    的目录,该目录只指向服务器

  • 您编写的所有其他代码都将同时发送到客户端和服务器。(即使 您使用
    Meteor.isServer
    check)


  • 您可以阅读有关目录结构的更多信息

    下面是一个集合示例:声明、发布和订阅集合

    服务器和客户端(除
    private
    client
    Server
    之外的任何目录,也不要使用
    public
    ),声明集合:

    Rocks = new Meteor.Collection('rocks');
    
    Meteor.publish('allRocks', function()
    {
        return Rocks.find();
    }
    
    服务器端(
    Server
    目录或在
    Meteor.isServer
    条件下),发布集合:

    Rocks = new Meteor.Collection('rocks');
    
    Meteor.publish('allRocks', function()
    {
        return Rocks.find();
    }
    
    客户端(
    Client
    目录或处于
    Meteor.isClient
    状态),订阅出版物:

    Meteor.subscribe('allRocks');
    
    您可以在或中找到许多示例


    编辑:根据OP的问题获得更高的精度。。。默认情况下,所有代码都是共享的(由服务器和客户端执行)。但是,
    服务器
    私有
    目录中的文件将永远不会发送到客户端。

    您可以使用Meteor.isClient和Meteor.isServer将代码加载到正确的位置

    使用文件夹:

    • 服务器-转到服务器duh
    • 客户-去客户那里
    • 双共享代码
    放置在客户机或服务器之外的所有内容都将加载到这两个位置

    创建Meteor软件包时,必须手动添加文件并指定加载位置,例如:

    api.add_files(['my-packages.js', 'another-file.js'], 'client');
    api.add_files(['server/methods.js'], 'server');
    
    在本例中,尽管您有一个
    服务器
    文件夹,但这并不意味着在软件包场景中它将被放置在服务器中

    您已经编写了将在客户机和服务器上运行的代码,但某些功能可能只在服务器或客户机上存在

    例如:

    ImageManager = {
      uploadImageToAmazonS3 : function(){
        if(Meteor.isServer){
          //your code goes here
          //YOU DON'T WANT TO SEND YOUR AMAZON PRIVATE KEY TO THE CLIENT
          //BAD THINGS CAN HAPPEN LIKE A HUGE BILL
    
          var amazonCredentials = Config.amazon.secretKey;
        }
        else{
          throw new Error("You can't call this on the client.");
        }
      }
    }
    
    这是一个场景,您可以添加客户端可以执行的功能,如:resizeImage、cropImage等,服务器也可以这样做,这是共享代码。向客户端发送私有API密钥是毫无疑问的,但此文件将由服务器和客户端共享

    文件:

    根据文档,这不会阻止代码被发送到客户端,它根本不会运行。

    使用这种方法,攻击知道服务器上的工作方式,并可以根据发送给他的代码尝试攻击向量。


    这里最好的选择是仅在服务器上扩展ImageManager。在客户端上,此函数甚至不应该存在,或者您可以简单地添加一个抛出错误的函数:“不可用”。

    您可以在服务器端代码中编写所有业务逻辑和复杂的数据库操作。通常是您不希望提供给客户机的代码

    比如说

    方法调用 发布/订阅
    Html、css和模板管理器应该进入客户端代码。Meteor方法和发布者应该进入服务器端代码。阅读有关应用程序的更多信息,并在中阅读。

    客户端是否可以看到服务器上的代码?我只想向客户机隐藏部分代码。只需创建一个名为
    client
    的目录即可。该目录中的代码只会转到客户端,只有一个答案真正回答了op的问题(在典型的meteor应用程序中,在客户端和服务器上处理的逻辑/代码类型)。