国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

對(duì)比著 Npm 來(lái)學(xué) Rust 的 Cargo,一遍就會(huì)了

開(kāi)發(fā) 前端
我們寫(xiě) Node.js 代碼離不開(kāi)的是什么,是 Npm。這就像寫(xiě) Rust 代碼離不開(kāi) Cargo 一樣。大家可能不了解 Rust 和 Cargo。沒(méi)關(guān)系,接下來(lái)我們就對(duì)照著 npm 來(lái)學(xué)習(xí)下 Cargo,幫大家入門(mén)下 Rust。

[[427071]]

我們寫(xiě) Node.js 代碼離不開(kāi)的是什么,是 Npm。這就像寫(xiě) Rust 代碼離不開(kāi) Cargo 一樣。

大家可能不了解 Rust 和 Cargo。沒(méi)關(guān)系,接下來(lái)我們就對(duì)照著 npm 來(lái)學(xué)習(xí)下 Cargo,幫大家入門(mén)下 Rust。

我們先從熟悉的 Node.js 開(kāi)始:

寫(xiě) Node.js 代碼的流程

我們會(huì)先創(chuàng)建一個(gè)目錄,然后在目錄下執(zhí)行 npm init

  1. mkdir node-pro 
  2. cd node-pro 
  3. npm init 

控制臺(tái)會(huì)交互式的詢問(wèn)一些信息,然后生成 package.json

也可以加上 -y 用默認(rèn)值快速創(chuàng)建。

之后我們會(huì)用 npm install xxx 來(lái)安裝依賴,比如安裝 babel

  1. npm install babel 

這時(shí)候 package.json 的 dependencies 下就有了 babel 的依賴信息

同時(shí)會(huì)生成一個(gè) package-lock.json 記錄依賴版本(用 yarn 安裝的話就是 yarn.lock 文件)

依賴會(huì)安裝在 node_modules 下。

之后呢,我們會(huì)創(chuàng)建 src,寫(xiě)一些代碼。

然后在 package.json 的 scripts 中指定編譯、測(cè)試等腳本:

然后代碼寫(xiě)完以后,通過(guò) npm run build 來(lái)跑構(gòu)建、通過(guò) npm run test 來(lái)跑測(cè)試:

  1. npm run build 
  2. npm run test 

生成的產(chǎn)物可以通過(guò) npm publish 發(fā)布到 npm 倉(cāng)庫(kù)。

過(guò)程中可能還用到一些其他的命令:比如要更新依賴會(huì)用 npm update,比如要搜索依賴用 npm search 等。

這就是一個(gè) Node.js 項(xiàng)目的開(kāi)發(fā)流程,拋開(kāi)具體寫(xiě)的 Node.js 代碼不談,整個(gè)工具鏈?zhǔn)怯?npm 串聯(lián)的。

你可能會(huì)說(shuō)這個(gè)很基礎(chǔ)啊,不是入門(mén)的內(nèi)容么?

是的,npm 是 Node.js 入門(mén)要學(xué)的,那么同樣,入門(mén) Rust 也要先學(xué) Cargo。

而且,npm 和 cargo 的設(shè)計(jì)特別的像,幾乎看一遍大家就會(huì)了。

那還等什么,趕緊來(lái)學(xué)一下 Cargo 吧。

寫(xiě) Rust 代碼的流程

和 Node.js 項(xiàng)目一樣,可以先創(chuàng)建目錄,然后使用 cargo init 初始化代碼(這里也可以直接使用 cargo new,效果和下面 mkdir + cargo init 一樣)

  1. mkdir rust-pro 
  2. cd rust-pro 
  3. cargo init 

然后就會(huì)創(chuàng)建這樣的目錄結(jié)構(gòu):

cargo.toml 相當(dāng)于 package.json,也是聲明包信息和 dependencies 的。

而且連 src 都有了, git 也初始化了,這比 npm init 更貼心啊(難怪大家都喜歡 rust,這工具鏈做的多細(xì))。

cargo.toml 的內(nèi)容是這樣的:

[package] 下聲明的是包的信息,[dependencies] 下聲明的是依賴信息。

