vue之模塊化開發


模塊化開發一之ES6的模塊化

javascript 原始功能

  • 在網頁開發早起,js制作作為一種腳本語言,做一些簡單的表單驗證或動畫實現等。那個時候代碼還很少的。
  • 那個時候的代碼是怎么寫的呢? 直接將代碼寫在script標簽中
  • 隨着ajax 異步請求額出現,慢慢形成了前后端分離:
  • 客戶端需要完成的事情越來越多,代碼量也與日俱增
  • 為了應對代碼量的劇增,我們通常會見代碼組織在多個js文件中,進行維護
  • 但是這種維護方式,依然不能避免一些災難性問題
    • 比如說:全局 變量的同名的問題
      • 雖然匿名閉包函數解決了變量名沖突的問題,到時同事帶來了函數不可復用的問題。
//匿名閉包函數
(function(){
  var flag = true
})
  • 模塊化思維解決沖突:
    • 在匿名函數中定義一個對象
    • 給對象添加各種需要暴露到外部的屬性和方法(不需要暴露的直接定義即可)
    • 最后將這個對象返回,並且在外部使用MoudleA 接收。
  • 上述方法:是實現模塊化雛形:
  • 常規的模塊化規范:
    • CommonJS
    • AMD
    • CMD
    • 也有ES6的Modules
  • 模塊化有兩個核心:
    • 導入模塊
    • 導出模塊

CommonJS導入和導出

  • 導出模塊中的屬性或方法
flag = true
module.exports = {
  flag:flag,
  test(a,b){
    return a+b
  },
  demo(a,b){
    return a*b
  }
}
  • 導入模塊中的屬性或方法
// commonjs 模塊
let { test,demo,flag} = require('moduleA')
// 等同於
let _mA = require('moduleA')
let test = _mA.test;
let demo = _mA.demo;
let flag = _mA.flag;

ES6的模塊化實現(重點)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
<script src="aaa.js" type="module"></script>
<script src="bbb.js" type="module"></script>
<script>

</script>
</body>
</html>

Aaa.js

var name='qzk';
var age = 18;
var flag = true;

function sum(a,b) {
  return a+b
}


// 導出變量
export {
  flag,name,age,sum
}

// 導出變量方式二
export var test1 = 'hahah';


// 直接導出函數
export function mul(num1,num2) {
  return num1+num2
}

// 直接導出類
export class Person {
  run(){
    console.log('在running');
  }
}

// 使用default 默認導出
// 在某些情況下,一個模塊中包含某個功能,我們並不希望給這個功能命名,erqie可以讓使用者自己命名 可以使用default
const address = 'shanghai';
export default address

Bbb.js

import {name,flag,age,sum} from "./aaa.js";
if (flag){
  console.log("小明是天才");
  console.log(sum(10, 20));
}
// 直接導入 export 定義的變量
import {test1} from "./aaa.js";
console.log(test1);

// 導入export 定義的函數
import {mul,Person} from "./aaa.js";

console.log(mul(10, 100));

const p = new Person();
p.run();


// 導入 默認變量或方法:此時可以自己命名這個變量或方法
import addr from "./aaa";

console.log(addr);

// 統一對某個js中的變量全部導出
import * as aaa from "./aaa.js"

console.log(aaa.mul(10, 20));



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM