如何使用cjs,如何使用wland看文

本文目錄一覽:

node 環境下一個文件如何同時支持 import 和 require

JavaScript 現在有兩種模塊。一種是 ES6 模塊,簡稱 ESM;另一種是 CommonJS 模塊,簡稱 CJS。

CommonJS 模塊是 Node.js 專用的,與 ES6 模塊不兼容。語法上面,兩者最明顯的差異是,CommonJS 模塊使用require()和module.exports,ES6 模塊使用import和export。

ES6 模塊的設計思想是盡量的靜態化,使得編譯時就能確定模塊的依賴關係,以及輸入和輸出的變數。CommonJS 和 AMD 模塊,都只能在運行時確定這些東西。

如何讓require 和 import在同一文件中使用

如果這時還要使用 CommonJS 模塊,那麼需要將 CommonJS 腳本的後綴名都改成.cjs。則.js腳本會被解釋成 CommonJS 模塊。

Node.js 要求 ES6 模塊採用.mjs後綴文件名。也就是說,只要腳本文件裡面使用import或者export命令,那麼就必須採用.mjs後綴名。Node.js 遇到.mjs文件,就認為它是 ES6 模塊,默認啟用嚴格模式,不必在每個模塊文件頂部指定”use strict”。

請問下面這個函數中設置變數cjs的作用是什麼?

cjs這個沒有什麼實際意義,他的作用大多用來控制一個循環的終止,由此減少時間開銷 ,我認為它就是一個『開關』變數

例如

int i,flag=1;

char a[10];

for(i=0 ;flag ; i++)

{

if(a[i]滿足條件)flag=0;

}

這種情況下一般要查找所有的a數組數據,而對於a中的數據沒有明確的結束條件,為此製造一個這樣變數曲控制循環

再看下一個比較難的例子:是根據變元個數產生真值表的演算法

For (j = 0 ;j n ;j + + ) / / n 為命題變元的個數

{

flag = 1 ;

k = (int) pow(2 ,n-j-1) ;

for (i = 0 ;i m;i + + ) / / m 為n 個命題變元的賦值組數,即m=pow(2,n)

{

if ( ! (i %k) ) flag = ! flag ;

if (flag) A[i ] [ j ] = 1 ;/ / 交替生成k 個0 和k 個1

else

A[i ] [ j ] = 0 ;

}

}

這裡flag沒有控制循環,而flag做賦值開關,對數組賦值

在 Node.js 中使用原生 ES 模塊方法解析

從版本

8.5.0

開始,Node.js

開始支持原生

ES

模塊,可以通過命令行選項打開該功能。新功能很大程度上得歸功於

Bradley

Farias。

1.演示

這個示例的代碼目錄結構如下:

esm-demo/

lib.mjs

main.mjs

lib.mjs:

export

function

add(x,

y)

{

return

x

+

y;

}

main.mjs:

import

{add}

from

‘./lib.mjs’;

console.log(‘Result:

‘+add(2,

3));

運行演示:

$

node

–experimental-modules

main.mjs

Result:

5

2.清單:需要注意的事情

ES

模塊:

·不能動態導入模塊。但是

動態import()

的相關工作正在進行中,應該很快就能提供支持。

·沒有元變數,如

__dirname

__filename。但是,有一個的類似功能的提案:「import.meta」。看起來可能是這樣:

console.log(import.meta.url);

·現在所有模塊標識符都是

URL(這部分在

Node.js

是新增的):

·文件

帶文件擴展名的相對路徑:

../util/tools.mjs

·庫

沒有文件擴展名,也沒有路徑

lodash

·如何更好地使

npm

庫在瀏覽器中也可用(不使用

bundler)仍有待觀察。一種可能性是引入

RequireJS

風格的配置數據,將路徑映射到實際路徑。目前,在瀏覽器中使用

bare

path

的模塊標識符是非法的。

CJS

模塊的互操作性

你可以導入

CJS

模塊,但它們總是只有默認的導出

module.exports

的值。讓

CJS

模塊支持命名導出已經在做了,但可能需要一段時間。如果你能幫忙,可以來做。

import

fs1

