前端节点NPM模块和相同依赖项的多个下载

时间:2016-08-04 18:17:26

标签: node.js npm dependencies shared

具有前端开发问题的Node / NPM新手。我理解NPM类型模块的一个优点是它的依赖项本身安装在node_modules中。模块总是拥有他们需要的代码,并且外部库不会发生冲突。

也就是说,这似乎会导致客户端多次下载相同的lib + ver(例如,jquery v.X)。什么是指定模块需要依赖项的技术,但如果依赖项已经在站点/页面上可用,它不应该打包该代码?所述技术是否涉及使共享lib + ver可用的父模块?

或者,各种前端模块是否应该重新下载与页面上其他模块可能已经下载的相同的lib + ver?

1 个答案:

答案 0 :(得分:0)

客户端只会从该文件夹中获取所需的文件,因此如果客户端只抓取一次,则会以HTML格式链接。 NPM自动处理依赖项重复。

话虽如此,通常您只想在不泄露整个服务器结构的情况下向客户端提供静态文件夹。这可以通过以下方式实现:

app.use(express.static('server/public')

其中'server / public'是您要提供的相对于server.js文件的目录。在这种情况下,“public”包含从HTML页面链接的所有链接视图文件,样式表,JS文件等。您也不需要在那里移动该模块的依赖项。

这样做的缺点是你必须手动将依赖项移动到公共文件夹(我经常创建一个'vendor'目录)并从那里链接。这是更多的工作,但从长远来看它更有效,更安全。

注意:使用静态文件夹提供文件时,HTML链接将从该文件夹的相对路径提供。