最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法舉例講解

 更新時間:2024年09月01日 11:09:12   作者:qq_373027170  
作為一名剛?cè)胄械拈_發(fā)者,你可能會遇到需要在JavaScript中引用JSON文件的情況,下面這篇文章主要給大家介紹了關(guān)于JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

這個本地json文件中往往保存一些(無需在js腳本中改動,又常需手動改動的一些各種設(shè)定之類的)靜態(tài)數(shù)據(jù)。

第一類:將本地數(shù)據(jù)視為網(wǎng)絡(luò)數(shù)據(jù)

使用fetch,XMLHttpRequest之類進行異步請求。

const jsnd=fetch('data.json')
.then(res=>res.json())
.then(data=>{console.log(data);return data})
.catch(err=>{console.log(err);})

相關(guān)json文件數(shù)據(jù)需嚴格遵循json語法(比如[]內(nèi)的最后不應(yīng)以逗號結(jié)尾——理論上不應(yīng)該但實際寫代碼追加數(shù)據(jù)時還要回頭給前面的數(shù)據(jù)加個逗號真的很煩)不然編輯器會報警(雖然運行時一般并不會有數(shù)據(jù)讀取的問題,目前沒碰到過)。

異步通訊可能有點廢時,還需要有配套的(本地)webserver.

第二類:將本地數(shù)據(jù)以<script src="./data.json"></script>的形式“注入”為全局變量/對象

<!DOCTYPE html>
<html>
<head>
……
<script src="./data.json"></script>
</head>
<body >
……
</body>
</html>

相關(guān)data.json文件(可自行命名)寫法會很不規(guī)范。需要在{}前加個“(全局)變量名=”:

dataJson={
    原json數(shù)據(jù)
}

把這個data.json文件后綴從.json改成.txt之類也能正常運轉(zhuǎn)(相關(guān)的html中的src也相應(yīng)地改后綴為txt,比如data.txt就行)。

也就是說這里注入的其實不是json數(shù)據(jù),而是一段js代碼;只是這段代碼恰好定義了一個名為dataJson的object。

所以在相關(guān)js文件中導(dǎo)入/使用這個全局對象為json數(shù)據(jù)時(為求保險)宜加一個轉(zhuǎn)換過程,如:

const jsnd=JSON.parse(JSON.stringify(dataJson));

const jsnd=JSON.parse(dataJson);
//JSON.stringify()的作用是將 JavaScript 對象轉(zhuǎn)換為 JSON 字符串,而JSON.parse()可以將JSON字符串轉(zhuǎn)為一個對象。

這方法無需webserver,但需要三方文件相互適配。只能用在有html的場合。

第三類:做一個專門放置這些數(shù)據(jù)的js文件,export之,再在需要的文件中import.

如:

//文件名sj.js
const sj1={
……
……
……
}
const sj2={
……
……
……
}
export {sj1,sj2}
import {sj1,sj2} from './sj'

思路其實是方法2改良版。

無需webserver(異步通訊),兩方文件適配。不能再簡了。

……實際測試發(fā)現(xiàn),這個方法的html文件在本地文件系統(tǒng)打開時會觸發(fā)跨域問題:Access to script at 'file:……' from origin 'null' has been blocked by CORS policy:……

最簡單的解決辦法還是配個(本地)服務(wù)器。這就又跟方法1沒太大區(qū)別了。

要想不配這個(本地)服務(wù)器,還是得在方法2上改良:

方法4:

<!DOCTYPE html>
<html>
<head>
……
<script type="text/javascript" src="./data.js"></script>
</head>
<body >
……
</body>
</html>

//type="text/javascript"這一小段可省略。

跟方法2的差別是這里導(dǎo)入的是js文件/js代碼段。里邊的內(nèi)容就是普通的js寫法。比如

const jsnd={

//json數(shù)據(jù)

}
const jsnd2={

//json數(shù)據(jù)

}

上面這兩json變量/對象相當于直接定義在全局(window?)中??梢栽谄渌械膉s文件中使用。而且是直接拿來就用。

無需webserver,無需JSON.parse();Fetch;或是import之類。

非常方便。適合沒有敏感數(shù)據(jù),無需考慮安全問題的情況。

總結(jié)

到此這篇關(guān)于JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法的文章就介紹到這了,更多相關(guān)JS導(dǎo)入本地json文件數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

会昌县| 上思县| 屏山县| 大安市| 友谊县| 平山县| 台江县| 潜江市| 嵊泗县| 汝城县| 沈阳市| 商水县| 北安市| 涪陵区| 屯门区| 江山市| 泾川县| 沽源县| 古交市| 玉山县| 武陟县| 筠连县| 南木林县| 盱眙县| 龙口市| 政和县| 云浮市| 沾化县| 台山市| 都匀市| 逊克县| 永登县| 琼结县| 汕尾市| 澜沧| 班玛县| 蓬溪县| 万载县| 谷城县| 通榆县| 五华县|