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

一日一技:如何在瀏覽器中使用 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)站,我們通常會(huì)在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)頁加載完成后就會(huì)運(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]。

但你會(huì)發(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)行完成以后,會(huì)生成一個(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)載自微信公眾號(hào)「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系未聞Code公眾號(hào)。

責(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對(duì)象

2025-05-28 03:15:00

Scrapy數(shù)據(jù)sleep

2024-08-27 22:08:13

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2023-10-28 12:14:35

爬蟲JavaScriptObject

2022-03-12 20:38:14

網(wǎng)頁Python測試

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2023-07-07 09:04:21

JSON信息微信

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-05-08 19:33:51

移除字符零寬

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2020-12-11 06:30:00

工具分組DataFrame

2021-08-01 15:26:59

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

2024-10-16 21:47:15

2021-04-12 21:19:01

PythonMakefile項(xiàng)目
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 精品久 | 亚洲网站在线播放 | 国产精品欧美一区二区 | 日韩在线视频一区二区三区 | 99视频在线播放 | av片免费观看 | 国产一区二区三区四区区 | 久久99久久99 | 欧美成人综合 | 特一级黄色毛片 | 欧美性jizz18性欧美 | 国产精品日韩在线观看一区二区 | 99久久精品免费看国产四区 | 一区二区三区高清不卡 | 天天躁人人躁人人躁狂躁 | 久久国产欧美日韩精品 | 日本精品视频在线 | 一区二区三区福利视频 | 国产精品7777777 | 天天操天天摸天天爽 | 免费国产视频在线观看 | 免费看国产精品视频 | 久久精品免费 | 亚欧洲精品在线视频免费观看 | 自拍视频网站 | 国产精品久久久久久久岛一牛影视 | 欧美专区日韩 | 久久久久久久国产精品 | 欧美激情综合 | 欧美大片一区二区 | 91精品国产91久久久久久最新 | 日韩三| 一级特黄a大片 | 美女视频黄色的 | 国产欧美精品一区二区 | 日韩一区二区视频 | 在线观看成人 | 欧美精品一区三区 | 国产精品欧美一区二区三区不卡 | 国产精品日韩欧美一区二区三区 | 国产小视频在线观看 |