Browserify 与 Zurb Foundation Framework

Browserify with Zurb Foundation Framework

POST-解决方案编辑

这是一个 Yeoman 生成器,用于搭建一个带有 Foundation 和 Browserify 的项目:https://github.com/dougmacklin/generator-foundation-browserify


我正在尝试找出如何正确捆绑 foundation framework js with browserify

在我的项目文件夹中,我 install it 和 jQuery (它取决于):

npm install jquery foundation-sites --save

然后在我的 main.js 我有以下内容:

var $ = jQuery = require('jquery');
var foundation = require('foundation-sites');
$(document).foundation();

我包括 $ = jQuery = ... 因为如果我不这样做,我会得到一个 jQuery is not defined 错误。

然而,js 组件不起作用。例如,alert 个元素无法正确关闭。

<div data-alert class="alert-box">
    <!-- close functionality not working -->
    <a href="#" class="close">&times;</a>
</div>

如果有帮助,这里有一个 plunkr,其中包括我的 index.htmlmain.jsbundle.jspackage.jsongulpfile.js

我还在尝试使用 browserify,我应该使用 browserify-shim 还是我做错了什么?

我相信您确实需要对库进行 browserify-shim。我目前正在我的项目中这样做,并且工作正常。我正在使用 Bower 来管理基础,但它应该与 npm 类似。我的package.json中的相关设置如下:

"browser": {
  "jquery": "./src/bower_components/jquery/dist/jquery.min.js",
  "foundation": "./src/bower_components/foundation/js/foundation.js"
},
"browserify-shim": {
  "jquery": "$",
  "foundation": "foundation"
},
"browserify": {
  "transform": [
    "browserify-shim"
  ]
}

然后我可以像往常一样只需要基础,var foundation = require('foundation'); 在需要 jQuery 之后用它来初始化文档。

有了 foundation 6 和最近的 jquery ("^2.1.0"),不再需要填充。你可以只使用

global.$ = global.jQuery = require('jquery');
require('what-input');
require('foundation-sites');
$(document).foundation();

在您的 main.js 文件中。请注意,由于某种原因或另一种选择依赖于全局 jQuery(而不是使用 require)。

另请注意,alert 机制已在基础 6 中废弃,如果您想查看工作示例,请改用 closable alert callout