vue+vite项目下如何正确编写webworker

vue+vite下webworker是怎么样实现的,本文主要进行讲解在如今流行的vue3+vite打包工具下,怎样实现一个简易的webworker,因为和webpack打包工具实现的方式有差别,因此写出来供大家参考

什么是webworker?用我自己的理解并且用人话来说,就是可以实现,在网页涉及大量的计算,或者说网页需要进行长时计算以及复杂渲染过程,但是这个过程和网页的交互是并行的,我们通常会希望说,这些复杂的过程不会影响用户去影响网页的使用,然鹅,我们最喜欢的javascript偏偏就是单线程的语言,意味着这些过程只有计算完成之后,才会执行其他的代码,也就是交互。否则,在计算还没有计算完成的时候,页面处于卡si的状态,如果没有加载器,会让用户觉得很奇怪,似乎是网页坏了。这个时候,webworker就诞生了,作用如其名,webworker就是一个个的工人,可以去完成不同的工作而不影响主线的工作,因为人多了嘛~

好的,我们步入正题。
传统的webworker搭建过程很简单,没有什么太大的难点,但是在webpack下是这么书写代码的。

  1. 首先,需要有项目的主入口文件,比如说app.vue,或者自己写一个index.js
  2. 创建woker.js脚本,其实就是写计算过程然后把结果暴露出去
  3. 主页面接收结果即可。

app.js

<template>
    <div>
        hello
        <button @click="aa">aa</button>
    </div>
</template>
<script setup lang="ts" name="hello">
console.log('aaaaaa');
const worker = new Worker('worker.js');
worker.addEventListener('message', e => {
    console.log(e);
    console.log("父线程接收到:", e.data);
    alert('计算完毕')
})
function aa(){
    worker.postMessage('主线程到子线程');
}
</script>

worker.js

self.addEventListener('message', function (e) {
  for(let i = 0; i < 1e10; i++){
      let j = i + 1;
  }
    console.log("子线程接收到:", e.data);
    self.postMessage("子线程到父线程");
}, false);

那这样子,在vue+webpack环境下就算是书写完一个很简单的专用woker模版,如果你发现还没有办法去运行,那大概率就是没有下载loader(这个是worker-loader),然后还需要去webpack配置这个loader进去,主要是在webpack.comfig.js进行配置,至于如何配置loader,相信学过webpack的就知道啦~找到loader配置选项(一个大对象,名字叫loader),写入:

{
 test: /\.worker\.js$/,
    loader: "worker-loader",
    options: {
        inline: true,
        name: "workerName.[hash].js"
    }
},

接下来需要说的是,目前主推的vue3,更多的打包工具用的是vite,这个是推荐的,我相信大部分人使用的也是vite吧,如果不是那就算了哈哈。
在vue+vite下,worker可不是这么写的,会报错如下:
在这里插入图片描述
你猜对了,这个报错通常就是语法错误。
在vite下,worker.js的导入应该这么写(worker.js的内容是不需要改变的):
在app.vue下:

<template>
    <div>
        hello
        <button @click="aa">aa</button>
    </div>
</template>
<script setup lang="ts" name="hello">
import Worker from './worker.js?worker'
console.log('aaaaaa');
const worker = new Worker();
worker.addEventListener('message', e => {
    console.log(e);
    console.log("父线程接收到:", e.data);
    alert('计算完毕')
})
function aa(){
    worker.postMessage('主线程到子线程');
}
</script>

import Worker from ‘./worker.js?worker’ 后面的这个?worker是需要写的,问就是要求语法这么写。

我个人觉得,webworker在web3D渲染有很大的用处,设计高级渲染和大量的几何计算的时候,当然,如果你的页面背景是自己有帧一帧渲染(oh my gad),而且不想用户等待背景渲染完在使用网页的话,你可以使用这个玩意儿。

好的,今天的分享就到这里~由于实习,更新越来越慢(其实是懒~ ),加油,一切顺利!

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Vue.jsVite 和 Next.js 进行项目开发时,可以按照以下流程进行: 1. 确定项目需求:首先,明确项目的需求和目标,确定所需的功能和设计。 2. 创建项目使用命令行工具或者 Vue CLI 创建项目。可以使用以下命令创建一个基于 Vue.jsVite项目: ```bash npm init @vitejs/app my-vue-project --template vue ``` 这将创建一个名为 `my-vue-project` 的目录,并在其中初始化一个基本的 Vue.js + Vite 项目。 3. 配置项目:根据项目需求,配置项目的相关设置。可以在项目根目录下的 `vite.config.js` 文件中进行配置,例如设置代理、自定义构建配置等。 4. 开发页面和组件:根据项目需求,使用 Vue.js 的组件化开发方式创建页面和组件。可以在 `src` 目录下创建相应的 Vue 组件。 5. 路由配置:如果需要使用路由功能,可以选择使用 Vue Router 或者 Next.js 的路由功能进行配置。根据项目需求,在路由配置文件中定义页面的路由规则。 6. 数据管理:如果需要进行数据管理,可以选择使用 Vuex 或者其他状态管理库进行配置和管理应用状态。 7. 样式编写使用 CSS 或者预处理器(如 SCSS、Less)为页面和组件编写样式。可以在组件内部使用 `<style>` 标签或者单独的样式文件进行样式编写。 8. 构建和打包:使用构建工具对项目进行构建和打包。Vite 在开发环境中使用即时编译,而在生产环境中使用 Rollup 打包。 9. 部署项目:根据项目需求,选择合适的部署方式将项目部署到服务器或者云平台上。 以上是一个基本的 Vue.js + Vite + Next.js 项目开发流程,具体的实现和细节可能会根据项目需求而有所不同。在开发过程中,可以参考相关文档和示例代码来更好地理解和使用这些技术栈。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值