精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript 導入映射現在支持跨瀏覽器

開發 前端
為了成功的在模塊解析之前對其進行解析。這個 script 標簽必須放在文檔中第一個 <script type="module"> 標簽之前(最好放在 <head>中),另外,目前每個 HTML 只允許編寫一個 Import maps 。

大家好,我是Echa。

好消息, 2023年4月1號 愚人節這天 JavaScript import maps (導入映射)現在支持跨瀏覽器了,下面小編詳細介紹:

全文大綱

  1. 如何不基于構建工具優雅的實現模塊導入?
  2. JavaScript import maps 現在支持跨瀏覽器

如何不基于構建工具優雅的實現模塊導入?

當 ES Module 最開始作為一種新的 JavaScript 模塊化方案在 ES6 中被引入的候,其實是通過在 import 語句中強制指定相對路徑或絕對路徑來實現的。

import dayjs from "https://cdn.skypack.dev/dayjs@1.10.7"; // ES modules
console.log(dayjs("2023-04-1").format("YYYY-MM-DD"));

這和其他常見的模塊化系統(例如 CommonJS)的工作方式略有不同,并且在使用像 webpack 這樣的模塊打包工具的時候會使用更簡單的語法:

const dayjs = require('dayjs') // CommonJS

import dayjs from 'dayjs'; // webpack

在這些系統里,模塊導入語句通過 Node.js 運行時或相關構建工具映射到特定(版本)的文件。用戶只需要在 import 語句中直接編寫模塊說明符(通常是包名),模塊就可以自動處理。

由于開發人員已經熟悉了這種從 npm 導入包的方式,因此必須要先經過一個的構建步驟才能確保以這種方式編寫的代碼可以在瀏覽器中運行。

Import maps 就可以解決這個問題,它可以將模塊說明符(包名)自動映射到它的相對或絕對路徑。從而讓我們不使用構建工具也能使用簡潔的模塊導入語法。

如何使用 Import maps

我們可以通過 HTML 中的 <script type="importmap"> 標簽來指定一個 Import maps。

<script type="importmap">
{
"imports": {
"dayjs": "https://cdn.skypack.dev/dayjs@1.10.7",
}
}
</script>

為了成功的在模塊解析之前對其進行解析。這個 script 標簽必須放在文檔中第一個 <script type="module"> 標簽之前(最好放在 <head>中),另外,目前每個 HTML 只允許編寫一個 Import maps 。

<script type="module">
import dayjs from 'dayjs';

console.log(dayjs("2023-04-01").format("YYYY-MM-DD"));
</script>

在 script 標簽內,我們可以通過一個 JSON 對象來為文檔中的腳本所需導入的模塊指定所有必要的映射。一個典型的 importmap 結構如下所示:

<script type="importmap">
{
"imports": {
"react": "https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js",
"react-dom": "https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js"
"square": "./modules/square.js",
"lodash": "/node_modules/lodash-es/lodash.js"
}
}
</script>

在上面的 import 對象中,每個屬性對應一個映射。映射的左側是導入說明符的名稱(一般是包名),而右側是說明符需要映射到的相對或絕對路徑。在映射中指定相對路徑時,必須要確保它們始終以 /、../或 ./ 開頭。

另外,importmap 中聲明的包并不一定意味著它一定會被瀏覽器加載。頁面上的腳本沒有使用到的任何模塊都不會被瀏覽器加載,即便你在 importmap 中聲明了它。

編寫好 importmap 之后,你就可以在后面的腳本中直接使用 ES Module 語法了。

<script type="module">
import { cloneDeep } from 'lodash';

const objects = [{ a: 1 }, { b: 2 }];

const deep = cloneDeep(objects);
console.log(deep[0] === objects[0]);
</script>

外部映射

你還可以在外部文件中指定你的映射,然后使用 script 的 src 屬性鏈接到這個文件(Content-Type Header 必須要設置為 application/importmap+json 才能正常加載)。

<script type="importmap" src="importmap.json"></script>

不過盡量不要使用這種方式,因為它的性能比直接內聯編寫要差。

映射整個包

除了將一個說明符映射到模塊之外,你還可以將一個說明符映射到包含多個模塊的包:

<script type="importmap">
{
"imports": {
"lodash/": "/node_modules/lodash-es/"
}
}
</script>

這種編寫方式可以讓你直接導入指定路徑中的任何模塊,相應的,瀏覽器也會把所有組件模塊下載下來。

<script type="module">
import toUpper from 'lodash/toUpper.js';
import toLower from 'lodash/toLower.js';

