文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Webpack原理与实战之如何使用DevServer提升你的开发效率?

2024-12-02 12:18

关注

Webpack自动编译

关于webpack自动编译可以完全符合以上要求,具体的用法是:启动webpack时,添加一个--watch的cli参数,webpack就会以监视模式启动运行,打包完成后cli不会立即退出,而是等待文件变化再次工作,知道我们手动结束它或出现不可控的异常。

  1. # 我们可以先npm 全局安装browser-sync模块,然后使用这个模块 
  2. $ npm i browser-sync -g 
  3. $ browser-sync dist --watch 
  4.  
  5. #或者使用npx直接使用远端模块 
  6. $ npx browser-sync dist --watch 

我们看到运行终端后的显示:

  1. npx browser-sync dist --watch 
  2. [Browsersync] Access URLs: 
  3.  --------------------------------------- 
  4.        Local: http://localhost:3000 
  5.     External: http://192.168.99.161:3000 
  6.  --------------------------------------- 
  7.           UI: http://localhost:3001 
  8.  UI External: http://localhost:3001 

我们看到这种webpack+browser-sync模式虽然实现了我们的需求,但是方法有很多的弊端:

对此,webpack官方推出了开发工具,能够提供一个开发服务器,并且自动编译和自动刷新浏览器等一系列对开发友好的功能全部集成在一起。推出初衷就是为了提高开发者日常的开发效率,使用这个工具就可以解决前面的问题。

  1. $ npm i webpack-dev-server -D 
  2. $ npx webpack-dev-server 

运行webpack-dev-server命令时,wbepack内部会自动启动http-server服务,为我们生成的静态文件提供server服务,并且为我们生成的文件提供打包服务。其工作流程大概是:

要注意的是,webpack-dev-server为了提升打包效率,并未将文件写入磁盘中,而是将文件暂存到内存中,再通过http-server进行获取文件,减少了不必要的磁盘读写操作。

静态资源访问

webpack-dev-server会默认将构建结果和输出文件全部作为开发服务器的资源文件,只要通过webpack打包能够输出的文件就可以直接被访问使用。

在实际使用webpack时,一般会将copy-webpack-plugin这种插件留在上线前的那次打包使用,而在开发过程中一般不会使用。因为在开发过程中,我们会频繁执行打包任务,假设此目录文件需要拷贝的文件比较多、比较大,如果我们每次构建都需要执行插件的话,那么打包的开销就会比较大,构建速度会下降。

在实际生产环境中能够直接访问的api,回到开发环境后哦,再次访问这些api就会产生跨域请求问题。当然我们可以使用cors,但是必须后端支持。

为了解决这种开发阶段跨域请求问题最好的方法,就是在开发服务器中配置一个后端api的代理服务,把后端接口服务代理到本地的开发服务地址。我们可以添加pathRewrite属性来实现代理路径重写,重写规则就是把路径开头的/api替换为空。这样当我们请求代理接口http://localhost:9000/api/users就会代理请求目标接口http://api.github.com/users。

  1. devServer:{ 
  2.   proxy:{ 
  3.     "/api":{ 
  4.       target:"http://api.github.com"
  5.       pathRewrite:{ 
  6.         "^/api":""//替换掉代理地址中的/api 
  7.       } 
  8.     } 
  9.   }, 
  10.   contentBase:path.join(__dirname,"dist"), 
  11.   compress:true
  12.   port:9000 

参考文章

《webpack原理与实践》

《webpack中文文档》

写在最后

本文主要说明了如何配置DevServer提升我们的本地开发效率,其实就是使用了webpack的代理模式,在请求目标接口时通过本地代理请求,能够避免开发阶段的跨域问题。

 

来源:前端万有引力内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