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

Vue?中使用?WebWorker的示例代碼

 更新時間:2023年08月14日 14:26:59   作者:volodyan  
這篇文章主要介紹了Vue中使用WebWorker的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

安裝 loader

npm install worker-loader -D

如果直接把worker.js放到public目錄下,則不需要安裝loader

vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
    transpileDependencies: true,
    lintOnSave:false, // 關閉eslint檢查
    parallel: false ,
    chainWebpack: config => {
        config.module
            .rule('worker')
            .test(/\.worker\.js$/)            // 文件名必須要xxx.worker.js
            .use('worker')
            .loader('worker-loader')
    }
})

index.vue

<template>
    <div class="HoneViewPage">
        <div class="HoneViewPageOutbox">
            <el-button @click="useWorker">calculate</el-button>
            <div>
                {{ result }}
            </div>
        </div>
    </div>
</template>
<script>
import Worker from './demo.worker.js'; // this.worker = new Worker(); 方式才需要引入
export default {
    name: 'HoneViewPage',
    data() {
        return {
            result: 0,
            worker: null
        }
    },
    mounted() {
        this.InitFun()
    },
    methods: {
        InitFun() {
            /*
            **1.this.worker = new Worker() 這種方式使用,需要這樣引入 import Worker from './demo.worker.js';
            **使用上面import進來的js,名字為 demo.worker.js,不可配置,路徑相對比較靈活,需要worker-loader  npm install worker-loader -D
            **2.this.worker = new Worker('worker.js', { name : 'myWorker' });讀取public目錄下得js文件,可以配置名字,簡單粗暴,不需要worker-loader
            **worker的名字,主要在谷歌瀏覽器 - 控制臺 - sources 中體現(xiàn)
            */
            //
            this.worker = new Worker();
            this.worker.onmessage = event => {
                this.result = event.data;
                console.log('主線程收到回復,即將關閉worker連接');
                // this.worker.terminate();
            }
        },
        useWorker() {
            const path = [
                [108.566, 40.688],
                [107.53, 40.551],
            ];
            this.worker.postMessage(path)
        }
    },
    beforeDestroy() {
        this?.worker?.terminate()
    },
}
</script>
<style scoped lang="scss">
.HoneViewPage {
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    // background: #dde3e3;
    .HoneViewPageOutbox {
        display: flex;
        flex-flow: column;
        justify-content: center;
        align-items: center;
        width: calc(100% - 30px);
        height: calc(100% - 30px);
        background: #dde3e3;
    }
}
</style>

demo.worker.js

 
import * as THREE from 'three';
onmessage = (e) => {
    console.log(e.data);
    console.log(`THREE`, THREE);
    const posArry = e.data; // e.data用于存儲移動路線的數(shù)組
    const path = new THREE.LineCurve(posArry[0], posArry[1]);
    console.log(`path`, path);
    postMessage(path);
}

 應用場景

瀏覽器的JS線程和GUI渲染線程互斥

在主線程跑吃性能的同步任務,GUI渲染線程會掛起,頁面不能及時響應渲染

在worker跑時,GUI渲染線程不會被掛起,頁面可以正常響應

優(yōu)勢:

避免頁面渲染阻塞。用一個worker處理主線程的任務,兩者處理時間差不多,worker的優(yōu)勢在于處理過程中不會影響頁面的渲染(e.g. 導出時 Element.message組件彈出提示,但是由于JS處理時間過長,導致頁面渲染被阻塞,提示不能及時顯示)

減少任務處理時間。worker可以有多個(多線程),用多個worker處理主線程的任務時,總的任務時長會減少(e.g. 壓縮100張圖片)

 打包時錯誤處理

 ERROR  Failed to compile with 1 error                                                                                                                                                                               16:12:04
 error  in ./src/pages/HoneViewPage/demo.worker.js
Syntax Error: Thread Loader (Worker 0)
Cannot read properties of undefined (reading 'options')
 ERROR  Error: Build failed with errors.
