$.fn
は単なるオブジェクトです。 $
のプロトタイプに新しいプロパティを追加すると魔法はありません。コード$.fn.myPlugin = function() {}
は$.prototype.myPlugin = function() {}
と同じです。
$.fn === $.prototype; // true
は、標準的な方法($('div').func()
)に$
オブジェクトの関数を呼び出すことができるようにするには、$
オブジェクトにこの機能を追加する必要があります。
あなたのes6コードには追加していません。
したがって、
import $ from 'jquery';
export default class myPlugin extends $ {
// Could i use constructor() method ???
}
手段(ほぼ)
var myPlugin = function() {};
myPlugin.prototype = Object.create($.prototype);
return { default: myPlugin };
私はあなたが$の.Fnを拡張する必要がわからないんだけど、多分あなたはそれを必要とします。
そして
import $ from 'jquery';
import myPlugin from 'myPlugin.es6';
では
var $ = require('jquery');
var myPlugin = require('myPlugin'); // a reference to the 'export.default' object from 'myPlugin.es6'
を意味するため、$.fn
オブジェクトとmyPlugin
機能との間に接続されていません。
接続をどこかに作成する必要があります。
import $ from 'jquery';
import plugin1 from 'plugin1.es6'; // should contain 'name'
import plugin2 from 'plugin2.es6';
...
import plugin10 from 'plugin10.es6';
[plugin1, plugin2, ..., plugin10].forEach(plugin => $.fn[plugin.name] = plugin);
それとも、myPlugin」にエクスポートされたオブジェクトに「初期化」メソッドを追加することができます。それはあなたが$.fn
オブジェクトに必要なすべてのプラグインを注入うplugins
のような特別なモジュールである可能性があります。最初の使用の前にそれを呼んでください:init($) { $.fn.myPlugin = myPlugin; }
など。
'意味をなさない$'を拡張します。 '$ .extend({...}) 'と同じことを意味すると思いましたか? – Bergi
新しいJavascriptの機能を見ているなら、おそらくjQueryは必要ありません。 jQueryを必要としないスタンドアロンのUIライブラリがたくさんあります。また、jQueryからネイティブ機能に切り替える方法について説明している特別なWebサイトhttp://youmightnotneedjquery.com/があります。 –