自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一日一技:如何在瀏覽器中使用 Npm包?

系統(tǒng) 瀏覽器
我們知道,Python的第三方庫一般可以使用pip來安裝。如果代碼比較簡單,我們甚至可以把第三方庫的代碼復(fù)制下來,放到項(xiàng)目里面導(dǎo)入。

我們知道,Python的第三方庫一般可以使用pip來安裝。如果代碼比較簡單,我們甚至可以把第三方庫的代碼復(fù)制下來,放到項(xiàng)目里面導(dǎo)入。

但由于JavaScript生態(tài)里面,有Node.js這個(gè)東西,這就導(dǎo)致第三方庫有兩種不同的導(dǎo)入方式。如果我們要做一個(gè)網(wǎng)站,我們通常會在HTML中,使用<script>標(biāo)簽引入.js文件,例如:

<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>


這樣導(dǎo)入了.js文件以后,里面的代碼在網(wǎng)頁加載完成后就會運(yùn)行。

但在Node.js生態(tài)里面,第三方包一般需要使用npm安裝,然后在代碼里面通過require導(dǎo)入。最后再用webpack打包編譯成能直接在瀏覽器中運(yùn)行的JavaScript代碼。

如果我找到一個(gè)第三方的包,它只提供了npm版本,沒有提供直接在瀏覽器中導(dǎo)入的版本怎么辦?

舉個(gè)例子,我想把CSS Selector轉(zhuǎn)換成XPath。在Github上面,可以搜索到很多這種第三方包,例如:featurist/css-to-xpath: Convert CSS selectors to XPaths, in JavaScript[1] 或者sergeidyga/cssxpath[2]。

但你會發(fā)現(xiàn),這些包都只提供npm安裝的版本,沒有辦法直接在瀏覽器中通過<script>標(biāo)簽導(dǎo)入。如果我想做一個(gè)如下圖所示的簡單網(wǎng)頁,難道我還要用webpack去編譯?

在瀏覽器能運(yùn)行的JavaScript中,require關(guān)鍵字都是不存在的,如下圖所示。因此,我們甚至沒有辦法把包里面的代碼復(fù)制出來用:

遇到這種問題怎么辦呢?難道我們需要人工一行一行去改寫這個(gè)包里面的代碼讓它能直接在瀏覽器運(yùn)行?還是必須用webpack來打包編譯?其實(shí)我們有一個(gè)方法,可以把npm版本的包轉(zhuǎn)換成瀏覽器能運(yùn)行的包。雖然這個(gè)辦法還是要依賴Node.js和npm,但是非常簡單。你完全不需要知道webpack是什么就可以完成。

以cssxpath為例,我們首先用npm安裝它:


npm i cssxpath

然后,我們寫一個(gè)main.js文件,只需要兩行代碼:


var cssxpath = require('css-to-xpath')
window.cssxpath = cssxpath

接下來,使用npm全局安裝browserify:


npm install -g browserify

安裝完成以后,執(zhí)行命令:


browserify main.js -o bundle.js

命令運(yùn)行完成以后,會生成一個(gè)bundle.js文件。現(xiàn)在我們就可以把這個(gè)文件和HTML代碼放在一起,通過<script>標(biāo)簽導(dǎo)入了:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Css Selector 轉(zhuǎn) XPath</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="bundle.js"></script>
</head>
<body>
<div class="app">
<h1>Css Selector轉(zhuǎn)XPath</h1>
<div>
<input type="text" class="selector" style="width: 500px">
<button class="translate" x-on:click="translate(selector)">轉(zhuǎn)換</button>
</div>
<div>
<h4>轉(zhuǎn)換結(jié)果:</h4>
<span class="result"></span>
</div>
</div>
<script>
$('.translate').on('click', function() {
selector = $('.selector').val()
result = window.cssxpath(selector)
$('.result').text(result)
})

</script>
</body>

</html>


運(yùn)行效果如下圖所示:


在main.js中,我們定義了window.cssxpath = cssxpath,所以,在HTML代碼里面,我們就可以通過window.cssxpath(selector)來使用它了。

參考文獻(xiàn)

[1] featurist/css-to-xpath: Convert CSS selectors to XPaths, in JavaScript: https://github.com/featurist/css-to-xpath

[2] sergeidyga/cssxpath: https://github.com/sergeidyga/cssxpath

本文轉(zhuǎn)載自微信公眾號「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系未聞Code公眾號。

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2021-12-15 22:04:11

瀏覽器重復(fù)登錄

2021-12-16 19:04:26

瀏覽器SeleniumChrome

2020-05-19 13:55:38

Python加密密碼

2021-11-12 05:00:43

裝飾器代碼功能

2021-10-15 21:08:31

PandasExcel對象

2024-08-27 22:08:13

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2024-07-30 08:16:18

Python代碼工具

2022-03-12 20:38:14

網(wǎng)頁Python測試

2024-07-30 08:11:16

2023-07-07 09:04:21

JSON信息微信

2021-05-08 19:33:51

移除字符零寬

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-08-01 15:26:59

協(xié)程Asyncio并發(fā)數(shù)

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2024-10-16 21:47:15

2020-12-11 06:30:00

工具分組DataFrame

2021-04-12 21:19:01

PythonMakefile項(xiàng)目

2022-03-07 09:14:04

Selenium鼠標(biāo)元素
點(diǎn)贊
收藏

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