1. 程式人生 > 其它 >125. 驗證迴文串

125. 驗證迴文串

什麼是模組?

當一個js檔案可以獨立完成一個功能的時候,這個js檔案就是一個模組;

當一個多個.js檔案共同完成一個功能的時候,這個些js檔案就是一個模組。

模組就是module(模組的意思)

HTML的多檔案引用

HTML的宿主環境中,多一個js檔案公用一個html宿主,此時它們的作用域是公用的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge
"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="./1.js"></script> //var a=1 <script src="./2.js"></script> //console.log(a) </body> </html>

,

此時檢視控制檯輸出1,因為此時01.js檔案中的a是全域性變數也就是window的屬性,所以02.js是可以使用window.a的也就是1

Node.js的多檔案引用

┣ app.js

┣ 01.js

//app.js檔案
require("./1.js");
console.log("app.js檔案")

//1.js檔案
console.log("我是1.js檔案")

此時node app.js可以看到

在Node.js中require()引用檔案在引用的同時也在執行,所以就能過輸入兩個檔案的內容

Node.js中的js檔案作用域天生隔離

//1.js
var a = 1;


//app.js
require("./1.js")
console.log(a)

此時node app.js檔案會報錯

js檔案在NodeJS中作用域隔離,因為NodeJS沒有window物件,所以此時會報錯

此時我們想讓檔案之間能夠相互通訊,需要讓檔案自己暴露

exports命令

//1.js
var a = 1;
// 向外暴露a引數
exports.a = a;


//app.js
var a = require("./1.js")
// 輸入a檔案的a引數
console.log(a.a)

此時在node app.js檔案,

注意:

  • 暴露的時候必須是exports.** = **,此時**必須是統一的,必要有差異化
  • 接收檔案的時候,檔名是什麼就用什麼命名

exports的名稱空間

┣ app.js

┣ 01.js

//1.js
var a = 1;
// 向外暴露a引數
exports.a = a;


//app.js
var a = require("./1.js")
// 輸入a檔案的a引數
console.log(a.a)

我們在輸出1.js檔案的a值的時候使用的是a.a,這個a就是exports返回的一個物件

這樣做的好處是什麼?這種寫法天生有自己的名稱空間

┣ app.js

┣ round.js

┣ rectangle.js

我們在新建兩個檔案

//round.js
function area(r){
    return 3.14 * r * r
  }
  exports.area = area;
  

//rectangle.js
function area(a,b){
    return a * b;
  }
  exports.area = area;
  

//app.js
varround=require("./round"); varrectangle=require("./rectangle");
console.log(round.area(5)); console.log(rectangle.area(5,6));

exports是可以暴露多個引數的

比如round.js

function area(r){
  return 3.14 * r * r
}
function perimeter(r) {
  return 3.14 * 2 * r;
}
exports.area = area;
exports.perimeter = perimeter;