本文介紹了Javascript(es2016) import和require用法和區別詳解,分享給大家,具體如下:
寫個簡單js文件,假設名字為:lib.js 。 假設內容如下:
export const sqrt = Math.sqrt;export function square(x) { return x * x;}export function diag(x, y) { return sqrt(square(x) + square(y));}
這樣就可以在其他地方對lib中定義的屬性和方法進行引用,引用方法有兩種,也就時import和require。
//方法一import { square, diag } from 'lib';console.log(square(11)); // 121console.log(diag(4, 3));//方法兒import * as lib from 'lib';square = lib.square;
還可以設置默認的導出信息,就需要崽lib.js中定義 export default {}。default后面可以接一個參數,也可以接一個數組。書寫方法為:
//------ module1.js ------export default 123;//------ module2.js ------const D = 123;export { D as default };
通常比較習慣用第一種。然后用import就可以得到這個數組或則參數。但是import只能用于靜態導入,就是必須在文件開始的時候,在最上層就寫好。而require就可以實現動態加載。
加載方式 | 規范 | 命令 | 特點 |
---|---|---|---|
運行時加載 | CommonJS/AMD | require | 社區方案,提供了服務器/瀏覽器的模塊加載方案。非語言層面的標準。只能在運行時確定模塊的依賴關系及輸入/輸出的變量,無法進行靜態優化。 |
編譯時加載 | ESMAScript6+ | import | 語言規格層面支持模塊功能。支持編譯時靜態分析,便于JS引入宏和類型檢驗。動態綁定。 |
const incrementCounter = function ({dispatch,state}){ dispatch(‘INCREMENT‘)}export default { incrementCounter}//requirelet myAction = require(‘xxxxx‘);myAction.default.incrementCounter()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答