from

‘fs’;

console.log(Object.keys(fs1).length);

//

86

import

*

as

fs2

from

‘fs’;

console.log(Object.keys(fs2));

//

[‘default’]

·

不能在

ES

模塊中使用

require()。主要原因是:

· 路徑解析工作稍有不同:ESM

不支持

NODE_PATH

require.extensions。而且,它的標識符始終是

URL

也會導致一些細微差異。

·

ES

模塊始終以非同步方式載入,這確保了與

Web

的最大兼容性。這種載入風格並不能通過

require()

混合使用同步載入

CJS

模塊。

·

禁止同步模塊載入也可以為

Top-level

await

導入

ES

模塊保留後路(一個當前正在考慮的功能)。

3.早期版本的

Node.js

上的

ES

模塊

如果要在

8.5.0

之前的

Node.js

版本上使用

ES

模塊,請參閱

John-David

Dalton

@std/esm。

提示:如果不啟用任何可解鎖的額外功能,將在

Node.js

保持

100%

兼容原生

ES

模塊.

FAQ

什麼時候可以不帶命令行選項使用ES

模塊?

目前的計劃是在

Node.js

10

LTS

中默認可使用

ES

模塊。

進一步閱讀

有關

Node.js

和瀏覽器中

ES

模塊的更多信息:

·

「Making

transpiled

ES

modules

more

spec-compliant」

[using

ES

modules

natively

vs.

transpiling

them

via

Babel]

·

「Module

specifiers:

what’s

new

with

ES

modules?」

[Why

.mjs?

How

are

module

specifiers

resolved?

Etc.]

·

「Modules」

[in-depth

chapter

on

ES

modules

in

「Exploring

ES6」]

即將到來的

ECMAScript

提案:

·

博客:

「ES

proposal:

import()

dynamically

importing

ES

modules」

·

提案:

「import.meta」

總結

以上就是小編給大家帶來的在

Node.js

中使用原生

ES

模塊方法解析的全部內容,希望對大家有所幫助。如果您有什麼問題,可以給我留言。感謝大家對本站的支持。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/158170.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-19 00:39
下一篇 2024-11-19 00:39

相關推薦

  • 如何使用Python獲取某一行

    您可能經常會遇到需要處理文本文件數據的情況,在這種情況下,我們需要從文本文件中獲取特定一行的數據並對其進行處理。Python提供了許多方法來讀取和處理文本文件中的數據,而在本文中,…

    編程 2025-04-29
  • 如何使用jumpserver調用遠程桌面

    本文將介紹如何使用jumpserver實現遠程桌面功能 一、安裝jumpserver 首先我們需要安裝並配置jumpserver。 $ wget -O /etc/yum.repos…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Hibernate註解聯合主鍵 如何使用

    解答:Hibernate的註解方式可以用來定義聯合主鍵,使用@Embeddable和@EmbeddedId註解。 一、@Embeddable和@EmbeddedId註解 在Hibe…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • 如何使用HTML修改layui內部樣式影響全局

    如果您想要使用layui來構建一個美觀的網站或應用,您可能需要使用一些自定義CSS來修改layui內部組件的樣式。然而,修改layui組件的樣式可能會對整個頁面產生影響,甚至可能破…

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • 如何使用Python導入Random庫

    Python是一門優秀的編程語言,它擁有豐富的第三方庫和模塊。其中,Random庫可謂是最常用的庫之一,它提供了用於生成隨機數的功能。對於開發人員而言,使用Random庫能夠提高開…

    編程 2025-04-29
  • 理解agentmain方法如何使用

    如果你不清楚如何使用agentmain方法,那麼這篇文章將會為你提供全面的指導。 一、什麼是agentmain方法 在Java SE 5.0中,Java提供了一個機制,允許程序員在…

    編程 2025-04-29
  • 如何使用Python將print輸出到界面?

    在Python中,print是最常用的調試技巧之一。在編寫代碼時,您可能需要在屏幕上輸出一些值、字元串或結果,以便您可以更好地理解並調試代碼。因此,在Python中將print輸出…

    編程 2025-04-29

發表回復

登錄後才能評論