当前位置: 首页 > news >正文

做网站开发找哪家公司今天特大新闻最新消息

做网站开发找哪家公司,今天特大新闻最新消息,如何分析网站优缺点,做网站建设找哪家好本文:参考文章 一、HMR是什么,为什么出现 1、出现的原因 之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失…

本文:参考文章

一、HMR是什么,为什么出现

1、出现的原因

之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失之前在页面执行过程中的所有交互状态

2、HMR作用

可以将大多数小改动通过热模替换方式更新到页面上,保存一定的交互效果,从而确保连续的、顺畅的开发调试

二、HMR应用

1、Vue启动HMR

(1)搭建vue项目环境

  • npm install vue
  • 在src文件夹下创建main.js文件
import {createApp} from 'vue'
import App from './App.vue'createApp(App).mount('#app')
  • 在src文件夹下创建component文件夹里创建Helloworld.vue文件
<template>1</template>
  • 在src文件夹下创建App.vue文件
<template><div><h1>Hello Vue 3 with HMR!!</h1><p>{{ count }}</p><input><Helloworld></Helloworld></div>
</template><script>
import Helloworld from './component/Helloworld.vue';
export default {data() {return {count:0};},components:{Helloworld},created(){this.handle = setInterval(() => {this.count++}, 1000);}
};
</script>
  • 根目录创建index.html文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"></div>// 引入main.js文件<script src="./dist/main.js" type="module"></script>
</body>
</html>

(2)下载vue-loader、@vue/compiler-sfc、html-webpack-plugin配置webpack.config.js文件
npm i vue-loader,配置loader,并引入VueLoaderPlugin插件
版本号:

  • vue-loader:17.2.2
  • html-webpack-plugin:5.5.3
  • @vue/compiler-sfc:3.3.4
  • webpack:5.88.2
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
const {VueLoaderPlugin} = require('vue-loader')// HMR// import { Configuration } from 'webpack'
/*** @type {Configuration}*/
const config = {mode:'development',entry:'./src/main.js',output:{path:path.resolve(__dirname,'dist'),filename:'[name].js'},module:{rules:[{test:/\.vue?$/,loader:'vue-loader',options:{hotReload:true // 手动可以关闭热更新}}]},plugins:[new HtmlWebpackPlugin({template:'./index.html'}),new CleanWebpackPlugin(),new VueLoaderPlugin()],devtool:'source-map',devServer:{port:8080hot:true // 开启HMR}
}module.exports = config

最后呈现的效果:

开启热更新:修改helloworld组件的内容,不会整个刷新页面,父组件的count值仍是保留
关闭热更新:修改helloworld组件的内容,会刷新整个页面,父组件的count值将会清为0

2、一些零碎的知识点

关于webpack当中的devServer:
devServer在webpack5的版本用hot:true,就可以开启热更新。
devServer启动会根据webpack.config.js配置文件去读取配置(主要是读取output.path配置),先去对文件进行打包编译,在编译之后不会将打包文件输出在dist目录下,而是存储在内存当中,保证了是挂在server的根路径一样的效果,随便去访问。
访问打包后的文件: http://localhost:8080/webpack-dev-server
详细地址
关于vue-loader开启热更新:
vue-loader要搭配对应的单文件解析包,vue2——vue-template-compiler、vue3——@vue/compiler-sfc
正常开启热更新需要保证webpack环境是development模式,保证目标target不是node端
vue-loader详细地址

三、HMR的工作原理

1、webpack-dev-server在热更新中做了什么?

当运行的时候,它会向客户端添加两个文件,这两个文件的目的:
1、websocket文件用于与服务端进行通信
2、客户端获取到需要更新的模块,进行重新执行并更新。

然后它会接着开启两个服务:
1、HTTP服务:用于客户端去请求获取编译完成之后的代码块
2、WebSocket服务:当有模块发生改变,并且编译完成,用于通知客户端去主动请求新的模块,进行热更新

2、更加细节的真实操作

在这里插入图片描述
这里以上面跑起来的vue项目为例:
服务端端:热更新完毕,websocket服务将hash2发送给客户端
在这里插入图片描述
客户端:接受到hash2,同时会根据hash1去请求json数据,来获取到更新的代码块
服务端:对比hash1和hash2,返回发生更改的代码块
在这里插入图片描述

客户端:根据hash1去请求该代码块下更改的模块代码
服务端:对比hash1和hash2,返回发生更改的模块代码
在这里插入图片描述

客户端:根据更新的模块代码,去更新并执行依赖该模块的代码

http://www.hrbkazy.com/news/27143.html

相关文章:

  • 网站定制公司哪家最权威中国十大网站排名
  • 专业做网站建设公司河南省干部任免最新公示
  • 网站seo优化关键词网站推广的营销策划方案
  • 自己做网站怎么优化seo优化文章网站
  • 凡科网做网站好吗怎么去推广自己的产品
  • 营销推广小程序有哪些优化设计电子课本
  • 找别人建个网站多少钱企业培训内容有哪些
  • WordPress指定IP访问长沙seo就选智优营家
  • 个人做电子商务网站 今日头条
  • 建设部网站在哪里报名考试群站优化之链轮模式
  • 什么网站做班服比较好班级优化大师官方免费下载
  • 公司名注册网络优化培训骗局
  • 网站运营专员是干嘛的如何制作一个公司网站
  • 零基础学做网站页微信引流的十个方法
  • 写作网站签约都要上传身份证吗seo快速排名优化公司
  • 岳阳网站建设软文接单平台
  • 网站建设怎么寻找客户百度推广后台登陆首页
  • 网站开发文档百度文库网站友链查询接口
  • 网站怎样做的有吸引力百度网站推广教程
  • flash 做ppt的模板下载网站有哪些数字营销策划
  • 网站如何做好seo优化设计答案大全
  • 松北建设局网站seo入门培训学多久
  • 形容网站页面做的好的词语seo关键词查询排名软件
  • 新泰网站开发百度浏览器打开
  • 湖北网站设计制作价格站长统计app软件下载
  • 网络课程网站建设市场调研分析
  • 网站的ftp上传地址代运营套餐价格表
  • 网站搜索怎么做php谷歌seo优化技巧
  • 太原网站的优化聊城网站seo
  • 网站开发定义名称cps游戏推广平台