我們用 cargo search 搜索下某個(gè)包(相當(dāng)于 npm search):

可以搜到 html2md 的版本是 0.2.13,我們把它填到依賴?yán)铮?/p>

之后我們寫(xiě)點(diǎn)代碼,把 html 轉(zhuǎn)成 markdown:

然后,編譯和執(zhí)行:

  1. cargo build 
  2. cargo run 

就可以看到執(zhí)行結(jié)果:

我們用 npm run build 執(zhí)行的也是構(gòu)建命令,只不過(guò)是自己配置的三方編譯工具,而 cargo 是用內(nèi)置的編譯工具。

這樣我們就跑起來(lái)了第一個(gè) rust 程序。是不是流程和 npm 有那么一丟丟的像。

而且,像 yarn.lock 或者 package-lock.json 一樣,cargo 也有 Cargo.lock 來(lái)記錄了依賴的具體信息:

后續(xù)也可以執(zhí)行 cargo test 來(lái)跑測(cè)試代碼,可以執(zhí)行 cargo publish 來(lái)上傳到中央倉(cāng)庫(kù)。和 npm 的整體流程比較類似。

Npm 和 Cargo 相似的原因

為什么 cargo 和 npm 這么類似呢?

這說(shuō)明這已經(jīng)是最佳實(shí)踐了!也就是把 init 的腳手架、編譯構(gòu)建、運(yùn)行、測(cè)試、發(fā)布等功能集成到一個(gè)命令中工具中,內(nèi)置到語(yǔ)言的工具鏈。

對(duì)照下古老的 C++ 就能看出區(qū)別:

C++ 使用 clang 或者 gcc 編譯,其他的功能并沒(méi)有,需要結(jié)合 cmake 來(lái)聲明一些其他的命令。最關(guān)鍵的是沒(méi)有中央的倉(cāng)庫(kù)和依賴管理工具,每個(gè)依賴都要手動(dòng)下載,然后放到項(xiàng)目目錄下,特別麻煩。

既然這是必備功能,為什么不內(nèi)置到語(yǔ)言的工具鏈呢?

所以 npm 和 cargo 都把 init、install、update、build、test、publish 等命令內(nèi)置了,而且也都支持了中央倉(cāng)庫(kù)和依賴管理。

這是現(xiàn)代的語(yǔ)言工具鏈的最佳實(shí)踐了,用別的現(xiàn)代語(yǔ)言的工具也會(huì)感覺(jué)差不多。

總結(jié)

Cargo 之于 Rust 就像 Npm 之于 Node.js,兩者都是初始化、依賴管理、構(gòu)建、發(fā)布、等的集成的命令行工具鏈。

Node.js 的項(xiàng)目的開(kāi)發(fā)流程是這樣的:

  • npm init 初始化項(xiàng)目
  • npm search 搜索依賴
  • npm install 安裝依賴
  • npm update 升級(jí)依賴
  • npm run build 執(zhí)行構(gòu)建
  • npm run test 執(zhí)行測(cè)試
  • npm publish 發(fā)布到中央倉(cāng)庫(kù)

Rust 項(xiàng)目的開(kāi)發(fā)流程也類似:

  • cargo init 初始化項(xiàng)目 (或者 cargo new,這個(gè)相當(dāng)于 mkdir + cargo init)
  • cargo search 搜索依賴
  • cargo install 安裝依賴
  • cargo update 升級(jí)依賴
  • 手動(dòng)把依賴填到 Cargo.toml 中
  • cargo build 編譯構(gòu)建代碼
  • cargo run 運(yùn)行代碼
  • cargo test 跑單元測(cè)試
  • cargo publish 發(fā)布到中央倉(cāng)庫(kù)

雖然具體的語(yǔ)法不同,項(xiàng)目結(jié)構(gòu)也有差別,但是整個(gè)工具鏈的流程是類似的。這是現(xiàn)代語(yǔ)言工具鏈的最佳實(shí)踐了。

相比之下,C++ 沒(méi)有依賴管理,沒(méi)有集成的工具鏈,開(kāi)發(fā)體驗(yàn)遠(yuǎn)遠(yuǎn)比不上有 Cargo 的 rust 和有 npm 的 Node.js。

