1. 程式人生 > 實用技巧 >【Vue】04 模組化開發演變

【Vue】04 模組化開發演變

JS最初的目的是用來做表單驗證和動畫效果,可以讓網頁更加生動。

但是使用Ajax,前後端分離,頁面承擔了更多的事情,JS的程式碼量暴增,程式碼管理維護逐漸困難

我們需要將JS程式碼抽取出來,模組化處理,

但是問題也出現了,各個模組的變數會汙染。

JS檔案a:

flag = true;

JS檔案b:

flag = false;

頁面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<script src="js/a.js"></script> <script src="js/b.js"></script> <script type="text/javascript"> if (flag) console.log("flag的值為:" + flag); </script> </head> <body> </body> </html>

效果:

可以發現,flag是false,但是我們希望的是使用A檔案的flag,這就是變數汙染

使用模組作為出口:

A檔案:

moduleA = (function () {
    return true;
})();


B檔案:

moduleB = (function () {
    return false;
})();

頁面使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/a.js"></script>
    <script src="js/b.js"></script>
    <script type="text/javascript">
        console.log(
"flag的值為:",moduleA); </script> </head> <body> </body> </html>

效果:

這樣我就明確知道我需要的是什麼模組的變量了

我們希望引用模組的時候不止一個變數應該被使用:

所以我們可以以一個物件的形式去返回:

moduleB = (function () {
    let obj = {};
    obj.property1 = "sadas";
    obj.property2 = true;
    obj.property3 = ['sdd', 'dsd', 'dsa', 'dsd', 'sds',];
    obj.property4 = {
        prop1 : "sadas"
    };
    obj.property5 = 1000;
    return obj;
})();

效果:

這就是模組化的雛形