浏览器shim和jquery依赖

时间:2014-07-09 14:48:26

标签: jquery gulp browserify shim browserify-shim

我正在使用gulp构建我的脚本,我试图将jquery 1.11“shim”到我的js脚本中,以便它可以使用它,我现在的代码:

SimpleScript:

var $ = require('jquery')(window);

var SimpleScript = {

    init: function(){

        console.log('xxx');

    }
}

$(document).ready(function() {
    SimpleScript.init()
});

module.exports = SimpleScript;

skeleton.js:

var $ = require('jquery')(window);
var areaMng = require('./SimpleScript.js');

Gulfile.js

var gulp = require('gulp');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var browserify = require('gulp-browserify');
var rename = require('gulp-rename');
var gzip = require('gulp-gzip');

gulp.task('js', function() {
    gulp.src('app/assets/scripts/skeleton.js')
        .pipe(browserify({
            shim: {
                jquery: {
                    path: 'public/js/jquery.min.js',
                    exports: '$'
                }
            }
        }))
        .pipe(gulp.dest('public/js'));

});

所有这一切都非常顺利...... 但 我收到一个错误,$ - 未在 - >中定义SimpleScript.init()调用 - >的console.log( 'XXX');

当然,当我尝试使用 - >访问chrome控制台中的jquery时“$”未定义

* 备注 - 创建的文件里面有jquery 1.11,我可以看到它。 - 我尝试引用jquery,jQuery和$都是一样的。

1 个答案:

答案 0 :(得分:2)

解决了!!

因为我安装了jquery,所以使用同名“jquery”的shim文件导入效果不佳。

这应该是这样的:

SimpleScript:

var $ = require('jQuery');

var SimpleScript = {

    init: function(){

        console.log('xxx');

    }
}

$(document).ready(function() {
    SimpleScript.init()
});

module.exports = SimpleScript;

Gulfile.js

var gulp = require('gulp');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var browserify = require('gulp-browserify');
var rename = require('gulp-rename');
var gzip = require('gulp-gzip');

gulp.task('js', function() {
    gulp.src('app/assets/scripts/skeleton.js')
        .pipe(browserify({
            shim: {
                jQuery: {
                    path: 'public/js/jquery.min.js',
                    exports: '$'
                }
            }
        }))
        .pipe(gulp.dest('public/js'));

});