其實(shí)我們學(xué)習(xí) rust 或其他語(yǔ)言,都可以對(duì)比我們熟悉的 JS 來(lái)學(xué),因?yàn)樗麄冎皇鞘褂糜?jì)算機(jī)的不同的抽象,面對(duì)的問(wèn)題差不多,只不過(guò)解法不同,對(duì)比著學(xué)習(xí),效率會(huì)更高。

 

對(duì)比著 Npm 來(lái)學(xué) Cargo,是不是看一遍就會(huì)了~

 

責(zé)任編輯:武曉燕 來(lái)源: 神光的編程秘籍
相關(guān)推薦

2024-05-16 11:45:19

Rust項(xiàng)目代碼

2017-12-26 14:17:24

潤(rùn)乾報(bào)表

2021-08-12 10:36:18

order byMySQL數(shù)據(jù)庫(kù)

2023-01-10 19:47:47

Redis原理多線程

2024-05-20 08:28:10

2021-06-15 07:15:15

Oracle底層explain

2022-01-17 20:59:37

開(kāi)發(fā)group by思路

2021-12-01 07:26:13

IO模型異步

2025-02-13 09:06:27

2019-09-19 08:04:40

網(wǎng)絡(luò)七層模型TCPUDP

2021-10-07 20:12:03

MVCC事務(wù)原理

2015-10-10 11:10:24

重敲代碼拷貝粘貼

2023-09-12 07:31:45

HashMap線程

2024-03-12 08:20:57

零拷貝存儲(chǔ)開(kāi)發(fā)

2024-03-26 07:59:32

IO模型多路復(fù)用

2021-03-11 07:14:01

Epoll原理線程

2020-03-09 11:43:35

RustCargo編程語(yǔ)言

2020-02-09 17:30:54

反轉(zhuǎn)鏈表程序員節(jié)點(diǎn)

2022-02-22 09:16:41

AndroidWindows狀態(tài)欄

2021-11-25 08:16:46