console.log(toUpper('ConardLi'));
console.log(toLower('ConardLi'));
</script>

動態映射

你也可以基于一些條件在 script 中添加一個動態映射,比如,在下面的示例中我們通過判斷是否存在 IntersectionObserver API 來導入不同文件:

<script>
const importMap = {
imports: {
lazyload: 'IntersectionObserver' in window
? './lazyload.js'
: './lazyload-fallback.js',
},
};

const im = document.createElement('script');
im.type = 'importmap';
im.textContent = JSON.stringify(importMap);
document.currentScript.after(im);
</script>

使用同一模塊的不同版本

使用 importmap 我們可以將不同的版本的模塊映射到不同的包名中:

<script type="importmap">
{
"imports": {
"lodash@3/": "https://unpkg.com/lodash-es@3.10.1/",
"lodash@4/": "https://unpkg.com/lodash-es@4.17.21/"
}
}
</script>

另外你還可以通過 scopes 來實現同一個包不同模塊的更細粒度的版本控制:

<script type="importmap">
{
"imports": {
"lodash/": "https://unpkg.com/lodash-es@4.17.21/"
},
"scopes": {
"/static/js": {
"lodash/": "https://unpkg.com/lodash-es@3.10.1/"
}
}
}
</script>

/static/js 下的模塊會使用 3.10.1 版本,而其他模塊會使用 4.17.21 版本。

兼容性

這項技術目前在 Chrome 和 Edge 瀏覽器 89 及更高版本提供了全面支持,但 Firefox、Safari 和一些移動瀏覽器還沒有支持。我們可以通過下面的代碼來判斷瀏覽器的支持情況:

if (HTMLScriptElement.supports && HTMLScriptElement.supports('importmap')) {
// import maps is supported
}

對于沒有提供支持的瀏覽器,我們可以使用下面

這個 polyfill:https://github.com/guybedford/es-module-shims

另外官方也推薦了一些其他 importmap 相關的 polyfill 和工具:

JavaScript import maps 現在支持跨瀏覽器

隨著 Safari 16.4 的發布,WebKit 引擎也支持了 Import Mpas。

ES模塊是在web應用程序中包含和重用JavaScript代碼的一種現代方式。它們受到現代瀏覽器的支持,并提供了一些優于舊的非模塊化JavaScript開發方法的優勢。

使用ES模塊的一種現代方式是使用<script type=“importmap”>標記。此標記允許您定義外部模塊名稱到其相應URL的映射,這使得在代碼中包含和使用外部模塊變得更容易。

要使用<script type=“importmap”>方法,首先需要將其添加到HTML文檔的<head>部分。在標記中,您可以定義一個JSON對象,該對象將模塊名稱映射到相應的URL。例如:

<script type="importmap">
{
"imports": {
"browser-fs-access": "https://unpkg.com/browser-fs-access@0.33.0/dist/index.modern.js"
}
}
</script>

此代碼定義了一個名為“browser fs access”的外部模塊,并將其映射到unpkg CDN上托管的瀏覽器fs訪問庫的URL。有了這個映射,現在可以使用import關鍵字在代碼中包含瀏覽器fs訪問庫。請注意,import關鍵字僅在具有type=“module”屬性的腳本標記中可用。

<button>Select a text file</button>
<script type="module">
import {fileOpen} from 'browser-fs-access';

const button = document.querySelector('button');
button.addEventListener('click', async () => {
const file = await fileOpen({
mimeTypes: ['text/plain'],
});
console.log(await file.text());
});
</script>

與較舊的非模塊化JavaScript開發方法相比,使用<script type=“importmap”>標記和import關鍵字提供了一些好處。它允許您清晰明確地指定代碼所依賴的外部模塊,這使得代碼更容易理解和維護。總的來說,使用帶有<script type=“importmap”>標簽的ES模塊是在web應用程序中包含和重用JavaScript代碼的一種現代而強大的方式。您可以按如下方式提供功能檢測支持:

if (HTMLScriptElement.supports('importmap')) {
// The importmap feature is supported.
}

最后

一臺電腦,一個鍵盤,盡情揮灑智慧的人生;幾行數字,幾個字母,認真編寫生活的美好;

一 個靈感,一段程序,推動科技進步,促進社會發展。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2009-03-23 08:50:53

瀏覽器Expression

2017-01-05 09:07:25

JavaScript瀏覽器驅動

2010-08-17 14:22:47

JavaScript兼容性

2015-01-21 15:45:50

斯巴達瀏覽器

2016-10-09 08:38:01

JavaScript瀏覽器事件

