前端模块化开发遇到的问题,zepto引入报错

直接上代码吧:
我的zepto是直接npm install zepto

// app.js

"use strict";

import $ from 'zepto'

let str = "ok2s"
$("p").html(str)

编译后chrome的报错:

Uncaught TypeError: Cannot read property 'createElement' of undefined 
...

我用的是gulp的browserify编译的,因为实际项目中有多个入口文件,所以用了glob

// gulpfile.js
gulp.task("browserify", function () {

    glob('src/js/**.main.js', function(err, files) {
      if(err) done(err);

      var tasks = files.map(function(entry){
          return browserify({entries: [entry]})
              .transform(babelify,{  //此处babel的各配置项格式与.babelrc文件相同
                presets: [
                  'es2015'  //转换es6代码
                ]
              })
              .bundle()
              .pipe(source(entry))
              .pipe(rename(function(path){
                path.basename += '.bundle';
                path.dirname = ""
              }))
              .pipe(gulp.dest('dist/js/main'));
      });
      return es.merge.apply(null, tasks);
    })

});

我项目文件应该没问题,因为我用 import $ from 'jquery' 是没问题的,

求前辈指教,谢谢

阅读 6k
2 个回答

jQuery 支持 CMD, 但是 Zepto 并不支持, 所以用 jQuery 来说项目文件没问题才是最大问题.

一个办法是把 Zepto 改成支持 CMD 的, 这个办法改动原本的 Zepto 源代码, 我不是很推荐.

另外就是不要把 Zepto 打包. 本身 Zepto 也不会经常更新, 打包之后别的模块一更新, Zepto 还要被打包一遍, 徒然增加更新包的体积, 纯属浪费.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题