Wi-FiWi-Fi 6路由Wi-Fi 5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩精品一区第一页| 一本久久综合亚洲鲁鲁五月天| 成人性色av| 久久久91麻豆精品国产一区| 日韩精品专区在线影院观看 | 欧美曰成人黄网| 中国一级特黄毛片大片| 欧美激情一区二区| 国产偷人视频免费| 99久久99久久精品免费看蜜桃| 中文字幕剧情在线观看一区| 久久激情综合| 清纯唯美一区二区三区| 国产视频一区欧美| 国产99在线播放| 一区二区自拍| 久久精品国产精品青草色艺| 亚洲一区激情| 日韩精品一区二区三区外面| 欧美bbbbb| 2022中文字幕| 97久久精品人人做人人爽| 日本中文字幕片| 国产欧美精品国产国产专区| 久久久免费视频网站| 亚洲国产高清aⅴ视频| 99视频精品免费| 国产精品盗摄一区二区三区| 瑜伽美女视频| 在线精品国精品国产尤物884a| 日本三级在线视频| 精品久久久久久久人人人人传媒| 成人免费图片免费观看| 在线看欧美日韩| 成人性生交大片免费看中文视频| 国产成人午夜视频网址| 欧美日韩国产亚洲一区| 日本一区免费在线观看| 福利91精品一区二区三区| 北条麻妃av高潮尖叫在线观看| 亚洲欧美日韩人成在线播放| 欧美孕妇孕交xxⅹ孕妇交| 日韩欧美国产综合在线一区二区三区| 成人免费影院| 2018中文字幕一区二区三区| 亚洲色图网站| 日本三级福利片| 国产精品色婷婷| fc2在线中文字幕| 国产午夜精品一区二区三区| 亚洲国产中文在线| 亚洲最大福利网| 热久久一区二区| 国产亚洲天堂网| 亚洲成a人片在线观看中文| 黄色片网站在线| 久久香蕉频线观| 久久久久午夜电影| 久久久天堂国产精品| 亚洲精品美国一| 日韩精品分区| 日本欧美精品在线| 蜜臀精品久久久久久蜜臀| 欧美成人黑人猛交| 欧美浪妇xxxx高跟鞋交| 久久国产精品免费一区二区三区| 国产一区视频在线播放| 久久99日本精品| 如如影视在线观看经典| 亚洲欧洲高清在线| 欧美mv日韩| 777久久久精品一区二区三区| 懂色av影视一区二区三区| 素人一区二区三区| 国偷自产av一区二区三区小尤奈| 久久久久久免费网| av电影免费在线观看| 国产精品xxxxx| av在线不卡电影| 超碰免费在线播放| 国产精品综合不卡av| 成人av电影在线观看| 黄色免费在线网站| 国产精品久久中文| 91在线你懂得| 国产精品探花在线| 91美女片黄在线观看游戏| 成人激情黄色小说| 日本a级在线| 91av视频在线| 成人精品高清在线| 羞羞视频在线观看不卡| 国产精品视频男人的天堂| 91蜜桃网址入口| 在线āv视频| aaa级精品久久久国产片| 国产精品久99| www.久久久久爱免| 亚洲欧洲精品一区| 欧美日韩国产在线播放网站| 九九久久婷婷| 能在线观看的av网站| 日韩激情片免费| 国产精品视频| 日产精品久久久久久久性色| 91av视频在线播放| 99久免费精品视频在线观看| sm国产在线调教视频| 99爱精品视频| 精品露脸国产偷人在视频| 伊人久久噜噜噜躁狠狠躁| 中文字幕免费高| 制服视频三区第一页精品| re久久精品视频| 九色丨porny丨| 久久理论片午夜琪琪电影网| 26uuu国产在线精品一区二区| 亚洲性受xxx喷奶水| 日韩视频在线播放| 精品视频资源站| 伊人情人综合网| 婷婷亚洲一区二区三区| 国产日韩在线精品av| 亚洲丰满少妇videoshd| 精品少妇av| 在线视频资源站| 91福利视频导航| 欧美丝袜丝交足nylons| 亚洲毛片一区| 午夜小视频在线观看| 午夜午夜精品一区二区三区文| 欧美一区二区高清| 美日韩一区二区| 免费h视频在线观看| 天天做天天爱天天高潮| 亚洲久久久久久久久久| 久久99精品久久久久久久久久久久| 菠萝蜜视频在线观看www入口| 亚洲精品9999| 在线播放国产精品| 国产校园另类小说区| 亚洲婷婷伊人| 三级av在线| 欧美在线日韩精品| 亚洲美女av电影| 国产无一区二区| 日本一二区不卡| 免费网站成人| 欧美少妇一区二区三区| 超碰97人人做人人爱少妇| 国产精品黄色在线观看| 999国产精品视频| 超碰在线免费公开| 第九区2中文字幕| 久久久久久69| 欧美日韩综合视频网址| 日韩成人午夜精品| 视频91a欧美| 日本高清好狼色视频| 国产视频一区二区三区四区| 亚洲国产精品字幕| 91蝌蚪porny| 欧美疯狂party性派对| 国产人成网在线播放va免费| 高清无码视频直接看| 久久久久久91香蕉国产| 色综合久久中文综合久久牛| 蜜臀av亚洲一区中文字幕| 亚洲日本一区二区三区在线| 色久视频在线播放| 亚洲成色最大综合在线| 欧美高清性猛交| 欧美羞羞免费网站| 成人国产一区二区三区精品| 欧美美女视频| 91色在线看| 国产女呦网站| 奇米精品在线| 91av视频导航| 日韩视频免费直播| 91麻豆123| 91久久亚洲| 精品中文在线| 18免费在线视频| 人人干人人视频| 久久综合九色欧美狠狠| 欧美日韩福利在线观看| 欧美日韩国产成人在线免费| 91色视频在线| 国产精品久久国产愉拍| 一区二区三区欧洲区| 成年人网站在线| 91大神网址| 成人高清dvd| 国产精品国产精品国产专区蜜臀ah| 日韩中文娱乐网| 欧美日韩一区视频| 中文字幕一区在线观看| 国产乱子轮精品视频| 亚洲午夜一级|