この記事では、主にコードの形式で js でのエクスポートについて詳しく説明します。お役に立てれば幸いです。
関連ビデオの推奨事項: 1.JavaScriptクイックスタート_翡翠少女般若心経シリーズ
関連マニュアルの推奨事項: 1.JavaScript中国語リファレンスマニュアル
ライティング1
exports.hello = function(){ console.log(‘world’); }
ライティング2
var f = { hello : function(){ console.log(‘world’); } } module.exports = f;
書くモジュールのファイル名がhello.jsだとすると、以下のコードを実行します
var h = require(‘hello’); h.hello();
上記2つの書き方の場合、このコードを実行した結果は同じです。
module.exports:
例:
1、
//a.js module.exports = ['aaa',18] //b.js var a= require('a')console.log(a[1]) //输出18
2、
//a.js module.exports =function(){ this.show=function(){ console.log('hahah~'); } } //b.js var a= require('a'); var obj = new a();obj .show();//输出hahah~ module.exports
私の理解は次のとおりです: module.exportsに割り当てるもの、require後に何かを取得します
exports : //a.js exports.show =function(){ console.log('hahah~'); } //b.js var a= require('a'); a.show();//输出hahah~
exportsはすでにオブジェクトになっている場合、このオブジェクトに属性を追加すると、エクスポート オブジェクトが取得されます。
ただし、exports={}
のように、新しいオブジェクトをエクスポートに割り当てることはできません。module.exports にすでにコンテンツがある場合、エクスポートのすべての操作が無効になることに注意してください
プロトタイプについて話しましょう。もう一度、プロトタイプは何に使用されますか? プロトタイプは、C++ の親クラスと同じです
1、
//a.js module.exports =function(){ } module.exports.prototype.show = function(){ console.log('hahah~'); } //b.js var a= require('a'); var obj = new a() obj.show()//输出hahah~
最後に、クラスメソッドについて話しましょう。クラスに関しては、module.exports を使用する必要があります。
ここに栗があります
1、
//a.js module.exports =function(){ } module.exports.show = function(){ console.log('hahah~'); } //b.js var a= require('a'); a.show()//输出hahah~ ##module.exports与exports的区别
すべてのnode.js実行ファイルは自動的にモジュールオブジェクトを作成します。同時に、モジュールオブジェクトはexportsと呼ばれる属性を作成し、初期化された値は{}
module.exports = {}; Node.js为了方便地导出功能函数,node.js会自动地实现以下这个语句 foo.js exports.a = function(){ console.log('a') } exports.a = 1 test.js var x = require('./foo'); console.log(x.a)です。
参照 この時点で、exports が module.exports の値を参照していることは、誰もが答えを見たと思います。
module.exports が変更されても、exports は変更されません。また、モジュールがエクスポートされるとき、実際のエクスポートの実行は、exports ではなく module.exports です
次の例をもう一度見てください
foo.js exports.a = function(){ console.log('a') } module.exports = {a: 2} exports.a = 1 test.js var x = require('./foo'); console.log(x.a) result: 2
module.exports の exports変更後は無効となります。
少しは啓発されたと感じ始めていますか? ここでは、オープンソース モジュールでよく見られる使用方法をいくつか紹介します。
##module.exports = View function View(name, options) { options = options || {}; this.name = name; this.root = options.root; var engines = options.engines; this.defaultEngine = options.defaultEngine; var ext = this.ext = extname(name); if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); this.path = this.lookup(name); } module.exports = View;
JavaScript には、関数はオブジェクト、ビューはオブジェクト、 module.export =View という格言がありますが、これはビュー オブジェクト全体をエクスポートすることと同じです。
外部モジュールが呼び出すと、View のすべてのメソッドを呼び出すことができます。ただし、プロトタイプで作成されたメソッドは View のプライベート メソッドであるため、呼び出すことができるのは View の静的メソッドのみであることに注意してください。
foo.js function View(){ } View.prototype.test = function(){ console.log('test') } View.test1 = function(){ console.log('test1') } module.exports = View test.js var x = require('./foo'); console.log(x) //{ [Function: View] test1: [Function] } console.log(x.test) //undefined console.log(x.test1) //[Function] x.test1() //test1 ##var app = exports = module.exports = {};
実際、原理を理解すると、この書き方が少し冗長であることを理解するのは難しくありません。実際には、モジュールの初期化環境をクリーンにするためです。同時に、 module.exports が指すオブジェクトを変更した後でも、 module.exports = createApplication が module.exports とエクスポートを無効にするには、exports = module メソッドを渡して元の特性を復元します。
以上がjsでのエクスポートの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。