在meteor项目中插入javascript代码:最佳实践

在meteor项目中插入javascript代码:最佳实践,javascript,html,meteor,Javascript,Html,Meteor,我有一个meteor项目,我有一个client文件夹(仅由客户端查看)、一个server文件夹(仅由服务器查看)和一个lib文件夹(由客户端和服务器查看) 我在/client/devices中有两个文件,devices.html和devices.js,它们是html页面的一部分 我必须在这一页中插入日期选择器:然而,说明书上说 我必须在页面底部插入(以便在页面完全加载后加载)这一行: var picker = new Pikaday({ field: document.getElementByI

我有一个meteor项目,我有一个
client
文件夹(仅由客户端查看)、一个
server
文件夹(仅由服务器查看)和一个
lib
文件夹(由客户端和服务器查看)

我在
/client/devices
中有两个文件,
devices.html
devices.js
,它们是html页面的一部分

我必须在这一页中插入日期选择器:然而,说明书上说 我必须在页面底部插入(以便在页面完全加载后加载)这一行:

var picker = new Pikaday({ field: document.getElementById('datepicker') });
我试着把它直接放在标签后面,放在标签里;它的工作原理是:

<input type="text" id="datepicker">
<script>
    var picker = new Pikaday({ field: document.getElementById('datepicker') });
</script>

var picker=new Pikaday({field:document.getElementById('datepicker')});
我还尝试将它放入
Template.devices.onRendered
中,但它不起作用


我的问题是:因为我不确定把代码放在HTML文件中间是一个好的做法,我应该把这一部分放在哪里?

,为了保证第三方代码能在流星应用程序中工作,有一些事情需要做。p>
  • 确保已通过大气或
    npm
    安装该软件包
  • 将包导入要使用的文件中
  • 当UI准备就绪时初始化代码
  • 例如:

    client/main.html

    <body>
      {{> devices}}
    </body>
    
    <template name="devices">
      <input type="text" id="datepicker">
    </template>
    
    package.json

    {
      "name": "test",
      "private": true,
      "scripts": {
        "start": "meteor run"
      },
      "dependencies": {
        "babel-runtime": "^6.20.0",
        "meteor-node-stubs": "~0.2.4",
        "pikaday": "latest"
      }
    }
    

    流星包装指南
    为了确保第三方代码在Meteor应用程序中正常工作,您需要做一些事情

  • 确保已通过大气或
    npm
    安装该软件包
  • 将包导入要使用的文件中
  • 当UI准备就绪时初始化代码
  • 例如:

    client/main.html

    <body>
      {{> devices}}
    </body>
    
    <template name="devices">
      <input type="text" id="datepicker">
    </template>
    
    package.json

    {
      "name": "test",
      "private": true,
      "scripts": {
        "start": "meteor run"
      },
      "dependencies": {
        "babel-runtime": "^6.20.0",
        "meteor-node-stubs": "~0.2.4",
        "pikaday": "latest"
      }
    }
    

    流星包装指南

    您是否添加了richsilv:pikaday?是的,它可以工作,我只是不确定该将那段代码放在哪里,因为我对meteor非常陌生,当您将初始化放在
    Template.devices.onRendered
    中时会发生什么?你说它不工作-有任何错误吗?另外,我建议使用
    npm
    版本而不是meteor软件包:(
    npm install pikaday
    )a。它说
    TypeError:from[prop]为null
    可能指的是导入的文件b。我尝试了npm版本:我也有同样的问题-我需要一个地方来放置上面的行-另外我需要一个地方来放置
    导入
    行。我没有找到一个合适的地方放置它们,所以它不起作用,所以我切换到meteor软件包-至少我在导入方面没有任何问题:)你是否
    meteor添加了richsilv:pikaday
    ?是的,它起作用,我只是不知道该把这段代码放在哪里,因为我对在
    Template.devices.onRendered
    中放置初始化时会发生什么很不熟悉?你说它不工作-有任何错误吗?另外,我建议使用
    npm
    版本而不是meteor软件包:(
    npm install pikaday
    )a。它说
    TypeError:from[prop]为null
    可能指的是导入的文件b。我尝试了npm版本:我也有同样的问题-我需要一个地方来放置上面的行-另外我需要一个地方来放置
    导入
    行。我没有找到一个合适的地方放置它们,所以它不起作用,所以我切换到meteor包-至少我在导入方面没有问题:)这不起作用,在main.js中找不到从“Pikaday”导入Pikaday的
    import
    import./main.html'
    @Diego我的观点只是制作一个MVCE来证明这是可行的。你可能正在做一些你在问题中没有提供的事情,而这正是罪魁祸首。试着缩减你的项目(或者开始一个新的项目),试着让它开始工作,看看有什么不同。这不起作用,在main.js中找不到
    import Pikaday from'Pikaday'
    import./main.html'
    @Diego我的观点只是制作一个MVCE来证明这是可行的。你可能正在做一些你在问题中没有提供的事情,而这正是罪魁祸首。试着缩减你的项目(或者开始一个新的项目),试着让它开始工作,看看有什么不同。