-
- require()
參數一般是路徑,如var bar = require('./bar.js');
將路徑導入(導入文件),require會自動將導入的文件導入到當前的文件中
-
- require()的具體執行的過程
會把對應的代碼使用一個function包含起來;
然后使用eval函數執行對應的代碼;
例如:console('1+2+3').log ,會把對應的東西包成:function(){console('1+2+3').log },結果形成一個字符串,使用eval函數執行。
- require方法的分析一:
當一次分析導入的包,包含路徑和后綴名時:
-
當我們使用 require 導入一個文件的時候,如果這個文件寫了對應的路徑以及文件后綴名
那么如果這個文件中都是代碼,會把被導入(bar.js) 的文件中的代碼導入到當前文件(foo.js)
這種情況的具體執行的過程:會把對應的代碼使用一個 function 函數包含起來
然后使用 eval 這個函數來執行對應的包含起來的代碼
例如代碼是 console.log('hello world ),會把對應的東西包含成function({console.log('hello world )},形成一個字符串,然后使用eavl函數執行這個字符串
-
使用foo中定義的變量和函數,因為如果導入的文件中有函數或者變量,那么默認情況下這些函數和變量只能在這個文件內部使用。
- 如果想要在外部使用,我們需用把這些函數和變量 暴露 出來
- 需要暴露對應的函數和變量,我們需要借助exports
exports.msg = msg;
exports.info = info;
exports.showInfo = showInfo;
- 當如果有暴露的話,那么我們可以理解foo為exports
var foo = require('./dir/foo.js');
/*當如果有暴露的話,那么我們可以理解foo為exports*/
var foo = require('./dir/foo.js');
/*使用foo中定義的變量和函數
* 因為如果導入的文件中有函數或者變量,那么默認情況下這些函數和變量只能在這個文件內部使用
* 如果想要在外部使用,我們需用把這些函數和變量暴露出來*/
console.log(foo.msg);
console.log(foo.info);
foo.showInfo();
- 一般我們暴露類的時候,不能直接使用exports,
我們需要借助對應的 module
module.exports= Person;
- 導入包,在調用的頁面使用被調用的數據
var Person = require('./dir/Person.js');
var testPerson = new Person('zs',10);
console.log(testPerson.name);
console.log(testPerson.age);
-
- require方法的分析二:
當導入的文件沒有寫路徑,只是寫了后綴名時:
那么會默認去node_modules文件夾下面去找同名的文件
/*如果導入一個文件,如果這個文件沒有寫路徑,只是寫了后綴名
* 那么會默認去node_modules文件夾下面去找同名的文件*/
var foo = require('foo.js');
console.log(foo.msg);
console.log(foo.info);
-
- require方法的分析三:
當導入的文件沒有寫路徑,沒有后綴名的時候:
那么會默認加載node_module下面同名的js文件
-
如果js文件不存在,會把這個包當成一個文件夾,加載下面的index.js文件
加載index.js文件的具體原理:是這樣如果把一個包當成文件夾的話,那么一般
這個包中會有一個配置文件,這個配置文件是package.json
在這個文件中的'main'的字段的value值決定為我們加載那個js文件
默認情況下,加載index.js文件
{
"name": "application-name",
"version": "0.0.1",
//新添加上去的,改變默認加載的文件
"main": "test.js"
}
/*如果導入一個包,如果這個包沒有寫路徑和后綴名,那么會默認加載node_module下面同名的js文件
* 如果js文件不存在,會把這個包當成一個文件夾,加載下面的index.js文件
* 加載index.js文件的具體原理:是這樣如果把一個包當成文件夾的話,那么一般
* 這個包中會有一個配置文件,這個配置文件是package.json
* 在這個文件中的'main'的字段的value值決定為我們加載那個js文件
* 默認情況下,加載index.js文件*/
var foo = require('foo');
console.log(foo.msg);
console.log(foo.info);