在节点和浏览器中加载单个javascript模块

在节点和浏览器中加载单个javascript模块,javascript,Javascript,如何编写一个.js文件并在不做任何更改的情况下从节点和浏览器调用(要求)它 模型“类”就是一个很有用的例子 如果模型有依赖项,比如jquery,它在node和web上都可用怎么办?浏览器和node都可以很好地使用JavaScript。在这两种语言中运行代码无需执行任何操作 但是请注意,如果使用仅在节点或浏览器对象中可用的包(例如navigator),则会遇到问题。您应该将代码分成模块,以便在这两种上下文中轻松加载 此外,请确保您的代码没有使用较新的JavaScript函数,否则您将与较旧的浏览器

如何编写一个.js文件并在不做任何更改的情况下从节点和浏览器调用(要求)它

模型“类”就是一个很有用的例子


如果模型有依赖项,比如jquery,它在node和web上都可用怎么办?

浏览器和node都可以很好地使用JavaScript。在这两种语言中运行代码无需执行任何操作

但是请注意,如果使用仅在节点或浏览器对象中可用的包(例如
navigator
),则会遇到问题。您应该将代码分成模块,以便在这两种上下文中轻松加载


此外,请确保您的代码没有使用较新的JavaScript函数,否则您将与较旧的浏览器存在兼容性问题。

浏览器和节点都可以很好地使用JavaScript。在这两种语言中运行代码无需执行任何操作

但是请注意,如果使用仅在节点或浏览器对象中可用的包(例如
navigator
),则会遇到问题。您应该将代码分成模块,以便在这两种上下文中轻松加载


此外,请确保您的代码不使用较新的JavaScript函数,否则您将与较旧的浏览器存在兼容性问题。

您可以使用查看,以允许在浏览器中加载异步模块,也可以在节点中使用

您可以使用查看,它允许在浏览器中加载异步模块,也可以在节点中使用

这是我用来让模块与node和require.js一起工作的模块模板:


这是我用来让模块与node和require.js一起工作的模块模板:


我想得到一个可以接受的答案。我最近一直在使用meteor框架,集合在客户端和服务器上共享。很酷的东西。看看吧。我在目前的项目中非常认真地考虑了meteor,甚至做了它的第一个模型。我决定不使用它有几个原因:1)请求中没有页面加载-对搜索引擎来说很糟糕,我讨厌页面加载中的空页面-而且当客户端速度不是很快或者JavaScript出现故障时,您得到的只是空页面。2) 我们的目标用户经常使用IE,所以我们需要一个不同的加载解决方案,在历史API不起作用时,优雅地使用hashbang,并且仍然不会像主干那样破坏hash锚(我们使用hash锚来弹出窗口)。。。。我也不同意光纤的决定——它会破坏节点的边缘。我们真正需要的是一个更轻量级的框架,做meteor所做的事情(客户机和服务器的统一路由、应用程序缓存、组装客户机模块和模板、共享模块、共享模型等等)——他们做了很多,但在我看来是错误的。几乎所有这些事情我们都必须自己做,或者干脆跳过。),但是,以一种更简单的方式-异步、事件驱动,并且当npm中有20k+个模块时,不会将您锁定到不成熟的模块库中,其中一些是top-notch.Btw,关于此模板-当您开始使用require.js optimizer时,从该模板定义函数需要name参数,您在define调用中使用的名称应该包括requirepath,只是编辑了要点。现在,无论是将所有JS文件捆绑在一起还是分开,它都能继续工作。在模板编辑和meteor信息上,这真是太棒了。我完全不知道。谢谢你给我一个可以接受的答案。我最近一直在使用meteor框架,集合在客户端和服务器上共享。很酷的东西。看看吧。我在目前的项目中非常认真地考虑了meteor,甚至做了它的第一个模型。我决定不使用它有几个原因:1)请求中没有页面加载-对搜索引擎来说很糟糕,我讨厌页面加载中的空页面-而且当客户端速度不是很快或者JavaScript出现故障时,您得到的只是空页面。2) 我们的目标用户经常使用IE,所以我们需要一个不同的加载解决方案,在历史API不起作用时,优雅地使用hashbang,并且仍然不会像主干那样破坏hash锚(我们使用hash锚来弹出窗口)。。。。我也不同意光纤的决定——它会破坏节点的边缘。我们真正需要的是一个更轻量级的框架,做meteor所做的事情(客户机和服务器的统一路由、应用程序缓存、组装客户机模块和模板、共享模块、共享模型等等)——他们做了很多,但在我看来是错误的。几乎所有这些事情我们都必须自己做,或者干脆跳过。),但是,以一种更简单的方式-异步、事件驱动,并且当npm中有20k+个模块时,不会将您锁定到不成熟的模块库中,其中一些是top-notch.Btw,关于此模板-当您开始使用require.js optimizer时,从该模板定义函数需要name参数,您在define调用中使用的名称应该包括requirepath,只是编辑了要点。现在,无论是将所有JS文件捆绑在一起还是分开,它都能继续工作。在模板编辑和meteor信息上,这真是太棒了。我完全不知道。谢谢