2010-05-31 10:11:02

2025-07-23 08:40:33

瀏覽器前端開發

2010-09-15 09:12:03

JavaScript瀏覽器兼容

2022-04-07 09:00:00

跨瀏覽器測試自動化服務異常

2022-04-29 09:11:14

CORS瀏覽器

2010-09-14 14:18:09

CSS跨瀏覽器開發

2009-02-19 09:42:01

SliverlightChrome微軟

2021-08-06 10:10:47

Safari開發者瀏覽器

2012-04-23 13:43:02

HTML5瀏覽器

2020-03-12 11:29:51

JavaScript瀏覽器語言

2012-03-20 11:07:08

2012-03-20 11:31:58

移動瀏覽器

2012-03-19 17:25:22

2012-03-20 11:41:18

海豚瀏覽器

2025-07-29 07:52:59

點贊
收藏

51CTO技術棧公眾號

四虎永久精品在线| 久久99久久| 亚洲电影av| 国产亚洲综合久久| 亚洲在线观看网站| 国产精品xx| 国产日产欧美一区二区视频| 亚洲www在线| 波多野结衣视频网站| 欧美wwwww| 精品亚洲永久免费精品| 污污的网站免费| caoporn视频在线观看| 亚洲国产高清不卡| 国产精品一区二区欧美| 中文字幕乱码在线观看| 亚洲青色在线| 久久精品国产精品亚洲| 李宗瑞91在线正在播放| 亚洲码欧美码一区二区三区| 欧美午夜寂寞影院| 久久精品视频16| 影音先锋在线播放| 中文一区二区在线观看| 久久精品人成| 日韩一级免费视频| 国产高清不卡一区二区| 国产精品亚洲美女av网站| 日韩特黄一级片| 欧美精品网站| 久久亚洲精品视频| 成人一级片免费看| 精品美女视频| 亚洲欧美一区二区三区久久 | 蜜臀va亚洲va欧美va天堂 | 精品视频在线观看日韩| 久久久男人的天堂| 涩爱av色老久久精品偷偷鲁 | 日韩中文字幕免费观看| 国产伦精品一区二区三区免费| 国产精品高清在线观看| wwwxxx亚洲| 亚洲欧洲一区| 97香蕉超级碰碰久久免费的优势| 丰满少妇高潮久久三区| 清纯唯美综合亚洲| 一区二区三区视频免费| 成人免费看aa片| 中文字幕中文字幕精品| 国产丝袜高跟一区| 懂色av粉嫩av蜜乳av| 久久九九热re6这里有精品| 欧美不卡一区二区| 亚洲国产精品第一页| 99精品国产一区二区三区2021 | 少妇一级淫免费观看| 91成人短视频| 亚洲成av人片在线观看香蕉| 国产免费a级片| 国产精品chinese在线观看| 日韩精品一区二区三区swag | 欧美激情xxxx| 国产无遮挡裸体免费视频| 狠狠爱www人成狠狠爱综合网 | 热这里只有精品| 精品黄色免费中文电影在线播放| 亚洲欧美激情插| 欧美日韩dvd| 欧美aa在线| 在线观看91精品国产入口| 国产一级特黄a大片免费| 成人午夜亚洲| 日韩免费视频一区| 一本色道综合久久欧美日韩精品| 自拍亚洲一区| 日韩一区二区福利| 久久综合激情网| 免费一区视频| 国产精品亚洲网站| www.激情五月.com| 91蜜桃在线免费视频| 日韩三级电影网站| 污污的网站在线免费观看| 亚洲国产日日夜夜| 久久久久国产精品熟女影院| 伊人久久综合网另类网站| 亚洲成人xxx| 中文字幕欧美激情极品| 亚洲小说欧美另类婷婷| 日本高清久久天堂| 国产强伦人妻毛片| 91麻豆swag| 中文字幕一区二区三区精彩视频 | 亚洲午夜一二三区视频| 国产乱子夫妻xx黑人xyx真爽| 91精品国产66| 亚洲第一色中文字幕| 五月天精品视频| 综合久久亚洲| 日韩美女写真福利在线观看| 国产农村妇女毛片精品久久| 久久人人爽人人爽| 人妻激情另类乱人伦人妻| 超碰国产一区| 欧美xxx久久| www成人啪啪18软件| 亚洲婷婷免费| 成人h片在线播放免费网站| 天天干天天做天天操| 国产精品久久久久aaaa樱花| 黄色av网址在线播放| 国产精品视频一区二区三区综合| 亚洲美女av在线| 国产真实乱偷精品视频| 国产一区二区三区高清播放| 欧美午夜免费| 松下纱荣子在线观看| 日韩精品一区二区在线观看| 欧美激情视频二区| 亚洲一区二区动漫| 99在线视频首页| 久操视频在线观看| 在线观看91视频| 美女久久久久久久久久| 亚洲伦伦在线| 51精品国产人成在线观看| 999在线视频| 91久久久免费一区二区| 国产又黄又粗又猛又爽的视频 | 亚洲国产精品久久久久爰性色| 国产日韩亚洲欧美综合| 久久国产亚洲精品无码| 国产极品模特精品一二| 色综合视频网站| 国产免费不卡视频| 国产精品久久久久久久久图文区| 国产麻花豆剧传媒精品mv在线| 欧美日日夜夜| 7777免费精品视频| 日本激情一区二区| 婷婷一区二区三区| 中文字幕精品久久久| 黄色亚洲大片免费在线观看| caoporn国产精品免费公开| 嫩草香蕉在线91一二三区| 欧美日韩亚洲综合在线| 懂色一区二区三区av片| 国产日韩视频一区| 国产亚洲一卡2卡3卡4卡新区 | 久久噜噜亚洲综合| 欧美在线观看成人| 亚洲区小说区| 国产成+人+综合+亚洲欧美丁香花| 五月婷婷深深爱| 欧美性xxxx在线播放| 9.1成人看片| 日韩影院在线观看| 亚洲国产成人不卡| 91成人短视频在线观看| 欧美精品一区三区| 蜜桃av中文字幕| 欧美日韩国产激情| 在线免费看黄视频| 另类欧美日韩国产在线| 国产福利片一区二区| 精品久久免费| 亚洲18私人小影院| 国产视频在线看| 欧美日本一区二区| 欧美日韩在线视频免费播放| 成人动漫一区二区在线| 成人小视频在线看| 欧美国产一区二区三区激情无套| 91麻豆桃色免费看| 色女人在线视频| 日韩国产欧美精品一区二区三区| 久操视频在线免费观看| 国产精品伦一区二区三级视频| 污视频在线观看免费网站| 激情久久久久久| 日韩欧美视频一区二区三区四区 | 日韩精品视频网| 中文字幕色一区二区| 成人精品动漫一区二区三区| 国产99久久精品一区二区| 毛片在线不卡| 亚洲国产中文字幕在线观看| 在线视频精品免费| 一区二区三区在线播| 中文字幕免费看| 国产一区二区三区在线观看免费视频| 欧美啪啪免费视频| 91精品国产自产拍在线观看蜜| 精品国产免费人成电影在线观...| 九九九伊在线综合永久| 欧美国产日韩在线| 国产精品毛片一区二区三区四区| 日韩美女天天操| 中文在线第一页| 亚洲欧美激情小说另类| 中文字幕一区二区三区人妻不卡| 精品伊人久久久久7777人| 国产视频九色蝌蚪| 68国产成人综合久久精品| 精品国产综合久久| 欧美视频二区欧美影视| 国产成人精品免高潮费视频| 四虎影视国产在线视频| 在线看欧美日韩| 特黄视频在线观看| 91精品欧美福利在线观看| 4438国产精品一区二区| 一卡二卡三卡日韩欧美| 中文字幕黄色网址| av在线不卡电影| 97超碰免费在线观看| 日韩成人免费看| 日本网站免费在线观看| 欧美日韩18| 中文字幕中文字幕在线中心一区| 亚洲人成网站77777在线观看| 成人三级视频在线观看一区二区| 成人毛片免费| 日本午夜人人精品| 激情视频网站在线播放色| 久久999免费视频| 精品国产99久久久久久| 日韩在线视频线视频免费网站| 日产精品久久久久久久性色| 精品99999| 亚洲va欧美va| 日韩欧美一二三四区| 国产免费视频一区二区三区| 欧美精品乱码久久久久久按摩| 一区两区小视频| 欧美亚洲动漫另类| 男操女视频网站| 日本久久一区二区三区| 亚洲第一网站在线观看| 日韩欧美在线观看| 国产精品久久久久久人| 欧美午夜精品久久久久久浪潮| 日韩精品久久久久久久酒店| 亚洲成a天堂v人片| 国产真人真事毛片| 午夜婷婷国产麻豆精品| 久久高清免费视频| 午夜精品久久久久久久99水蜜桃| xxxxxx国产| 黑人巨大精品欧美一区二区一视频| 中日韩精品视频在线观看| 婷婷夜色潮精品综合在线| 国产午夜性春猛交ⅹxxx| 国产日韩欧美在线播放不卡| 日韩视频免费在线观看| 三级小视频在线观看| 亚洲国产精品中文| 青草久久伊人| 亚洲小视频在线观看| av女优在线| 久久久91精品| 欧美78videosex性欧美| 久久久久久中文字幕| 乱人伦视频在线| 国产成人亚洲综合青青| 国产极品久久久久久久久波多结野| 国产精品毛片a∨一区二区三区|国 | 日本一二三不卡| 色欲一区二区三区精品a片| 亚洲精品视频在线看| 国产成人啪精品午夜在线观看| 欧美日韩国产在线| 97人妻一区二区精品视频| 欧美美女一区二区在线观看| 精品国产av一区二区三区| 亚洲成人中文字幕| 国产三级电影在线| 麻豆成人在线看| 激情黄产视频在线免费观看| 国产精品欧美在线| 51亚洲精品| 日韩一区二区三区高清| 亚洲欧美综合| 777米奇影视第四色| 精品一区二区三区视频| 国产精品一区二区无码对白| 国产亚洲美州欧州综合国| 国产精品免费人成网站酒店 | 国产精品少妇自拍| 91日韩中文字幕| 狠狠色香婷婷久久亚洲精品| 中文字幕在线观看1| 欧美大片国产精品| 国产有码在线| 欧美日韩成人网| 欧美色网在线| 99在线首页视频| 欧美在线观看视频一区| 免费的一级黄色片| 日韩中文字幕不卡| 久久久久国产免费| 国产精品免费久久| 国产成人亚洲欧洲在线| 欧美另类高清zo欧美| 三级国产在线观看| 欧美成人免费网| 韩国理伦片久久电影网| av成人午夜| 午夜精品毛片| 日韩毛片在线免费看| 懂色av中文字幕一区二区三区| 日本免费www| 懂色av一区二区三区| 国产成人毛毛毛片| 亚洲最新视频在线| 午夜伦理福利在线| 国产精品日韩一区二区三区| 亚洲91视频| 五月天亚洲视频| 91蝌蚪国产九色| 国产午夜激情视频| 欧美一区二区三区精品| 四虎久久免费| 国产精品一区久久久| 国产99精品一区| 青青视频在线播放| 暴力调教一区二区三区| 久久久.www| 91精品国产91久久综合桃花| 91涩漫在线观看| 国产国语刺激对白av不卡| 欧美日韩精品一区二区三区在线观看| 久久福利一区二区| 老司机精品视频在线播放| 亚洲av无码国产精品久久不卡 | 国产日韩在线播放| jlzzjlzz亚洲女人| 无码人妻精品一区二区三区66| 91女厕偷拍女厕偷拍高清| 日本免费观看视| 国产婷婷97碰碰久久人人蜜臀| xxxx成人| 国产主播一区二区三区四区| 一区精品久久| 欧美夫妇交换xxx| 精品magnet| 天天干天天摸天天操| 欧美一区二区影院| 蜜桃tv一区二区三区| 日韩免费毛片视频| 久久精品夜色噜噜亚洲aⅴ| 成人精品视频在线播放| 国产呦萝稀缺另类资源| 免费91在线观看| 欧美美女直播网站| av网址在线| av成人在线电影| 亚洲激情亚洲| aaaaa级少妇高潮大片免费看| 欧美日韩中国免费专区在线看| 日韩永久免费视频| 欧洲日韩成人av| 日韩电影在线视频| 欧美性受xxxxxx黑人xyx性爽| 亚洲色图丝袜美腿| 亚洲国产综合一区| 69久久夜色精品国产69| 国内亚洲精品| 国产精品久久久久久9999| 亚洲一区视频在线| 日本福利片在线| 国产色视频一区| 亚洲视频一区| 国产毛片久久久久久久| 欧美欧美欧美欧美| 免费在线播放电影| 欧美一二三区| 国产一区二区三区四区在线观看| 久久久久久福利| 亚洲午夜色婷婷在线| 成人精品视频在线观看| 黄色一级在线视频| 国产精品色婷婷久久58| 成人激情四射网| 国产成人精品视| 欧美a级在线| 公侵犯人妻一区二区三区| 欧美久久久一区| 国产传媒av在线| 亚洲在线欧美| 99精品国产一区二区三区不卡| 中文字幕在线观看高清| 国内精品久久影院| 日韩久久精品网| 亚洲综合自拍网| 91麻豆精品国产91久久久资源速度 | 91精品在线观| 免费日韩av| 国产一级理论片| 中文字幕亚洲一区二区三区五十路|