我真的很喜欢使用cdnjs在客户端加载javascript,它使我的项目更小更干净,并且加载所有内容也更快。我目前使用require.js进行模块加载,可以从cdnjs加载并填充传统脚本以便轻松使用它。我最近一直在寻找browserify作为替代方案,虽然我确实找到了browserify-shim,它可以像非必需的那样来填充非cjs模块,但我很好奇是否有办法使用browserify从远程源加载脚本,或者如果必须在本地安装所有内容,无论如何。
如果答案是您必须通过npm在本地安装所有内容,这会让事情变得有些奇怪。一方面,您可以将node_modules
添加到.gitignore
文件中,如果您使用的是package.json
,则无需担心将所有代码保留在版本控制上,但另一方面,你需要在部署时重新获得模块,这意味着需要运行npm install
的额外部署后步骤,并且需要在部署到的任何地方安装该节点,这看起来有点尴尬对我来说,特别是静态网站。
真的,任何想法或讨论都会很棒:)
答案 0 :(得分:2)
我想到的方法就是这样,你有三个选择:在部署之前将JS文件本地连接在一起(browserify),实时加载它们(require.js),或两者兼而有之。公平地说,您也可以使用require.js将文件与r.js连接起来。至少对我来说,我喜欢browserify的设计使用与npm模块相同的语法和心态。我认为最终你的体验并不重要。如果将所有代码打包在一起,那么部署,并且没有任何依赖关系,对我来说似乎是一个胜利。此外,我认为这更符合Java和类似的编译语言正在做的事情,它将所有deps放在一个可部署的包中。我知道我提到了Java,但是不要让这吓到你,因为我们都受益于我们周围人的想法甚至是我们认为不喜欢的语言。如果我不得不赌我的钱,我会打赌浏览器,因为它提供(我认为)更成熟的处理模块的方式(按文件而不是语法组织)。 npm还为我们提供了一个很好的方式来分享我们的代码,所以两个人都赞不绝口。