How to use my own version of jQuery with browserified modules

前端 未结 2 1643
你的背包
你的背包 2021-01-25 06:50

(I should clarify up front: My question is about closures and client module patterns in Javascript. It\'s not about how to use jQuery.noConflict().)

I\'ve got a bit of J

相关标签:
2条回答
  • 2021-01-25 07:41

    It could be that I'm the only person who ever gets into this situation (Browserify + an asynchronously loaded library that I want to use in all my modules), but I'll share the workaround that I've come up with just in case...

    I ended up defining a module that asynchronously loads jQuery and then notifies listeners when it's ready. It's basically a very simple support for asynchronous 'requires'. All of my modules that want to use jQuery then end up with a small bit of boilerplate code like this:

    var $; require('./jquery-provider').onLoad(function(jQuery) { $=jQuery; });
    

    It's not perfect but it's simple. And it works because the entry point of my library kicks off my 'jQuery provider' and waits for a ready callback before it calls to all my other modules. So although my modules all get aggressively executed by Browserify as it resolves all the dependencies, none of the functions inside my modules get run until my required library is available and has been passed around to them.

    (If this pattern is useful to anyone else, I can share more code.)

    0 讨论(0)
  • 2021-01-25 07:51

    in my app.js I have this

    var $ = require('jquery')(window);  global.jQuery = require("jquery");
    

    and then use download from npm "plugin" and import de module and execute, like this.

    var plugin    = require('plugin');
    plugin();
    

    and works fine.

    0 讨论(0)
提交回复
热议问题