使用Lodash代替Underscore和Browserify

Jap*_*boy 6 backbone.js underscore.js browserify lodash

我现在正在尝试使用Browserify,我遇到了问题.

我总是使用Backbone和Lodash而不是Underscore,所以我为Browserify写了一些shim脚本:

shims/lodash.js:

'use strict';
/* global window,require,module */
require('../vendor/lodash.underscore-1.2.0');
module.exports = window._;
Run Code Online (Sandbox Code Playgroud)

shims/backbone.js:

'use strict';
/* global window,require,module */
require('../vendor/backbone-1.0.0');
module.exports = window.Backbone;
Run Code Online (Sandbox Code Playgroud)

app.coffee:

'use strict'
$ = require './shims/jquery'
_ = require './shims/underscore'
Backbone = require './shims/backbone'
Run Code Online (Sandbox Code Playgroud)

我实际上grunt-coffeeify用来构建Browserify模块,它在下面说错误:

Running "coffeeify:source" (coffeeify) task
Warning: module "underscore" not found from "/Users/User/proj/src/js/vendor/backbone-1.0.0.js" Use --force to continue.
Run Code Online (Sandbox Code Playgroud)

我应该更改什么才能正常工作Backbone?提前致谢.

UPDATE

不知何故,它适用于以下代码:

shims/lodash.js:

'use strict';
/* global require,module */
module.exports = require('../vendor/lodash-1.2.0');
Run Code Online (Sandbox Code Playgroud)

shims/backbone.js:

'use strict';
/* global window,require,module */
window.$ = require('./jquery');
window._ = require('./lodash');
module.exports = require('../vendor/backbone-1.0.0');
Run Code Online (Sandbox Code Playgroud)

并注释掉下面的代码backbone-1.0.0.js:

//if (!_ && (typeof require !== 'undefined')) _ = require('underscore');
Run Code Online (Sandbox Code Playgroud)

这看起来有些不对劲......

小智 3

b是 browserify 的一个实例。

b.require('lodash', {expose: 'underscore'});
Run Code Online (Sandbox Code Playgroud)

对于 jQuery,请查看我在 github 上的版本: https: //github.com/amiorin/jquery