成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何看待 TC39 的提案 Module Fragments?

開發 前端
JS module fragments 是 JS 模塊語法的一個提案,我們也可以叫它 “模塊片段”,可用于在單個 JavaScript 文件中寫多個模塊代碼。

[[414443]]

本文轉載自微信公眾號「勾勾的前端世界」,作者加班的打工人1234。轉載本文請聯系勾勾的前端世界公眾號。

閑逛知乎的時候看到了這個問題,下面只有 2 個回答。賀師俊大佬竟然也關注了這個問題,于是......

以下是知乎原文,歡迎各位去知乎為俺三連:點贊、評論和收藏。

沒人邀請,我來勇敢回答一把子這個問題。

首先來看下這個提案到底是什么。

JavaScript module fragments are a syntax for named, inline JS modules, which can be used for bundling multiple modules into a single JavaScript file.

直譯一下,JS module fragments 是 JS 模塊語法的一個提案,我們也可以叫它 “模塊片段”,可用于在單個 JavaScript 文件中寫多個模塊代碼。

簡單來說,目前的 ES Modules 是以文件為單位劃分的,而 TC39 這個提案的意思是可以更進一步,在同一個 JS 文件中,對代碼進行模塊的拆分,這有點類似于很多其它編程語言中的 `region` 注釋片段。

舉個例子,上代碼:

  1. // filename: app.js  
  2.  
  3. // 定義一個模塊 #count  
  4. module "#count" { 
  5.   let i = 0; 
  6.    // 模塊導出一個函數 
  7.   export function count() { 
  8.     i++; 
  9.     return i; 
  10.   } 
  11.  
  12. // 定義另外一個模塊 #uppercase 
  13. module "#uppercase" { 
  14.   // 導出一個函數 
  15.   export function uppercase(string) { 
  16.     return string.toUpperCase(); 
  17.   } 
  18.  
  19. // 導入模塊,此處與 ES 標準化模塊語法一致, 
  20. import { count } from "#count"
  21. import { uppercase } from "#uppercase"
  22.  
  23. console.log(count()); // 1 
  24. console.log(uppercase("daniel")); // "DANIEL" 

沒錯,這就是提案中的示例代碼,我加了注釋。

之所以有這樣的提案,大家可以在提案中的動機中找到,大致可以總結為小文件在各類環境中的加載成本很高,并且需要借助其他打包工具。

截取一段,用我小學二年級的翻譯水平來展示一下:

This proposal adds a syntax to JavaScript to allow for several JavaScript modules in one file. This format can be used as output by bundlers, with low overhead on execution, so that bundlers don't have to emulate as much, and JS engines can see what's going on. It's also convenient to be typed directly by JavaScript developers, and it should be low overhead to fit into existing workflows.

該提案為 JavaScript 增加了一種語法,該語法允許在一個文件中包含多個 JavaScript 模塊。這種格式的模塊可以被打包輸出,以此降低執行成本,因此,傳統意義上的打包工具就不再那么重要了,JS 引擎本身可以就可以完成這一系列工作,便于開發者可以直接使用原始的 JavaScript,而且這也很容易讓其融入到現有的開發流程之中。

我個人是很支持這個提案的。

從根本上來講,JavaScript 的誕生太過快速(“草率”),當時也沒想到今天會有這么大的應用規模,所以很多高級特性并不完備。

歷史上,JavaScript 一直沒有模塊系統,無法將一個大程序按照各自職責拆分成互相依賴的小模塊,再用簡單的方法拼裝起來。這對構建復雜的大型應用形成了巨大障礙。

現在大家耳詳能熟的 Webpack 就是為了更好的解決這一問題而誕生的,不過這一次,不再是社區方案或者工具,終于有人向語言標準下手了,試圖從語言層面站出來徹底根治這個問題。

這一語法的出現,在現階段最大的核心能力就是“模塊打包相關”。在該提案的動機里有提到一個非常重要的點:“瀏覽器預判” ,即瀏覽器提前預判是否需要預先加載模塊,這樣一來,就能夠區分模塊是否需要被加載,從而有效提升加載性能。

當然,如果此提案能夠被最終通過,也一定是漸進式的,至于能夠釋放多大的能量,就看各位大佬的聰明才智了。

xdm,支持此提案的給我點贊走一波……

 

責任編輯:武曉燕 來源: 勾勾的前端世界
相關推薦

2022-09-21 08:00:58

JavaScriptTC39

2024-10-21 00:00:03

JavaScriptDate?API

2024-06-25 12:39:05

2023-07-17 10:21:25

TC39JavaScript

2023-02-03 17:16:33

ECMAScriptAPITC39

2022-07-07 08:30:50

類型注解原生JS

2020-09-18 09:02:32

前端模塊化

2019-12-02 16:05:10

前端模塊化JavaScript

2023-11-24 08:31:03

ECMAScriptES2021

2023-12-22 08:13:39

業務review流程

2023-10-08 08:09:16

數據庫性能服務器

2019-02-20 13:08:48

CIOIT轉型

2009-02-19 14:27:00

2016-06-17 10:35:20

云計算運維

2016-06-21 10:40:54

云計算AWS

2023-05-09 12:08:02

FedoraLinux

2019-12-25 09:00:00

JavascriptWeb前端

2019-12-27 16:10:53

前端javascriptnode.js

2018-12-17 11:22:05

移動芯片網絡

2019-12-25 14:03:42

JavaScript開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天堂av在线 | 特级黄色毛片 | 欧美日韩亚洲一区 | 蜜桃视频在线观看免费视频网站www | 中文字幕第十页 | 综合在线视频 | 国产不卡在线观看 | 青青久久| 亚洲vs天堂| 欧美亚洲国产一区 | 午夜精品久久久久久久久久久久久 | 性生生活大片免费看视频 | av三级| 亚洲视频免费在线观看 | 免费看国产a | 亚洲国产精品久久 | 视频二区在线观看 | 成人国产精品色哟哟 | 日韩欧美在线不卡 | 99亚洲精品 | 国产激情视频网 | 日韩精品一区二区三区在线播放 | 久久久久国产精品 | 亚洲精品美女视频 | 超碰高清 | 国产一二区视频 | 99草免费视频| 亚洲97| 狠狠久 | 天天躁日日躁狠狠的躁天龙影院 | 中文字幕精品一区二区三区精品 | 精品久久1| 欧美xxxx色视频在线观看免费 | 欧洲一区二区三区 | 亚洲一区二区三区视频 | 一本大道久久a久久精二百 国产成人免费在线 | 国内久久 | 欧美 日韩 中文 | 欧美性大战久久久久久久蜜臀 | 青青久久久 | 国产午夜精品一区二区三区嫩草 |