pbo*_*pbo 3 javascript modular node.js application-structure
我目前是使用JavaScript构建Windows 8应用程序团队的一员.我们使用npm和browserify来管理依赖项并将我们的模块转换为AMD浏览器友好格式.
我们遇到的一个问题是疯狂的需求路径.这是因为我们的应用程序"组件"中有一个顶级文件夹.该文件夹包含一堆嵌套的ui组件/模块.这些模块有时需要lib utils和helper,它们位于lib目录中.
例如,生活在"my/app/components/product/grid/item"中的模块可能需要一个位于"my/app/lib/helpers/view"的帮助程序模块.
require路径有点疯狂,非常难看:require("../../../../ lib/helpers/view");
我们正在尽力以模块化方式构建应用程序.现在我认为解决这个问题的正确方法是让我们的组件模块依赖于这些util辅助模块.我可以把lib帮助器放到他们自己的外部私有git仓库中,但是在给其他团队访问方面一直很痛苦(加上git private repos很慢).此外,由于这些模块仅用于应用程序,因此进行更改,推送更改,然后返回应用程序和npm更新是浪费时间.这对某些人来说没什么问题,但是如果我们真的打破了它,它可能会变得很快.
我可以在组件package.json中安装npm install"my/app/lib/helpers/view"吗?但是npm install不会自动为我们这样做.
我知道其他一些方法(NODE_PATH,可能使用npm安装钩子或npm预安装脚本),但想知道是否有其他人有类似的问题和良好的解决方案.
您可以将"my/app/components/product/grid/item"文件放入node_modules/grid/item.js,然后当您require('grid/item')在应用程序代码中时,您将获得所需的文件,并且需要更多的terser require路径语法.只需检查node_modules/grid/item.js和任何其他文件到git.该node_modules/目录甚至不需要位于顶层,因为node和browserify使用的require算法node_modules/将从当前路径一直搜索目录,/直到找到匹配的模块.
只需确保添加"grid"到"bundledDependencies"package.json中的数组,这样就不会意外地在它上面安装一些东西.
您可以阅读有关将节点模块检入git的更多信息.
阅读browserify手册中关于避免../../../../../../的部分以获取更多信息.
NODE_PATH总是一个坏主意,浏览器不支持它.永远不要使用它.
| 归档时间: |
|
| 查看次数: |
2633 次 |
| 最近记录: |