成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript之模塊化開發(fā)

MartinHan / 3027人閱讀

摘要:實現(xiàn)了按需加載與的區(qū)別對于依賴的模塊提前執(zhí)行,而是延遲執(zhí)行推崇依賴就近推崇依賴前置之前之后模塊化方案是最規(guī)范的方案未來也是主流對于我們來說也是經(jīng)常使用與熟悉的不過現(xiàn)在的瀏覽器還不兼容使用需要轉(zhuǎn)碼使用導(dǎo)出模塊使用導(dǎo)入模塊參考原文

javaScript 的模塊化
為什么需要模塊化開發(fā)?

隨著代碼復(fù)雜程度的提高, 項目也變得越來越難維護, JavaScript模塊化 也因此油然而生, 這應(yīng)該是大家最熟悉的一種加載方式, 但是缺點也比較明顯

所有的模塊都處于全局作用域下, 容易造成命名沖突

依賴關(guān)系不明顯, 比如 main.js 中有使用 jquery, 那么 jquery 就一定要先加載,
但是從引入方式中我們無法直觀的察覺依賴關(guān)系, 不利于維護





CommonJs

一個文件就是一個模塊, 其內(nèi)部定義的變量, 方法都處于該模塊內(nèi), 不會對外暴露.

主要語法:

使用 require 來加載模塊

使用 exports 或者 module.exports 暴露模塊中的內(nèi)容

demo

新建 a.js, 導(dǎo)出 name 和 sayHello

// a.js
const name = "Bob"
function sayHello(name) {
  console.log(`Hello ${name}`)
}
module.exports.name = name
module.exports.sayHello = sayHello

在 b.js 中引入 a 并調(diào)用

// b.js
const a = require("./a")
const name = a.name
console.log(name) // Bob
a.sayHello(name) // Hello Bob

由于 CommonJs 是同步加載的模塊的, 在服務(wù)端(node), 文件都在硬盤上, 所以同步加載也無所謂, 但是在瀏覽器端, 同步加載就體驗不好了. 所以 CommonJs 主要使用于 node 環(huán)境下.

AMD

AMD 全稱為 Asynchromous Module Definition(異步模塊定義), 實現(xiàn)了異步加載模塊. require.js 實現(xiàn)了 AMD 規(guī)范

主要語法:

require([module], callback) // 導(dǎo)入

define(id, [depends], callback) // 導(dǎo)出模塊

demo

新建 a.js, 輸入以下內(nèi)容

define(function() {
  let alertName = function(str) {
    alert("I am " + str)
  }
  let alertAge = function(num) {
    alert("I am " + num + " years old")
  }
  return {
    alertName: alertName,
    alertAge: alertAge
  }
})

在 test.html 中調(diào)用 a 模塊





    
    
    
    Document



    
    


能夠異步加載模塊, 適合在瀏覽器中運行, 但是不能夠按需加載, 必須提前加載模塊

CMD

CMD規(guī)范 是阿里的玉伯提出, sea.js 實現(xiàn)。 實現(xiàn)了按需加載

與 AMD 的區(qū)別:

對于依賴的模塊 AMD 提前執(zhí)行,而 CMD 是延遲執(zhí)行

CMD 推崇依賴就近, AMD 推崇依賴前置

    //AMD2.0之前
    require(["./a", "./b"], function(a, b) {
         a.doSomething();
         b.doSomething();
    })
   // AMD2.0之后
   define(["./a", "./b"], function(a, b) {
         a.doSomething();
         b.doSomething();
   })
   
   // CMD
   define(function(require, exports, module) {
         var a = require("./a");
         a.doSomething();
         var b = require("./b");
         b.doSomething();
   })

ES6

ES6 模塊化方案是最規(guī)范的方案, 未來也是主流, 對于我們來說也是經(jīng)常使用與熟悉的. 不過現(xiàn)在的瀏覽器還不兼容, 使用需要 babel 轉(zhuǎn)碼

使用 export 導(dǎo)出模塊

使用 import 導(dǎo)入模塊

import Vue from "vue"
import axios from "axios"
import { mapState, mapMutations, mapActions } from "vuex"

export default {
  created() {
    console.log("Hello World")
  }
}

參考
http://www.hangge.com/blog/ca...
https://www.imooc.com/article...
原文
https://github.com/chenyinkai...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98371.html

相關(guān)文章

  • Javascript塊化編程模塊的寫法】

    摘要:模塊化編程,已經(jīng)成為一個迫切的需求。但是,不是一種模塊化編程語言,它不支持類,更遑論模塊了。本文總結(jié)了當(dāng)前模塊化編程的最佳實踐,說明如何投入實用。就是模塊的基本寫法。這樣做除了保證模塊的獨立性,還使得模塊之間的依賴關(guān)系變得明顯。 隨著WEB的快速崛起,網(wǎng)頁越來越像桌面程序,需要一個團隊分工協(xié)作、進度管理、單元測試等等......開發(fā)者不得不使用軟件工程的方法,管理網(wǎng)頁的業(yè)務(wù)邏輯。 Ja...

    Riddler 評論0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同學(xué)去面試,做了兩道面試題全部做錯了,發(fā)過來給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha) - 前端 - 掘金來自《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實現(xiàn) 選擇排序 簡介 算法實現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...

    enali 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金 最近群里有人發(fā)了下面這題:實現(xiàn)一個函數(shù),運算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...

    王晗 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金 最近群里有人發(fā)了下面這題:實現(xiàn)一個函數(shù),運算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...

    xiaochao 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金最近群里有人發(fā)了下面這題:實現(xiàn)一個函數(shù),運算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金從原博客遷移過來...

    KitorinZero 評論0 收藏0

發(fā)表評論

0條評論

MartinHan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<