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

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

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

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

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

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


這樣導入了.js文件以后,里面的代碼在網頁加載完成后就會運行。

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

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

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

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

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

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

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


npm i cssxpath

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


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

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


npm install -g browserify

安裝完成以后,執行命令:


browserify main.js -o bundle.js

命令運行完成以后,會生成一個bundle.js文件。現在我們就可以把這個文件和HTML代碼放在一起,通過<script>標簽導入了:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Css Selector 轉 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轉XPath</h1>
<div>
<input type="text" class="selector" style="width: 500px">
<button class="translate" x-on:click="translate(selector)">轉換</button>
</div>
<div>
<h4>轉換結果:</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>


運行效果如下圖所示:


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

參考文獻

[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

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-12-15 22:04:11

瀏覽器重復登錄

2021-12-16 19:04:26

瀏覽器SeleniumChrome

2020-05-19 13:55:38

Python加密密碼

2021-10-15 21:08:31

PandasExcel對象

2021-11-12 05:00:43

裝飾器代碼功能

2025-05-28 03:15:00

Scrapy數據sleep

2024-08-27 22:08:13

2022-06-28 09:31:44

LinuxmacOS系統

2023-10-28 12:14:35

爬蟲JavaScriptObject

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2022-03-12 20:38:14

網頁Python測試

2023-07-07 09:04:21

JSON信息微信

2024-11-11 00:38:13

Mypy靜態類型

2021-05-08 19:33:51

移除字符零寬

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2024-10-16 21:47:15

2021-04-12 21:19:01

PythonMakefile項目

2020-12-11 06:30:00

工具分組DataFrame

2021-08-01 15:26:59

協程Asyncio并發數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人久久精品一区二区三区 | 福利视频网站 | 丁香婷婷综合激情五月色 | 91在线综合| 久久久.com| 国产精品乱码一二三区的特点 | 曰批视频在线观看 | 国产成人精品久久二区二区91 | 国产1区2区3区 | 日韩在线播放第一页 | 欧美久久久久久久 | 国产精品久久久久一区二区三区 | 99re视频精品 | 在线啊v| 国产精品日韩一区二区 | 成人在线视频免费播放 | 欧美精品第一区 | 久草视频在线播放 | 伊人网综合在线观看 | 亚洲美女天堂网 | 欧美一区二区三区视频在线 | 久草免费在线 | h片在线看| 国产午夜一级 | 五月婷婷在线播放 | 久久国产精品91 | 亚洲精品乱码久久久久久久久 | 天天天插 | 亚洲视频中文 | 91综合网| 亚洲三级免费看 | 成人三级视频在线观看 | 日韩在线国产 | 午夜精品久久久久久久久久久久 | 欧美日韩在线电影 | 久久久久久高潮国产精品视 | 日本午夜免费福利视频 | 国产日韩欧美二区 | 久久久久久久久99精品 | 伦理二区| 日本小视频网站 |