精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

青娱乐精品在线视频| 国产精品流白浆在线观看| 中文字幕av在线一区二区三区| 国产精品99久久久久久人 | 免费国偷自产拍精品视频| 日本精品在线| av动漫一区二区| 国产精品扒开腿爽爽爽视频 | 香蕉视频在线观看黄| 91制片在线观看| 国产精品久久久久一区二区三区 | 一区二区久久久久久| 久久综合九色综合久99| 一级黄色大片网站| 国产精品久久| 中国china体内裑精亚洲片| 性一交一黄一片| av成人免费看| 色综合天天综合给合国产| 欧美日韩在线免费观看视频| 日韩a在线观看| 国产乱码精品一区二区三区av| 57pao国产成人免费| 69av视频在线| 日韩黄色大片网站| 国产午夜精品久久久| 中文字幕在线观看视频www| 99re66热这里只有精品4| 亚洲成av人片在www色猫咪| 91手机视频在线| 国产日本在线观看| heyzo一本久久综合| 91精品视频大全| 影音先锋黄色网址| 亚洲自啪免费| 午夜精品一区二区三区在线视| 男女羞羞免费视频| 亚洲成人日韩| 日韩在线观看免费全| 日本精品在线观看视频| 私拍精品福利视频在线一区| 亚洲国产精彩中文乱码av| 久久综合桃花网| 欧美电影在线观看一区| 欧美精品v国产精品v日韩精品| 超碰在线97免费| 播放一区二区| 欧美日韩中字一区| 天天爽夜夜爽一区二区三区| 88xx成人免费观看视频库 | 久久久精品黄色| 国产在线精品一区| 日韩在线观看视频网站| 丰满少妇久久久久久久| 亚洲专区国产精品| 性一交一乱一精一晶| 国产成人欧美日韩在线电影| 99在线高清视频在线播放| av网站在线观看免费| 久久99最新地址| 91精品视频网站| 精品国产99久久久久久宅男i| 激情五月播播久久久精品| 成人在线视频福利| www.日韩在线观看| 成人在线视频一区二区| 国产区一区二区三区| 亚洲色大成网站www| 久久久久久久网| 午夜一区二区三区| 黄色动漫在线| 亚洲一二三四区不卡| aa在线免费观看| 成人免费毛片嘿嘿连载视频…| 欧美午夜精品一区二区三区电影| 亚洲国产精品综合小说图片区| 免费看日本黄色| av中文在线资源库| 日本精品视频一区二区三区| 久久国产激情视频| 精品久久免费| 亚洲精品98久久久久久中文字幕| 中文字幕被公侵犯的漂亮人妻| 免费成人结看片| www日韩中文字幕在线看| 成人在线观看小视频| 亚洲欧洲一区| 国产精品精品久久久| 国产成人麻豆精品午夜在线| 不卡的av网站| 亚洲精品一区国产精品| av观看在线| 色综合一个色综合亚洲| 国产传媒免费观看| 精品福利一区| 中文字幕在线看视频国产欧美在线看完整| 艳妇荡乳欲伦69影片| 亚洲欧洲综合| 国产日本欧美一区二区三区在线| 亚洲伦理在线观看| 国产三区在线成人av| 欧美激情亚洲天堂| 四虎4545www精品视频| 日韩欧美精品在线视频| 亚洲久久久久久久| 欧美黄色高清视频| 卡通动漫国产精品| 日韩中文字幕国产精品| 五月天综合激情| 激情综合色综合久久| 久久国产精品精品国产色婷婷| 秋霞午夜理伦电影在线观看| 欧美午夜性色大片在线观看| 性生活在线视频| 日韩理论片av| 欧美一区二区三区…… | 久久免费视频播放| 日日夜夜免费精品视频| 国产欧美日韩在线播放| 美女免费久久| 欧美日韩在线播放| 一区二区三区四区免费| 欧美二区不卡| 成人亚洲欧美一区二区三区| 国产一级在线观看| 福利精品视频在线| 9.1在线观看免费| 综合精品一区| 成人看片人aa| 日本三级视频在线观看| 日韩欧美在线视频日韩欧美在线视频| 曰本三级日本三级日本三级| 一级毛片免费高清中文字幕久久网| 日本在线精品视频| 日日碰狠狠添天天爽超碰97| 中日韩av在线| 久久久精品欧美丰满| 又粗又黑又大的吊av| 国产精品成人自拍| 国内精品久久久久伊人av| 国产av无码专区亚洲av麻豆| 中文字幕制服丝袜成人av| 亚洲少妇第一页| 成人羞羞网站入口免费| 国产精品69久久久久| 男人天堂网在线观看| 欧美日韩综合视频| 亚洲综合色一区| 久久亚洲风情| 亚洲狠狠婷婷综合久久久| 日韩三区免费| 在线视频欧美日韩| 亚洲最新av网站| 国产精品不卡视频| 亚洲色图欧美自拍| 亚洲综合专区| 成人综合av网| 欧美办公室脚交xxxx| 日韩毛片在线观看| 不卡av电影在线| 亚洲国产成人在线| 亚洲欧美日本一区二区| 欧美精品1区| 精品国产二区在线| 亚洲成人短视频| 精品国产一区二区三区在线观看| 国产精品高潮呻吟AV无码| 亚洲美腿欧美偷拍| 亚洲欧美高清在线| 久久资源在线| 曰韩不卡视频| 在线观看视频一区二区三区| 日本电影一区二区| 欧美精品成人91久久久久久久| 国产乱码精品一区二区三区精东| 亚洲精品免费播放| 人妻丰满熟妇av无码久久洗澡 | 欧美激情第三页| 色wwwwww| 精品视频免费看| 欧美三级小视频| 2022国产精品视频| 中文字幕亚洲乱码| 国内精品99| 青青成人在线| 视频二区欧美毛片免费观看| 97视频在线观看网址| eeuss影院www在线观看| 91精品国产综合久久福利| 久久精品久久精品久久| 久久久.com| 亚洲美女高潮久久久| 亚洲在线日韩| 在线观看污视频| 希岛爱理av免费一区二区| 国产在线播放91| 国产乱码精品一区二三赶尸艳谈| 亚洲色图狂野欧美| 国产三级漂亮女教师| 日韩欧美大尺度| 欧美黄色一区二区三区| 欧美韩日一区二区三区四区| 中文字幕在线观看91| 日韩av一二三| 尤物av无码色av无码| 中文字幕日韩一区二区不卡| 欧美色图亚洲自拍| 1769国产精品视频| 国产日韩精品入口| 在线观看的毛片| 另类春色校园亚洲| 成人黄色中文字幕| 国产一区二区精品调教| 国内精品视频一区| av网站在线免费| 在线日韩av观看| 秋霞av在线| 精品国产三级电影在线观看| 国产又粗又猛又爽又黄91| 欧美性猛交xxxx偷拍洗澡| 国产在线免费视频| 亚洲欧美视频在线观看| 老司机福利在线观看| 99精品久久免费看蜜臀剧情介绍| 色偷偷中文字幕| 久久国产福利国产秒拍| 久章草在线视频| 一本色道久久综合一区 | 日韩免费网站| 日韩的一区二区| 高潮一区二区三区乱码| 欧美一区二区三区四区久久| 中文字幕+乱码+中文字幕明步| 色综合欧美在线| 久久久久久久久久影院| 亚洲已满18点击进入久久| 69xx绿帽三人行| 亚洲视频一区二区在线观看| 国产精品久久不卡| 91在线一区二区| 日韩www视频| 成人av在线播放网址| 美女黄色一级视频| 成人国产精品视频| 欧美性生交xxxxx| 成人动漫一区二区| 一区二区免费在线观看视频| 91一区二区三区在线观看| www.四虎在线| 久久综合久久综合久久| 日韩精品专区在线| 亚洲欧美综合另类| 一本色道**综合亚洲精品蜜桃冫| 国产午夜在线播放| 欧美日韩亚洲视频| 中文字幕在线欧美| 在线免费亚洲电影| 怡红院成永久免费人全部视频| 欧美丝袜丝交足nylons| 国产又粗又长又黄| 日韩一区二区三| 欧美在线精品一区二区三区| 亚洲精品720p| 超碰免费97在线观看| 日韩视频中文字幕| 日本一本在线免费福利| 久久免费国产精品1| 日韩脚交footjobhd| 国产成人在线播放| 亚洲老司机网| 国产精品国产三级欧美二区| 一区三区在线欧| 亚洲欧美日韩不卡一区二区三区| 91精品蜜臀一区二区三区在线| 无码人妻精品一区二区蜜桃百度| 亚洲高清在线| 91av在线免费播放| 国产在线一区观看| 国产黑丝在线观看| 欧美国产日韩精品免费观看| 性欧美videos| 精品久久中文字幕| 中文字幕免费在线看| 欧美一区二区久久| 午夜影院免费视频| 日韩色av导航| 成人影音在线| 国产精品日韩欧美| 欧美丰满美乳xxⅹ高潮www| 日韩电影一区二区三区| 欧美在线a视频| av不卡在线观看| 成年人免费视频播放| 亚洲一级在线观看| 欧美一区二区三区久久久| 日韩欧美在线1卡| www黄在线观看| 色在人av网站天堂精品| 中文字幕一区久| 91免费观看| 热久久天天拍国产| 亚洲熟妇av日韩熟妇在线| 精品一区二区久久| 亚洲精品视频久久久| 亚洲精品中文在线影院| 艳妇乳肉豪妇荡乳av无码福利 | 日韩免费在线播放| 欧美.com| 制服丝袜综合日韩欧美| 性高湖久久久久久久久| 亚洲a级黄色片| 久久久久久久综合色一本| 波多野结衣亚洲色图| 欧美性大战久久| 日本大片在线观看| 欧美肥婆姓交大片| 中文成人激情娱乐网| 欧洲精品一区色| 国产视频亚洲| 成人欧美精品一区二区| 亚洲欧美国产高清| 一道本在线视频| 亚洲最新在线视频| 中文字幕这里只有精品| 激情伦成人综合小说| 欧美日韩一卡| 国产精品蜜臀av| 欧美成人aaa片一区国产精品| 欧美午夜精品一区| 全部免费毛片在线播放网站| 久久人人爽人人| xxxx日韩| 又大又硬又爽免费视频| 国产一区二区视频在线| 999精品久久久| 欧洲一区在线电影| 成人亚洲性情网站www在线观看| 欧洲美女免费图片一区| 婷婷国产精品| 丰满少妇被猛烈进入高清播放| 成人手机电影网| 国产一级性生活| 亚洲第一区中文字幕| 成人免费图片免费观看| 国产精品久久波多野结衣| 亚洲天堂成人| 欧美日韩一区二区三区四区五区六区| 亚洲一区二区三区四区五区黄| 午夜精品久久久久久久爽| 久久99精品久久久久久青青91| 蜜桃在线一区| 嫩草影院中文字幕| 99精品久久免费看蜜臀剧情介绍| 五月婷婷视频在线| 亚洲人成免费电影| 99欧美精品| 精品国产无码在线| 成人自拍视频在线观看| 91香蕉在线视频| 亚洲区免费影片| 成人国产精品一区二区免费麻豆| 亚洲欧洲一区二区福利| 久久er99热精品一区二区| 一级黄色录像视频| 亚洲国产成人精品女人久久久| 亚洲男人av| 亚洲成人网上| 国产成人免费在线| 五月天综合激情| 色狠狠av一区二区三区香蕉蜜桃| 国产精品777777在线播放| www.好吊操| 国产日韩欧美精品在线| 国产视频手机在线| 91国产精品视频在线| 欧美亚洲激情| 人妻精油按摩bd高清中文字幕| 亚洲午夜免费电影| 四虎影视在线播放| 一区2区3区在线看| 国产成人一级片| 日韩亚洲综合在线| a看欧美黄色女同性恋| 久久久999免费视频| 中文字幕一区二区三中文字幕| 亚洲国产精品无码久久| 国产91在线播放精品91| 亚洲免费二区| 国产免费看av| 日韩视频永久免费| 国产综合色区在线观看| 免费极品av一视觉盛宴| 国产视频一区在线播放| 亚洲精品一区二区三区不卡| 国产精品第一第二| 在线看片一区| 国产真实乱在线更新| 亚洲欧洲一区二区三区在线观看| 人人爱人人干婷婷丁香亚洲| 国产日韩成人内射视频|