alias 和 varName 之间的 browserify-shim 区别 = require(“module”)
browserify-shim difference between alias and varName = require("module")
我正在使用browersify-shim
将jquery,bootstrap和我的自定义js文件捆绑到一个最终包中。
我的自定义js文件对jQuery
没有任何依赖,尽管bootstrap
有。
我有以下package.json
"browser" : {
"jquery": "path/to/jquery",
"bootstrap": "path/to/bootstrap"
},
"browserify": {
"transform": [ "browserify-shim" ]
},
"browserify-shim": {
"jquery": "$",
"bootstrap": {"depends" : "jquery:jQuery"}
},
现在在我的脚本文件中,我必须执行以下操作:
require('jquery');
require('bootstrap');
在package.json
中向"jquery"添加别名与执行var window.$ = require('jquery');
有区别吗
在我看到的一些地方,人们都在做上述两种事情,难道只有一个就足够了吗?
其次,为什么我需要显式require
jQuery
和bootstrap
,即使我的自定义js文件都不依赖于它。有没有办法告诉browserify-shim
将所有内容捆绑在package.json
中,无论如何我都会告诉那里的所有依赖项和别名。为什么重复工作需要我的脚本文件中的每个模块。
第一个问题:
在package.json中添加别名到"jquery"与执行var window.$=require('jquery'(之间有什么区别;
人们这样做的原因是他们需要jQuery存在于他们的捆绑.js之外。例如,您可能直接在索引.html中有一个$(document).ready()
处理程序,在这种情况下,您需要在window
对象上使用 jQuery。如果您在bundle.js
之外没有任何jQuery代码,那么这不是必需的,您可以在bundle.js
中根据需要使用var $ = require('jquery');
。
你的第二个问题让我觉得上述情况可能就是这样。答案是你绝对可以在你的bundle.js
之外加载Bootstrap和jQuery。
这里一个好的解决方案是通过<script></script>
标签以通常的方式将它们添加到捆绑包之外。然后,如果您在捆绑包中需要它们,您可以将它们作为全局要求,这样如果您在bundle.js
中引用它们,它们就不会加载两次。
- 为什么要对define.md和module.exports进行条件检查,以及条件何时通过
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- Module.start()已激发两次
- Typescript导入导出的类会发出require(..),从而导致浏览器错误
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 限制npm依赖模块's require(隔离)的用法
- module.js在运行iron节点时找不到模块
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- 在javascript中的require中传递变量
- 避免重新评估和动态卸载用“require”调用的对象
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- Angular2, doe's EventEmitter require zone.run?
- 在混合基本 URL 下动态加载 require.js 模块
- alias 和 varName 之间的 browserify-shim 区别 = require(“module”)
- require():使用 module.exports vs 直接分配给 “this”
- Nodejs基础:如何以及在哪里可以使用require(module)
- 在Require.js中添加一个使用module的模块.出口成为可能