Error: Build failed with errors.
    at D:\test_project\vue_worker-loader\node_modules\@vue\cli-service\lib\commands\build\index.js:207:23
    at D:\test_project\vue_worker-loader\node_modules\webpack\lib\webpack.js:148:8
    at D:\test_project\vue_worker-loader\node_modules\webpack\lib\HookWebpackError.js:68:3
    at Hook.eval [as callAsync] (eval at create (D:\test_project\vue_worker-loader\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (D:\test_project\vue_worker-loader\node_modules\tapable\lib\Hook.js:18:14)
    at Cache.shutdown (D:\test_project\vue_worker-loader\node_modules\webpack\lib\Cache.js:150:23)
    at D:\test_project\vue_worker-loader\node_modules\webpack\lib\Compiler.js:1225:15
    at Hook.eval [as callAsync] (eval at create (D:\test_project\vue_worker-loader\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (D:\test_project\vue_worker-loader\node_modules\tapable\lib\Hook.js:18:14)
    at Compiler.close (D:\test_project\vue_worker-loader\node_modules\webpack\lib\Compiler.js:1218:23)

Syntax Error: Thread Loader(Worker 1)

Cannot read properties of undefined (reading 'options')

框架:@vue/cli@5 + vue@2.7 + ts

vue-cli 使用wokrer-loader 加載web woker時,使用npm run build 有很大機率會打包失敗,報錯如上。

thread-loader 與worker-loader有沖突。

解決:

vue.config.js 配置

parallel: false  

構(gòu)建正式環(huán)境關閉thread-loader

parallel: false  

vue.config.js 

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
    transpileDependencies: true,
    lintOnSave:false, // 關閉eslint檢查
    parallel: false ,
    chainWebpack: config => {
        config.module
            .rule('worker')
            .test(/\.worker\.js$/)            // 文件名必須要xxx.worker.js
            .use('worker')
            .loader('worker-loader')
    }
})

 vue-cli: Syntax Error: Thread Loader:https://blog.csdn.net/qq_35459724/article/details/127080017

配置參考 | Vue CLI (vuejs.org);https://cli.vuejs.org/zh/config/#devserver-proxy

參考鏈接:https://blog.csdn.net/weixin_44240581/article/details/129186915

預覽:https://1t1824d.github.io/vue-worker_loader_preview/#/

到此這篇關于Vue 中使用 WebWorker的文章就介紹到這了,更多相關Vue 使用 WebWorker內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue.js 實現(xiàn)點擊div標簽時改變樣式

    vue.js 實現(xiàn)點擊div標簽時改變樣式

    這篇文章主要介紹了vue.js 實現(xiàn)點擊div標簽時改變樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 深入理解vue中的slot與slot-scope

    深入理解vue中的slot與slot-scope

    這篇文章主要介紹了vue中的slot與slot-scope的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 在Vue中使用highCharts繪制3d餅圖的方法

    在Vue中使用highCharts繪制3d餅圖的方法

    本篇文章主要介紹了在Vue中使用highCharts繪制3d餅圖的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 詳解Vue項目中實現(xiàn)錨點定位

    詳解Vue項目中實現(xiàn)錨點定位

    這篇文章主要介紹了Vue項目中實現(xiàn)錨點定位,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue使用輪詢定時發(fā)送請求代碼

    Vue使用輪詢定時發(fā)送請求代碼

    這篇文章主要介紹了Vue使用輪詢定時發(fā)送請求代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue.js通過組件處理Icon圖標

    Vue.js通過組件處理Icon圖標

    這篇文章介紹了Vue.js通過組件處理Icon圖標的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • 前端預覽pdf文件流詳細步驟

    前端預覽pdf文件流詳細步驟

    公司最近有這么個需求,在線預覽pdf功能,正好有點時間,稍微整理記錄一下,這篇文章主要給大家介紹了關于前端預覽pdf文件流的相關資料,需要的朋友可以參考下
    2023-09-09
  • vue2 v-model/v-text 中使用過濾器的方法示例

    vue2 v-model/v-text 中使用過濾器的方法示例

    這篇文章主要介紹了vue2 v-model/v-text 中使用過濾器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Vuejs仿網(wǎng)易云音樂實現(xiàn)聽歌及搜索功能

    Vuejs仿網(wǎng)易云音樂實現(xiàn)聽歌及搜索功能

    這篇文章主要介紹了Vuejs仿網(wǎng)易云音樂實現(xiàn)聽歌及搜索功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • vue實現(xiàn)直播間點贊飄心效果的示例代碼

    vue實現(xiàn)直播間點贊飄心效果的示例代碼

    這篇文章主要介紹了vue實現(xiàn)直播間點贊飄心效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09

最新評論

陈巴尔虎旗| 古交市| 册亨县| 平原县| 宁陵县| 汾阳市| 云安县| 故城县| 尚志市| 新乡县| 武胜县| 布尔津县| 余江县| 岗巴县| 右玉县| 徐州市| 苍山县| 商南县| 桐庐县| 金华市| 阿拉善右旗| 交城县| 区。| 彰化市| 宽城| 民勤县| 和林格尔县| 新郑市| 凌海市| 冀州市| 喜德县| 平江县| 乐清市| 秀山| 黄平县| 肇东市| 格尔木市| 景洪市| 沐川县| 明水县| 蕉岭县|