日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序运行依赖的重要文件版本不对_Deno核心模块:灵活依赖amp;安全沙箱

發布時間:2024/4/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序运行依赖的重要文件版本不对_Deno核心模块:灵活依赖amp;安全沙箱 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?? ??? ?Deno 的目標不是兼容 Node,而是兼容瀏覽器。Deno 不是要取代 Node.js,也不是下一代 Node.js,也不是要放棄 npm 重建 Node 生態。比如react和vue的存在,兩個框架都很好,并不是誰要消滅誰,我們可以哪個合適用哪個,想用哪個用哪個。deno 的目前是要擁抱瀏覽器生態。

?? ??? ?前期文章講解過《初識Deno》(https://mp.weixin.qq.com/s/ZlnbBITXDqxpwLf32n9-bw)和《從模塊談Deno和Node的區別(https://mp.weixin.qq.com/s/LshySTHs7rlMsBcmx6qVuw)?。本期內容主要圍繞Deno核心模塊中比較重要的兩個部分講解:安全沙箱機制和Deno依賴引入管理。

?? ?? ?標題提到過核心模塊,講解一下我個人對于Deno模塊的理解,我的劃分:第三方庫、標準庫、底層運行時、安全沙箱機制和依賴管理。順帶我們可以看看Deno源碼項目目錄的劃分(本次所針對的都是version1.5.3的版本),主要包含以下部分:

一、靈活依賴

??????? Deno天然支持ECMAScript 6(以下簡稱es6),可以直接用es6 的模塊引入方式(即import/export,后面簡稱es module)。Deno 依靠 es module 引入URL 來承載和導入程序包。這種引入插件的方式非常靈活,我們可以直接創建軟件包而無需在 NPM 這樣的存儲庫中發布它們。

?? ?? ? 下面我們通過官方簡單demo來展現Deno通過es module 引入URL請求資源并且執行,當我們運行代碼`?deno run https://deno.land/std/examples/welcome.ts?`,會正確返回如下圖的結果。

? ???? ???下圖是官方demo中的代碼:

? ??? ? 可以看到上面項目我們本地沒有任何代碼或者項目,只是運行了一個遠程的官方demo文件,在控制臺就直接執行并且正確執行結果。不需要自己去下載要引入的代碼,‘拿來主義’直接執行就好了,非常省事。

?? ??? ?默認情況下,緩存中的模塊將被重用,而無需獲取或重新編譯它。那是否存在緩存不被更新依賴到舊代碼的問題?肯定會的。有時候我們并不希望使用緩存的模塊,我們可以強制 deno 重新下載模塊并重新編譯到緩存中??梢允褂?deno cache 子命令的--reload 選項來使本地緩存無效。

?? ?? ? 帶著問題學習可能會更易于理解,我們來看看下一個問題。由于Deno直接引入外部代碼或者本地代碼,沒有包管理器的情況下管理外部依賴關系就會導致問題。會不會在用的地方引入會導致引入文件比較雜亂、項目越大越難維護、重復引入等問題?答案是肯定的。

?? ??? ?在 Deno 中解決這些問題的標準做法是創建一個 deps.ts 文件。此文件中引用了所有必需的遠程依賴關系,并且重新導出了所需的方法和類。本地模塊從 deps.ts 導入所需方法和類,而不是遠程依賴。這樣就可以輕松跨大型代碼庫更新模塊,并解決“程序包管理器問題”。開發依賴項也可以在單獨的 dev_deps.ts 文件中進行管理。

??????? deps.ts中引入文件示例圖:

depsTest.ts中引入文件示例圖:

??????? depsTest.ts 運行示例圖:

????????可以看到上面可以正確運行出結果,感覺是未來的趨勢,精簡而干練。

????????那么Deno為何可以通過URL直接引入其他資源直接執行呢?deno有自己的緩存遠端資源的邏輯。下面我們來看看deno/core代碼模塊的https_catsh.rs部分源碼。

?? ?? ? 即使作為前端人員不是很懂rust,從下面源碼大致可以get到兩個方法:base_url_tofilename和url_to_filename。base_url_tofilename將請求的url解析后返回成`主域名+文件hash`的字符串返回,url_to_filename直接調用的base_url_tofilename,返回一個包含緩存文件名的數組,并且該模塊代碼會進行文件內容的寫入等一些列操作。get_cache_filename是總出口文件,供core/http_fetcher.rs文件模塊使用。

?

????????下圖是經過base_url_tofilename方法處理后的前后文件名的對應關系。

????????文件模塊core/http_fetcher.rs,可以起一個http服務,查詢文件是否在本地存在。如果文件存在,就直接從本地拿文件資源,如果本地緩存中沒有文件,就通過http請求與遠端建立鏈接,獲取遠端資源寫入到本地進行緩存。

?? ??? ?下面代碼則是緩存處理的初始化配置信息。默認是從緩存中獲取數據,不需要中心加載所有數據,以及只有使用權限。

一 、安全沙箱機制

?? ?? ? URL的方式直接引入文件會不會導致和node一樣的權限紊亂問題?Deno的答案是“NO”。Deno有自己的安全沙箱機制。

?? ?? ?首先對沙箱進行簡單的釋義。沙箱是一個限制程序運行的環境,通過這樣的措施來保證對代碼的有效隔離,防止對本地系統造成破壞。

?? ??? ?Deno 的安全沙箱機制來自 web。安全沙箱機制是 web 的特色,瀏覽器中運行的 js 代碼可能來自任何地方,而且都不是我們主動下載運行的,也不一定這些代碼都是受信任的,但是我們依然敢運行這些代碼。是因為瀏覽器的沙箱機制保證了這些 js 代碼不會訪問系統資源。

?? ?? ? Deno的安全沙箱機制主要包含文件讀取權限、網絡權限、系統權限。默認我們代碼是沒有訪問這些權限的,在命令行參數中為 Deno 進程授權后才能訪問安全敏感的功能。在實際開發過程中我們可以加上--allow-all (允許所有權限,無安全限制)、-allow-env (允許環境訪問,比如讀取和設置環境變量)、--allow-net= (允許網絡訪問)、--allow-write=(允許寫入文件系統)或?--allow-read=(允許讀取文件系統)等權限,賦予我們的代碼一定的權限。

?? ??? ?如下代碼為rust中判斷是否有創建文件夾權限,有權限才可循環創建文件夾,否則提示沒權限。

? ? ?

????????如下圖,permission.rs文件中會對各項權限進行判斷。判斷有沒有寫入權限,有沒有網絡權限等。

????????在deno使用過程中我一直有個疑惑:為什么deno run 'https://deno***'下的文件沒提示需要網路權限,在查看源碼發現是deno內部處理了對deno網絡權限權限的白名單,如下圖所示:

????????最后,作為文章的收尾,提一下作為deno rust語言入口文件的main.ts,通過main方法把所有代碼模塊串聯起來,運行出我們所看到的deno效果。主入口方法如下圖所示。

?? ??? ?由于對rust語言以及deno的原理熟悉度有限,本編文章主要講解到這里。如果文章中有不合適的地方或者講解的不對的,歡迎留言交流。一起學習Deno,fighting~~?

總結

以上是生活随笔為你收集整理的程序运行依赖的重要文件版本不对_Deno核心模块:灵活依赖amp;安全沙箱的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 污污网站在线观看视频 | 亚洲女人18毛片水真多 | 国产欧美中文字幕 | 成人欧美精品一区二区 | 中文字幕理伦片免费看 | 九九九热视频 | 婷婷国产视频 | 久久久久久国产精品一区 | 国产欲妇 | 一女三黑人理论片在线 | 诱惑の诱惑筱田优在线播放 | 日韩不卡一二区 | 国产精品久久久久久久久借妻 | 亚洲乱熟女一区二区三区小说 | 亚洲精品福利在线观看 | 国产亚洲综合精品 | 国产剧情一区在线 | 亚洲毛片在线免费观看 | 伊人导航 | 97国产免费 | 香蕉国产精品 | 中文字幕久久久久久久 | 亚洲一二三区av | 男人天堂色 | 91亚洲精品国偷拍自产在线观看 | 小泽玛利亚一区二区三区视频 | 亚州国产| 色一情一乱一乱一区91av | 黄视频网站在线看 | 中文字幕第一页在线播放 | 久久成人黄色 | 日韩激情影院 | 狠狠av | 狠狠干b | 欧美日韩中文在线视频 | 久久爰 | 五月天激情开心网 | 色福利视频 | 日本高清网色 | av免费在线网站 | 99爱爱 | 成人午夜精品福利免费 | 日韩午夜视频在线 | 综合久久婷婷 | 久久精品无码中文字幕 | 美女啪啪免费视频 | 黄色欧美在线观看 | 美女爱爱爱 | 国产精品久久久久久久久久久久久久 | 欧美亚洲综合视频 | 欧美成人hd| 日韩精品视频播放 | 久久久久亚洲AV成人无码国产 | 澳门色网| 伊人网视频在线观看 | 成人狠狠干 | 久久精品人人做人人爽 | 和漂亮岳做爰3中文字幕 | 日本一级做a爱片 | 免费国产精品视频 | 亚洲网站视频 | 福利小视频 | 两个人看的www视频免费完整版 | 欧美精品一区二区三区四区 | 波多野42部无码喷潮 | 91插插插视频 | 亚洲av无码一区二区三区性色 | 欧美成人一二三区 | 天天干天天干天天 | 成人免费看片98 | 色97| 青娱乐91| 性色av网址 | 稀缺呦国内精品呦 | 亚洲一区二区三区四区在线播放 | 国产资源免费 | 国产欧美在线观看不卡 | 黄色片在线观看视频 | 青娱乐国产精品 | 亚洲激情视频在线 | 99自拍视频 | 亚洲欧洲一二三区 | 亚洲午夜在线观看 | 老司机精品视频在线播放 | 色妞色视频一区二区三区四区 | 亚洲AV成人午夜无码精品久久 | 爱久久| julia在线播放88mav | 在线成人小视频 | 日本一区高清 | 在线少妇 | 色视频网站在线观看 | 操女人的逼逼 | 中文字幕亚洲精品在线 | 婷婷激情四射 | 伊人视屏| 成人一区二区视频 | 国产日产精品一区二区 | 天天操好逼 |