Javascript 防止前端的lodash和下划线之间发生冲突
在前端,似乎没有防弹的方法来防止下划线和lodash之间的冲突 我们可以这样做:Javascript 防止前端的lodash和下划线之间发生冲突,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,在前端,似乎没有防弹的方法来防止下划线和lodash之间的冲突 我们可以这样做: <script src="/scripts/vendor/underscore/underscore.js"></script> <script> window._us = window._; delete window._; </script> <script src="/scripts/vendor/lodash/lodash.js">
<script src="/scripts/vendor/underscore/underscore.js"></script>
<script>
window._us = window._;
delete window._;
</script>
<script src="/scripts/vendor/lodash/lodash.js"></script>
窗口。u us=窗口。u;
删除窗口;
但这似乎还不够好。是否有一种方法可以同时使用这两个库或我们必须选择?在
noConflict
主题中,当下划线或lodash全局加载时,它们将覆盖全局\uuu
变量。调用noConflict()
将反转此操作,将\uu
设置为其先前的值,并返回\u
的实例。在下面的示例中,我评论了全局\uu
值在每次操作后的变化
<!-- the global _ will now be underscore -->
<script src="/scripts/vendor/underscore/underscore.js"></script>
<!-- the global _ will now be lodash -->
<script src="/scripts/vendor/lodash/lodash.js"></script>
<script>
// the global _ will now be underscore
window.lodash = _.noConflict();
// the global _ will now be undefined
window.underscore = _.noConflict();
</script>
//全局uu现在将是下划线
window.lodash=\ u0.noConflict();
//全局uu现在将是未定义的
window.underline=\.noConflict();
它们有兼容的API,为什么您要同时使用这两种API?我们使用的是lodash上不存在的下划线函数,例如389;。为什么下划线和lodash都没有noConflict()方法?(调用该方法,不要尝试手动执行。)如果您需要\uu.where
或lodash没有的其他东西,那么为什么不直接用补丁将其修补?在我看来,试图同时使用这两个函数是错误的。您还可以查看,以了解如何使用兼容的lodash函数替换下划线的u.where等函数(消除下划线依赖项的需要)