成人免费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技術棧公眾號

主站蜘蛛池模板: 91偷拍精品一区二区三区 | 欧美精品久久久久久久久久 | 国产乱码精品一区二区三区忘忧草 | 在线日韩视频 | 妹子干综合| 日韩电影在线 | 亚洲激情在线观看 | 精品国产精品 | 亚洲色图在线观看 | 男女性毛片 | 国产一级电影在线 | 欧美日批 | 人操人人干人 | 中文字幕亚洲一区 | 成人在线看片 | 欧美成人免费在线视频 | 国产欧美久久精品 | 久久新| 成人欧美一区二区三区 | 一二区电影 | 欧美男人天堂 | 国产精品久久久久久久久久免费看 | 成年人黄色免费视频 | 欧美成人a∨高清免费观看 91伊人 | 韩国欧洲一级毛片 | 99精品欧美一区二区三区综合在线 | jizz在线看片 | 亚洲成人网在线观看 | 中文字幕免费观看 | 精品一区二区三区视频在线观看 | 亚洲免费高清 | 久久国产精品视频 | 亚洲激情综合网 | 欧美久操网 | 欧美精品乱码久久久久久按摩 | 亚洲成人精品在线 | 国产精品成人一区二区三区 | 青娱乐国产 | 色婷婷精品国产一区二区三区 | 久久综合影院 | 国产丝袜一区二区三区免费视频 |