Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
ebpack除了可以處理加載頁面資源文件引用之外,還可以加載的資源有數據文件,如 JSON 、CSV、TSV 和 XML格式的文件。類似于 NodeJS, 內置的支持JSON格式的數據,其可以通過 import Data from './data.json' 引入并正常運行。但是要導入 CSV、TSV 和 XML格式的文件,需要使用 對應的csv-loader 和 xml-loader的loader,來處理加載這三類文件。
創(chuàng)建一個工程名為:webpack-datafile,并進行相應內容的初始化。
mkdir webpack-datafile
cd webpack-datafile
npm init -y
npm install webpack webpack-cli --save-dev
工程目錄結構如下:
工程目錄結構
手下在src目錄下添加數據資源文件data.xml,data.csv。
其中data.xml文件的內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<email>
<from>張三</from>
<to>李四</to>
<subjet>會議</subjet>
<body>明天上午8點,會議室開會!</body>
</email>
data.csv的內容
from,to,subject,body
張三,李四,會議,明天上午8點開會
李四,王五,采購,明天采購一臺筆記本
然后在src/index.js中,引入數據文件,并進行數據的讀取操作。
import email from './data.xml'
import emails from './data.csv'
console.log(email)
console.log(emails)
執(zhí)行在本地安裝 數據解析loader:csv-loader 和 xml-loader
npm install csv-loader xml-loader --save-dev
完善webpack的配置文件,使其進行項目構建時可以解析xml、csv格式的文件:
const path=require('path')
module.exports={
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname,'dist')
},
module: {
rules: [
{
test: /\.xml$/i,
use: ['xml-loader']
},
{
test: /\.csv$/i,
use: ['csv-loader']
}
]
}
}
然后執(zhí)行npm run build進行項目的構建。
npm run build
> webpack-datafile@1.0.0 build D:\work\webpack5\webpack-datafile
> webpack
asset bundle.js 753 bytes [emitted] [minimized] (name: main)
runtime modules 663 bytes 3 modules
cacheable modules 399 bytes
./src/index.js 106 bytes [built] [code generated]
./src/data.xml 131 bytes [built] [code generated]
./src/data.csv 162 bytes [built] [code generated]
WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value.
Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/
webpack 5.28.0 compiled with 1 warning in 579 ms
進入構建之后的目錄并打開index.html,查看控制臺輸出的數據內容:
效果
可以看到,控制臺輸出一個對象和一個數組。
通Vue:手把手教你將JSON數據優(yōu)雅寫入文本,并深度解讀Vue引入CDN的實戰(zhàn)技巧
在現代Web開發(fā)領域中,Vue.js以其輕量級、易上手且功能強大的特性贏得了眾多開發(fā)者青睞。作為一款漸進式JavaScript框架,Vue在處理數據綁定、組件化開發(fā)等方面表現卓越,而JSON(JavaScript Object Notation)作為一種輕量級的數據交換格式,其簡潔明了的特性使其成為前后端通信的首選。因此,掌握如何優(yōu)雅地在Vue項目中處理JSON數據至關重要。本文將詳細介紹如何使用Vue將JSON數據優(yōu)雅寫入文本,并深入探討Vue引入CDN(Content Delivery Network)的實戰(zhàn)技巧,以提升應用性能與用戶體驗。
2.1 JSON數據的獲取
javascript
import axios from 'axios';
export default {
data() {
return {
jsonData: null,
};
},
async created() {
try {
const response=await axios.get('https://api.example.com/data');
this.jsonData=response.data;
} catch (error) {
console.error('Error fetching JSON data:', error);
}
},
};
首先,我們需要通過API接口或其他方式獲取JSON數據。以下是一個簡單的HTTP GET請求示例,使用axios庫獲取JSON數據:
2.2 JSON數據的模板渲染
html
<template>
<div>
<ul>
<li v-for="user in jsonData.users" :key="user.id">
ID: {{ user.id }} | Name: {{ user.name }} | Age: {{ user.age }}
</li>
</ul>
</div>
</template>
對應的Vue模板代碼如下:
3.1 使用FileSaver.js實現下載
現在,只需在界面中添加一個按鈕觸發(fā)`exportJson`方法,用戶即可將JSON數據優(yōu)雅地保存為名為"data.json"的文本文件。
然后在Vue組件中使用:
4.1 為什么選擇CDN
CDN能有效減少網絡延遲、提高資源加載速度、減輕服務器壓力,從而提升應用性能和用戶體驗。對于Vue項目,引入CDN可以加速Vue核心庫、第三方依賴庫(如axios、lodash等)以及靜態(tài)資源(如圖片、字體等)的加載。
4.2 Vue核心庫CDN引入
html
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 替換為Vue CDN鏈接 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<!-- 其他meta、link標簽... -->
</head>
<body>
<!-- ... -->
</body>
</html>
在HTML文件中,直接替換本地Vue庫引用為CDN鏈接:
4.3 第三方庫CDN引入
html
<script src="https://cdn.jsdelivr.net/npm/axios@0.21"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17"></script>
同樣地,第三方庫如axios、lodash等也可以通過CDN引入:
4.4 靜態(tài)資源CDN托管
html
<img src="https://example.cdn.com/path/to/image.jpg" alt="Image from CDN">
<link rel="stylesheet" href="https://example.cdn.com/path/to/font.css">
對于圖片、字體等靜態(tài)資源,建議將其上傳至云存儲服務(如阿里云OSS、騰訊云COS等),并獲取對應的CDN加速鏈接。在Vue項目中,直接使用CDN鏈接替代本地路徑:
4.5 備份方案與版本控制
盡管CDN可以顯著提升應用性能,但應考慮網絡波動、CDN服務不穩(wěn)定等情況,提供本地備份或備用CDN鏈接。同時,對CDN資源進行版本控制,確保在更新依賴時不影響線上應用。
通過本文,您已掌握了如何在Vue項目中優(yōu)雅地處理JSON數據,包括獲取、渲染與導出,以及如何巧妙地引入CDN以提升應用性能。這些技巧將助力您打造更高效、更穩(wěn)定的Vue應用程序,為用戶提供卓越的Web體驗。持續(xù)關注本頭條號,了解更多前沿的Web前端開發(fā)知識與實戰(zhàn)技巧。
天給小伙伴們推薦一款強大的Vue可自由拖拽表單設計器組件。
vue-form-making 基于vue.js簡單高效的表單設計器組件,star高達3.3K+。簡單拖拽即可進行表單設計,可生成/導出json及代碼,支持i18n國際化。
功能特性
CDN方式引入
<!-- 引入樣式 -->
<link rel="stylesheet" href="https://unpkg.com/form-making/dist/FormMaking.css">
<!-- 引入組件庫 -->
<script src="https://unpkg.com/form-making/dist/FormMaking.umd.js"></script>
<!-- 需要在設計器中預覽代碼需要引入ace.js庫 -->
<script src="https://unpkg.com/form-making/public/lib/ace/ace.js"></script>
<!-- 使用 -->
<div id="app">
<!-- 需要設置編輯區(qū)域高度 -->
<fm-making-form style="height: 500px;" preview generate-code generate-json>
</fm-making-form>
</div>
NPM安裝
$ npm i form-making -S
引入組件
// 在main.js中完整引入
import FormMaking from 'form-making'
import 'form-making/dist/FormMaking.css'
Vue.use(FormMaking)
// 在組件頁面按需引入
import { GenerateForm, MakingForm } from 'form-making'
import 'form-making/dist/FormMaking.css'
Vue.component(GenerateForm)
Vue.component(MakingForm)
使用插件
<template>
<div>
<fm-generate-form
:data="jsonData"
:remote-option="dynamicData"
ref="generateForm"
preview
generate-code
generate-json
:basic-fields="['input', 'textarea', 'radio', 'checkbox', 'switch']"
:advance-fields="['imgupload', 'editor', 'table']"
>
</fm-generate-form>
<el-button type="primary" @click="handleSubmit">Submit</el-button>
<el-button @click="handleLoadOption">Load Option</el-button>
</div>
</template>
export default {
data () {
return {
jsonData: {"list":[{"type":"radio","icon":"icon-radio-active","options":{"inline":false,"defaultValue":"","showLabel":false,"options":[{"value":"Option 1","label":"Option 1"},{"value":"Option 2","label":"Option 2"},{"value":"Option 3","label":"Option 3"}],"required":false,"width":"","remote":true,"remoteType":"option","remoteOption":"option","remoteOptions":[],"props":{"value":"value","label":"label"},"remoteFunc":"func_1575969479252","customClass":"","labelWidth":100,"isLabelWidth":false,"hidden":false,"dataBind":true,"disabled":false},"name":"單選框組","key":"1575969479252","model":"option","rules":[]}],"config":{"labelWidth":100,"labelPosition":"right","size":"small","customClass":""}},
dynamicData: {
option : [], // 單選框組 option data
}
}
},
methods: {
handleSubmit () {
this.$refs.generateForm.getData().then(data=> {
alert(JSON.stringify(data))
}).catch(e=> {
})
},
handleLoadOption () {
// 模擬數據請求
setTimeout(()=> {
this.dynamicData.option=[
{value: '1111', label: '1111'},
{value: '2222', label: '2222'},
{value: '3333', label: '3333'}
]
}, 500)
}
}
}
語言配置
FormMaking 組件支持中文簡體(zh-CN)和英文(en-US)兩種語言,默認使用中文簡體。
Vue.use(FormMaking, {lang: 'en-US'})
// cdn引入配置
<script>
Vue.config.lang='zh-CN'
new Vue({
el: '#app'
})
</script>
富文本編輯器
如果需要使用富文本編輯器,需要單獨引入 vue2-editor
import VueEditor from "vue2-editor"
Vue.use(VueEditor)
提供各種演示文檔及豐富的示例
頁面布局
數據綁定
ok,就分享到這里。希望對大家有所幫助。如果喜歡,記得多支持下哈。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。